{"version":3,"file":"static/js/main.0c2b26ea.js","mappings":"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AEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINgB,IAAK,CACHtxG,IAAK,EACLswG,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,o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,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UAC7H,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UAC7H,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,UAC7H,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,IACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ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A,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,UAC7H,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,EAAE,SAAS,SAAS,SAAS,SAAS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QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,IACvH,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,UAC3G,IAAIA,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACvH,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,Q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IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,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AAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,QAGpBtgM,EAAQwgL,MAAQx7K,OAAOmD,OAAO,CAC5B,EAAK,WAGL,GAAM,OACN,GAAM,WACN,GAAM,WACN,GAAM,eACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,YACN,GAAM,YACN,GAAM,aACN,GAAM,aACN,GAAM,aACN,GAAM,aAEN,GAAM,cACN,GAAM,aAEN,IAAM,MACN,IAAM,MAGN,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cAGR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,KAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,mBAGVnI,EAAQugM,eAAiBv7L,OAAOmD,OAAO,CACrC,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GAEN,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GA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","sources":["../node_modules/@kunukn/react-collapse/src/components/collapse/Collapse.jsx","../node_modules/@wagmi/core/node_modules/eventemitter3/index.js","../node_modules/ambrosus-node-contracts/config/config.js","../node_modules/ambrosus-node-contracts/dist/actions/admin_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/challenge_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/deploy_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/fees_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/multisig_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/onboard_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/payouts_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/upload_actions.js","../node_modules/ambrosus-node-contracts/dist/actions/whitelist_actions.js","../node_modules/ambrosus-node-contracts/dist/constants.js","../node_modules/ambrosus-node-contracts/dist/contract_jsons.js","../node_modules/ambrosus-node-contracts/dist/deployer.js","../node_modules/ambrosus-node-contracts/dist/errors/errors.js","../node_modules/ambrosus-node-contracts/dist/index.js","../node_modules/ambrosus-node-contracts/dist/utils/block_reward_functions.js","../node_modules/ambrosus-node-contracts/dist/utils/multisig_functions.js","../node_modules/ambrosus-node-contracts/dist/utils/web3_tools.js","../node_modules/ambrosus-node-contracts/dist/wrappers/apollo_deposit_store_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/atlas_stake_store_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/block_rewards_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/blockchain_state_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/bundle_store_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/challenge_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/challenges_event_emitter_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/config_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/contract_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/fees_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/genesis_contract_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/head_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/kyc_whitelist_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/managed_contract_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/managed_ownable_contract_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/multiplexer_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/multisig_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/node_addresses_store_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/payouts_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/pool_events_emitter_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/pools_nodes_manager_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/pools_store_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/rewards_event_emitter_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/roles_event_emitter_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/roles_privilages_store_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/roles_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/sheltering_transfers_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/sheltering_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/time_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/transfers_event_emitter_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/uploads_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/validator_proxy_wrapper.js","../node_modules/ambrosus-node-contracts/dist/wrappers/validator_set_wrapper.js","../node_modules/babel-runtime/core-js/get-iterator.js","../node_modules/babel-runtime/core-js/is-iterable.js","../node_modules/babel-runtime/core-js/object/assign.js","../node_modules/babel-runtime/core-js/object/create.js","../node_modules/babel-runtime/core-js/object/define-property.js","../node_modules/babel-runtime/core-js/object/set-prototype-of.js","../node_modules/babel-runtime/core-js/promise.js","../node_modules/babel-runtime/core-js/symbol.js","../node_modules/babel-runtime/core-js/symbol/iterator.js","../node_modules/babel-runtime/helpers/asyncToGenerator.js","../node_modules/babel-runtime/helpers/classCallCheck.js","../node_modules/babel-runtime/helpers/createClass.js","../node_modules/babel-runtime/helpers/defineProperty.js","../node_modules/babel-runtime/helpers/extends.js","../node_modules/babel-runtime/helpers/inherits.js","../node_modules/babel-runtime/helpers/objectWithoutProperties.js","../node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-runtime/helpers/slicedToArray.js","../node_modules/babel-runtime/helpers/typeof.js","../node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","../node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","../node_modules/babel-runtime/regenerator/index.js","../node_modules/bech32/index.js","../node_modules/bignumber.js/bignumber.js","../node_modules/bn.js/lib/bn.js","../node_modules/complex.js/complex.js","../node_modules/core-js/library/fn/get-iterator.js","../node_modules/core-js/library/fn/is-iterable.js","../node_modules/core-js/library/fn/object/assign.js","../node_modules/core-js/library/fn/object/create.js","../node_modules/core-js/library/fn/object/define-property.js","../node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/core-js/library/fn/promise.js","../node_modules/core-js/library/fn/symbol/index.js","../node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/core-js/library/modules/_an-instance.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_classof.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_core.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_enum-keys.js","../node_modules/core-js/library/modules/_export.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_for-of.js","../node_modules/core-js/library/modules/_global.js","../node_modules/core-js/library/modules/_has.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/_invoke.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_is-array-iter.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_iter-call.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/_iter-detect.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_meta.js","../node_modules/core-js/library/modules/_microtask.js","../node_modules/core-js/library/modules/_new-promise-capability.js","../node_modules/core-js/library/modules/_object-assign.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_object-gopd.js","../node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/core-js/library/modules/_object-gopn.js","../node_modules/core-js/library/modules/_object-gops.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_object-pie.js","../node_modules/core-js/library/modules/_perform.js","../node_modules/core-js/library/modules/_promise-resolve.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_redefine-all.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_set-proto.js","../node_modules/core-js/library/modules/_set-species.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_species-constructor.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/_task.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_user-agent.js","../node_modules/core-js/library/modules/_wks-define.js","../node_modules/core-js/library/modules/_wks-ext.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/core-js/library/modules/core.get-iterator-method.js","../node_modules/core-js/library/modules/core.get-iterator.js","../node_modules/core-js/library/modules/core.is-iterable.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/core-js/library/modules/es6.object.create.js","../node_modules/core-js/library/modules/es6.object.define-property.js","../node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/core-js/library/modules/es6.promise.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/es6.symbol.js","../node_modules/core-js/library/modules/es7.promise.finally.js","../node_modules/core-js/library/modules/es7.promise.try.js","../node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/escape-latex/dist/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/inherits/inherits_browser.js","../node_modules/javascript-natural-sort/naturalSort.js","../node_modules/js-sha3/src/sha3.js","../node_modules/minimalistic-assert/index.js","../node_modules/moment/moment.js","../node_modules/path-to-regexp/index.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/seedrandom/index.js","../node_modules/seedrandom/lib/alea.js","../node_modules/seedrandom/lib/tychei.js","../node_modules/seedrandom/lib/xor128.js","../node_modules/seedrandom/lib/xor4096.js","../node_modules/seedrandom/lib/xorshift7.js","../node_modules/seedrandom/lib/xorwow.js","../node_modules/seedrandom/seedrandom.js","../node_modules/tiny-emitter/index.js","../node_modules/typed-function/typed-function.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../../../../../../webpack/universalModuleDefinition","../../../../../../src/chains/index.ts","../../../../../../src/eips/index.ts","../../../../../../src/hardforks/index.ts","../../../../../../src/index.ts","../../../../../../src/baseTransaction.ts","../../../../../../src/eip1559Transaction.ts","../../../../../../src/eip2930Transaction.ts","../../../../../../src/legacyTransaction.ts","../../../../../../src/transactionFactory.ts","../../../../../../src/types.ts","../../../../../../src/util.ts","../../../../../../src/account.ts","../../../../../../src/address.ts","../../../../../../src/asyncEventEmitter.ts","../../../../../../src/bytes.ts","../../../../../../src/constants.ts","../../../../../../src/encoding.ts","../../../../../../src/helpers.ts","../../../../../../src/internal.ts","../../../../../../src/lock.ts","../../../../../../src/provider.ts","../../../../../../src/signature.ts","../../../../../../src/units.ts","../../../../../../src/withdrawal.ts","../../../../../../src.ts/_version.ts","../../../../../../src.ts/abi-coder.ts","../../../../../../src.ts/coders/abstract-coder.ts","../../../../../../src.ts/coders/address.ts","../../../../../../src.ts/coders/anonymous.ts","../../../../../../src.ts/coders/array.ts","../../../../../../src.ts/coders/boolean.ts","../../../../../../src.ts/coders/bytes.ts","../../../../../../src.ts/coders/fixed-bytes.ts","../../../../../../src.ts/coders/null.ts","../../../../../../src.ts/coders/number.ts","../../../../../../src.ts/coders/string.ts","../../../../../../src.ts/coders/tuple.ts","../../../../../../src.ts/fragments.ts","../../../../../../src.ts/index.ts","../../../../../../src.ts/interface.ts","../../../../../../src.ts/browser-base64.ts","../../../../../../src.ts/bignumber.ts","../../../../../../src.ts/fixednumber.ts","../../../../../../src.ts/addresses.ts","../../../../../../src.ts/bignumbers.ts","../../../../../../src.ts/hashes.ts","../../../../../../src.ts/strings.ts","../../../../../../src.ts/ens-normalize/decoder.ts","../../../../../../src.ts/ens-normalize/include.ts","../../../../../../src.ts/ens-normalize/lib.ts","../../../../../../src.ts/id.ts","../../../../../../src.ts/message.ts","../../../../../../src.ts/namehash.ts","../../../../../../src.ts/typed-data.ts","../../../../../../node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js","../../../../../../node_modules/minimalistic-assert/index.js","../../../../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../../../../node_modules/elliptic/lib/elliptic/utils.js","../../../../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../../../../node_modules/inherits/inherits_browser.js","../../../../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../../../../node_modules/elliptic/lib/elliptic/curves.js","../../../../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../../../../node_modules/elliptic/lib/elliptic.js","../../../../../../elliptic.js","../../../../../../src.ts/bytes32.ts","../../../../../../src.ts/idna.ts","../../../../../../src.ts/utf8.ts","../../../../../../src/_shortw_utils.ts","../../../../../../src/abstract/curve.ts","../../../../../../src/abstract/hash-to-curve.ts","../../../../../../src/abstract/modular.ts","../../../../../../src/abstract/utils.ts","../../../../../../src/abstract/weierstrass.ts","../../../../../../src/secp256k1.ts","../../../../../../src/_assert.ts","../../../../../../src/_sha2.ts","../../../../../../src/_u64.ts","../../../../../../src/crypto.ts","../../../../../../src/hmac.ts","../../../../../../src/sha256.ts","../../../../../../src/sha3.ts","../../../../../../src/utils.ts","../../../../../../node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.js","../../../../../../node_modules/asn1.js/lib/asn1.js","../../../../../../node_modules/asn1.js/lib/asn1/api.js","../../../../../../node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../../../node_modules/asn1.js/lib/asn1/base/index.js","../../../../../../node_modules/asn1.js/lib/asn1/base/node.js","../../../../../../node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../../../node_modules/asn1.js/lib/asn1/constants/der.js","../../../../../../node_modules/asn1.js/lib/asn1/constants/index.js","../../../../../../node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../../../node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../../../node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../../../node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../../../node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../../../node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../../../node_modules/assert/assert.js","../../../../../../node_modules/assert/node_modules/inherits/inherits_browser.js","../../../../../../node_modules/assert/node_modules/util/support/isBufferBrowser.js","../../../../../../node_modules/assert/node_modules/util/util.js","../../../../../../node_modules/base-x/src/index.js","../../../../../../node_modules/base64-js/index.js","../../../../../../node_modules/bn.js/lib/bn.js","../../../../../../node_modules/brorand/index.js","../../../../../../node_modules/browserify-aes/aes.js","../../../../../../node_modules/browserify-aes/authCipher.js","../../../../../../node_modules/browserify-aes/browser.js","../../../../../../node_modules/browserify-aes/decrypter.js","../../../../../../node_modules/browserify-aes/encrypter.js","../../../../../../node_modules/browserify-aes/ghash.js","../../../../../../node_modules/browserify-aes/incr32.js","../../../../../../node_modules/browserify-aes/modes/cbc.js","../../../../../../node_modules/browserify-aes/modes/cfb.js","../../../../../../node_modules/browserify-aes/modes/cfb1.js","../../../../../../node_modules/browserify-aes/modes/cfb8.js","../../../../../../node_modules/browserify-aes/modes/ctr.js","../../../../../../node_modules/browserify-aes/modes/ecb.js","../../../../../../node_modules/browserify-aes/modes/index.js","../../../../../../node_modules/browserify-aes/modes/ofb.js","../../../../../../node_modules/browserify-aes/streamCipher.js","../../../../../../node_modules/browserify-cipher/browser.js","../../../../../../node_modules/browserify-des/index.js","../../../../../../node_modules/browserify-des/modes.js","../../../../../../node_modules/browserify-rsa/index.js","../../../../../../node_modules/browserify-sign/algos.js","../../../../../../node_modules/browserify-sign/browser/index.js","../../../../../../node_modules/browserify-sign/browser/sign.js","../../../../../../node_modules/browserify-sign/browser/verify.js","../../../../../../node_modules/browserify-zlib/lib/binding.js","../../../../../../node_modules/browserify-zlib/lib/index.js","../../../../../../node_modules/buffer-xor/index.js","../../../../../../node_modules/buffer/index.js","../../../../../../node_modules/builtin-status-codes/browser.js","../../../../../../node_modules/call-bind/callBound.js","../../../../../../node_modules/call-bind/index.js","../../../../../../node_modules/cids/node_modules/multicodec/src/constants.js","../../../../../../node_modules/cids/node_modules/multicodec/src/index.js","../../../../../../node_modules/cids/node_modules/multicodec/src/int-table.js","../../../../../../node_modules/cids/node_modules/multicodec/src/print.js","../../../../../../node_modules/cids/node_modules/multicodec/src/util.js","../../../../../../node_modules/cids/node_modules/multicodec/src/varint-table.js","../../../../../../node_modules/cids/src/cid-util.js","../../../../../../node_modules/cids/src/index.js","../../../../../../node_modules/cipher-base/index.js","../../../../../../node_modules/class-is/index.js","../../../../../../node_modules/content-hash/src/helpers.js","../../../../../../node_modules/content-hash/src/index.js","../../../../../../node_modules/content-hash/src/profiles.js","../../../../../../node_modules/crc-32/crc32.js","../../../../../../node_modules/create-ecdh/browser.js","../../../../../../node_modules/create-hash/browser.js","../../../../../../node_modules/create-hash/md5.js","../../../../../../node_modules/create-hmac/browser.js","../../../../../../node_modules/create-hmac/legacy.js","../../../../../../node_modules/cross-fetch/dist/browser-ponyfill.js","../../../../../../node_modules/crypto-browserify/index.js","../../../../../../node_modules/decode-uri-component/index.js","../../../../../../node_modules/define-data-property/index.js","../../../../../../node_modules/des.js/lib/des.js","../../../../../../node_modules/des.js/lib/des/cbc.js","../../../../../../node_modules/des.js/lib/des/cipher.js","../../../../../../node_modules/des.js/lib/des/des.js","../../../../../../node_modules/des.js/lib/des/ede.js","../../../../../../node_modules/des.js/lib/des/utils.js","../../../../../../node_modules/diffie-hellman/browser.js","../../../../../../node_modules/diffie-hellman/lib/dh.js","../../../../../../node_modules/diffie-hellman/lib/generatePrime.js","../../../../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../../../../node_modules/es5-ext/global.js","../../../../../../lib/es6-promise/utils.js","../../../../../../lib/es6-promise/asap.js","../../../../../../lib/es6-promise/then.js","../../../../../../lib/es6-promise/promise/resolve.js","../../../../../../lib/es6-promise/-internal.js","../../../../../../lib/es6-promise/enumerator.js","../../../../../../lib/es6-promise/promise.js","../../../../../../lib/es6-promise/promise/all.js","../../../../../../lib/es6-promise/promise/race.js","../../../../../../lib/es6-promise/promise/reject.js","../../../../../../lib/es6-promise.js","../../../../../../lib/es6-promise/polyfill.js","../../../../../../node_modules/eth-ens-namehash/index.js","../../../../../../node_modules/eth-lib/lib/account.js","../../../../../../node_modules/eth-lib/lib/array.js","../../../../../../node_modules/eth-lib/lib/bytes.js","../../../../../../node_modules/eth-lib/lib/hash.js","../../../../../../node_modules/eth-lib/lib/nat.js","../../../../../../node_modules/eth-lib/lib/rlp.js","../../../../../../node_modules/ethereum-bloom-filters/dist/index.js","../../../../../../node_modules/ethereum-bloom-filters/dist/utils.js","../../../../../../node_modules/ethereum-bloom-filters/node_modules/js-sha3/src/sha3.js","../../../../../../node_modules/ethereum-cryptography/keccak.js","../../../../../../node_modules/ethereum-cryptography/secp256k1.js","../../../../../../node_modules/ethereum-cryptography/utils.js","../../../../../../src/externals.ts","../../../../../../src/hash.ts","../../../../../../src/object.ts","../../../../../../src/hash-utils.ts","../../../../../../src/keccak.ts","../../../../../../src/random.ts","../../../../../../node_modules/ethjs-unit/lib/index.js","../../../../../../node_modules/eventemitter3/index.js","../../../../../../node_modules/events/events.js","../../../../../../node_modules/evp_bytestokey/index.js","../../../../../../node_modules/for-each/index.js","../../../../../../node_modules/function-bind/implementation.js","../../../../../../node_modules/function-bind/index.js","../../../../../../node_modules/get-intrinsic/index.js","../../../../../../node_modules/global/window.js","../../../../../../node_modules/gopd/index.js","../../../../../../node_modules/has-property-descriptors/index.js","../../../../../../node_modules/has-proto/index.js","../../../../../../node_modules/has-symbols/index.js","../../../../../../node_modules/has-symbols/shams.js","../../../../../../node_modules/has-tostringtag/shams.js","../../../../../../node_modules/hash-base/index.js","../../../../../../node_modules/hash.js/lib/hash.js","../../../../../../node_modules/hash.js/lib/hash/common.js","../../../../../../node_modules/hash.js/lib/hash/hmac.js","../../../../../../node_modules/hash.js/lib/hash/ripemd.js","../../../../../../node_modules/hash.js/lib/hash/sha.js","../../../../../../node_modules/hash.js/lib/hash/sha/1.js","../../../../../../node_modules/hash.js/lib/hash/sha/224.js","../../../../../../node_modules/hash.js/lib/hash/sha/256.js","../../../../../../node_modules/hash.js/lib/hash/sha/384.js","../../../../../../node_modules/hash.js/lib/hash/sha/512.js","../../../../../../node_modules/hash.js/lib/hash/sha/common.js","../../../../../../node_modules/hash.js/lib/hash/utils.js","../../../../../../node_modules/hasown/index.js","../../../../../../node_modules/https-browserify/index.js","../../../../../../node_modules/idna-uts46-hx/idna-map.js","../../../../../../node_modules/idna-uts46-hx/node_modules/punycode/punycode.js","../../../../../../node_modules/idna-uts46-hx/uts46.js","../../../../../../node_modules/ieee754/index.js","../../../../../../node_modules/is-arguments/index.js","../../../../../../node_modules/is-callable/index.js","../../../../../../node_modules/is-function/index.js","../../../../../../node_modules/is-generator-function/index.js","../../../../../../node_modules/is-hex-prefixed/src/index.js","../../../../../../node_modules/is-typed-array/index.js","../../../../../../node_modules/isarray/index.js","../../../../../../node_modules/js-sha3/src/sha3.js","../../../../../../node_modules/keccak/js.js","../../../../../../node_modules/keccak/lib/api/index.js","../../../../../../node_modules/keccak/lib/api/keccak.js","../../../../../../node_modules/keccak/lib/api/shake.js","../../../../../../node_modules/keccak/lib/keccak-state-unroll.js","../../../../../../node_modules/keccak/lib/keccak.js","../../../../../../node_modules/md5.js/index.js","../../../../../../node_modules/micro-ftch/index.js","../../../../../../node_modules/miller-rabin/lib/mr.js","../../../../../../node_modules/multibase/src/base.js","../../../../../../node_modules/multibase/src/base16.js","../../../../../../node_modules/multibase/src/base32.js","../../../../../../node_modules/multibase/src/base64.js","../../../../../../node_modules/multibase/src/constants.js","../../../../../../node_modules/multibase/src/index.js","../../../../../../node_modules/multicodec/src/constants.js","../../../../../../node_modules/multicodec/src/index.js","../../../../../../node_modules/multicodec/src/int-table.js","../../../../../../node_modules/multicodec/src/print.js","../../../../../../node_modules/multicodec/src/util.js","../../../../../../node_modules/multicodec/src/varint-table.js","../../../../../../node_modules/multihashes/node_modules/multibase/src/base.js","../../../../../../node_modules/multihashes/node_modules/multibase/src/base16.js","../../../../../../node_modules/multihashes/node_modules/multibase/src/base32.js","../../../../../../node_modules/multihashes/node_modules/multibase/src/base64.js","../../../../../../node_modules/multihashes/node_modules/multibase/src/constants.js","../../../../../../node_modules/multihashes/node_modules/multibase/src/index.js","../../../../../../node_modules/multihashes/src/constants.js","../../../../../../node_modules/multihashes/src/index.js","../../../../../../node_modules/number-to-bn/src/index.js","../../../../../../node_modules/object-assign/index.js","../../../../../../node_modules/oboe/dist/oboe-browser.js","../../../../../../node_modules/pako/lib/utils/common.js","../../../../../../node_modules/pako/lib/zlib/adler32.js","../../../../../../node_modules/pako/lib/zlib/constants.js","../../../../../../node_modules/pako/lib/zlib/crc32.js","../../../../../../node_modules/pako/lib/zlib/deflate.js","../../../../../../node_modules/pako/lib/zlib/inffast.js","../../../../../../node_modules/pako/lib/zlib/inflate.js","../../../../../../node_modules/pako/lib/zlib/inftrees.js","../../../../../../node_modules/pako/lib/zlib/messages.js","../../../../../../node_modules/pako/lib/zlib/trees.js","../../../../../../node_modules/pako/lib/zlib/zstream.js","../../../../../../node_modules/parse-asn1/asn1.js","../../../../../../node_modules/parse-asn1/certificate.js","../../../../../../node_modules/parse-asn1/fixProc.js","../../../../../../node_modules/parse-asn1/index.js","../../../../../../node_modules/parse-headers/parse-headers.js","../../../../../../node_modules/pbkdf2/browser.js","../../../../../../node_modules/pbkdf2/lib/async.js","../../../../../../node_modules/pbkdf2/lib/default-encoding.js","../../../../../../node_modules/pbkdf2/lib/precondition.js","../../../../../../node_modules/pbkdf2/lib/sync-browser.js","../../../../../../node_modules/pbkdf2/lib/to-buffer.js","../../../../../../node_modules/process/browser.js","../../../../../../node_modules/public-encrypt/browser.js","../../../../../../node_modules/public-encrypt/mgf.js","../../../../../../node_modules/public-encrypt/privateDecrypt.js","../../../../../../node_modules/public-encrypt/publicEncrypt.js","../../../../../../node_modules/public-encrypt/withPublic.js","../../../../../../node_modules/public-encrypt/xor.js","../../../../../../node_modules/query-string/index.js","../../../../../../node_modules/randombytes/browser.js","../../../../../../node_modules/randomfill/browser.js","../../../../../../node_modules/readable-stream/errors-browser.js","../../../../../../node_modules/readable-stream/lib/_stream_duplex.js","../../../../../../node_modules/readable-stream/lib/_stream_passthrough.js","../../../../../../node_modules/readable-stream/lib/_stream_readable.js","../../../../../../node_modules/readable-stream/lib/_stream_transform.js","../../../../../../node_modules/readable-stream/lib/_stream_writable.js","../../../../../../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../../../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../../../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../../../../node_modules/readable-stream/lib/internal/streams/from-browser.js","../../../../../../node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../../../../node_modules/readable-stream/lib/internal/streams/state.js","../../../../../../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../../../node_modules/readable-stream/readable-browser.js","../../../../../../node_modules/ripemd160/index.js","../../../../../../node_modules/safe-buffer/index.js","../../../../../../node_modules/safer-buffer/safer.js","../../../../../../node_modules/scrypt-js/scrypt.js","../../../../../../node_modules/secp256k1/elliptic.js","../../../../../../node_modules/secp256k1/lib/elliptic.js","../../../../../../node_modules/secp256k1/lib/index.js","../../../../../../node_modules/set-function-length/index.js","../../../../../../node_modules/sha.js/hash.js","../../../../../../node_modules/sha.js/index.js","../../../../../../node_modules/sha.js/sha.js","../../../../../../node_modules/sha.js/sha1.js","../../../../../../node_modules/sha.js/sha224.js","../../../../../../node_modules/sha.js/sha256.js","../../../../../../node_modules/sha.js/sha384.js","../../../../../../node_modules/sha.js/sha512.js","../../../../../../node_modules/stream-browserify/index.js","../../../../../../node_modules/stream-http/index.js","../../../../../../node_modules/stream-http/lib/capability.js","../../../../../../node_modules/stream-http/lib/request.js","../../../../../../node_modules/stream-http/lib/response.js","../../../../../../node_modules/strict-uri-encode/index.js","../../../../../../node_modules/string_decoder/lib/string_decoder.js","../../../../../../node_modules/strip-hex-prefix/src/index.js","../../../../../../node_modules/swarm-js/lib/api-browser.js","../../../../../../node_modules/swarm-js/lib/pick.js","../../../../../../node_modules/swarm-js/lib/swarm-hash.js","../../../../../../node_modules/swarm-js/lib/swarm.js","../../../../../../node_modules/swarm-js/node_modules/eth-lib/lib/array.js","../../../../../../node_modules/swarm-js/node_modules/eth-lib/lib/bytes.js","../../../../../../node_modules/swarm-js/node_modules/eth-lib/lib/hash.js","../../../../../../node_modules/url-set-query/index.js","../../../../../../node_modules/url/node_modules/punycode/punycode.js","../../../../../../node_modules/url/node_modules/querystring/decode.js","../../../../../../node_modules/url/node_modules/querystring/encode.js","../../../../../../node_modules/url/node_modules/querystring/index.js","../../../../../../node_modules/url/url.js","../../../../../../node_modules/url/util.js","../../../../../../node_modules/utf8/utf8.js","../../../../../../node_modules/util-deprecate/browser.js","../../../../../../node_modules/util/support/isBufferBrowser.js","../../../../../../node_modules/util/support/types.js","../../../../../../node_modules/util/util.js","../../../../../../node_modules/uuid/dist/commonjs-browser/index.js","../../../../../../node_modules/uuid/dist/commonjs-browser/md5.js","../../../../../../node_modules/uuid/dist/commonjs-browser/native.js","../../../../../../node_modules/uuid/dist/commonjs-browser/nil.js","../../../../../../node_modules/uuid/dist/commonjs-browser/parse.js","../../../../../../node_modules/uuid/dist/commonjs-browser/regex.js","../../../../../../node_modules/uuid/dist/commonjs-browser/rng.js","../../../../../../node_modules/uuid/dist/commonjs-browser/sha1.js","../../../../../../node_modules/uuid/dist/commonjs-browser/stringify.js","../../../../../../node_modules/uuid/dist/commonjs-browser/v1.js","../../../../../../node_modules/uuid/dist/commonjs-browser/v3.js","../../../../../../node_modules/uuid/dist/commonjs-browser/v35.js","../../../../../../node_modules/uuid/dist/commonjs-browser/v4.js","../../../../../../node_modules/uuid/dist/commonjs-browser/v5.js","../../../../../../node_modules/uuid/dist/commonjs-browser/validate.js","../../../../../../node_modules/uuid/dist/commonjs-browser/version.js","../../../../../../node_modules/varint/decode.js","../../../../../../node_modules/varint/encode.js","../../../../../../node_modules/varint/index.js","../../../../../../node_modules/varint/length.js","../../../../../../node_modules/websocket/lib/browser.js","../../../../../../node_modules/websocket/lib/version.js","../../../../../../node_modules/which-typed-array/index.js","../../../../../../node_modules/xhr-request/index.js","../../../../../../node_modules/xhr-request/lib/ensure-header.js","../../../../../../node_modules/xhr-request/lib/normalize-response.js","../../../../../../node_modules/xhr-request/lib/request-browser.js","../../../../../../node_modules/xhr/index.js","../../../../../../node_modules/xtend/immutable.js","../../../../../../packages/web3-bzz/lib/index.js","../../../../../../packages/web3-core-helpers/lib/errors.js","../../../../../../packages/web3-core-helpers/lib/formatters.js","../../../../../../packages/web3-core-helpers/lib/index.js","../../../../../../packages/web3-core-method/lib/index.js","../../../../../../packages/web3-core-promievent/lib/index.js","../../../../../../packages/web3-core-requestmanager/lib/batch.js","../../../../../../packages/web3-core-requestmanager/lib/givenProvider.js","../../../../../../packages/web3-core-requestmanager/lib/index.js","../../../../../../packages/web3-core-requestmanager/lib/jsonrpc.js","../../../../../../packages/web3-core-subscriptions/lib/index.js","../../../../../../packages/web3-core-subscriptions/lib/subscription.js","../../../../../../packages/web3-core/lib/extend.js","../../../../../../packages/web3-core/lib/index.js","../../../../../../packages/web3-eth-abi/lib/index.js","../../../../../../packages/web3-eth-accounts/lib/index.js","../../../../../../packages/web3-eth-contract/lib/index.js","../../../../../../packages/web3-eth-ens/lib/ENS.js","../../../../../../packages/web3-eth-ens/lib/config.js","../../../../../../packages/web3-eth-ens/lib/contracts/Registry.js","../../../../../../packages/web3-eth-ens/lib/index.js","../../../../../../packages/web3-eth-ens/lib/lib/ResolverMethodHandler.js","../../../../../../packages/web3-eth-ens/lib/lib/contentHash.js","../../../../../../packages/web3-eth-ens/lib/resources/ABI/Registry.js","../../../../../../packages/web3-eth-ens/lib/resources/ABI/Resolver.js","../../../../../../packages/web3-eth-iban/lib/index.js","../../../../../../packages/web3-eth-personal/lib/index.js","../../../../../../packages/web3-eth/lib/getNetworkType.js","../../../../../../packages/web3-eth/lib/index.js","../../../../../../packages/web3-net/lib/index.js","../../../../../../packages/web3-providers-http/lib/index.js","../../../../../../packages/web3-providers-ipc/lib/index.js","../../../../../../packages/web3-providers-ws/lib/helpers.js","../../../../../../packages/web3-providers-ws/lib/index.js","../../../../../../packages/web3-shh/lib/index.js","../../../../../../packages/web3-utils/lib/index.js","../../../../../../packages/web3-utils/lib/soliditySha3.js","../../../../../../packages/web3-utils/lib/utils.js","../../../../../../packages/web3/lib/index.js","../../../../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../../../../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../../../../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../../../../node_modules/@babel/runtime/helpers/construct.js","../../../../../../node_modules/@babel/runtime/helpers/createClass.js","../../../../../../node_modules/@babel/runtime/helpers/defineProperty.js","../../../../../../node_modules/@babel/runtime/helpers/get.js","../../../../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../../../../node_modules/@babel/runtime/helpers/inherits.js","../../../../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../../../../../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../../../../../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../../../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../../../../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../../../../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../../../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../../../../../node_modules/@babel/runtime/helpers/superPropBase.js","../../../../../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../../../../node_modules/@babel/runtime/helpers/toPrimitive.js","../../../../../../node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../../../../node_modules/@babel/runtime/helpers/typeof.js","../../../../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../../../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../../../../../node_modules/@babel/runtime/regenerator/index.js","../../../../../../node_modules/available-typed-arrays/index.js","../../../../../../webpack/bootstrap","../../../../../../webpack/runtime/amd options","../../../../../../webpack/runtime/global","../../../../../../webpack/runtime/node module decorator","../../../../../../webpack/startup","../node_modules/abitype/src/regex.ts","../node_modules/viem/accounts/utils/parseAccount.ts","../node_modules/abitype/src/human-readable/runtime/signatures.ts","../node_modules/abitype/src/errors.ts","../node_modules/abitype/src/human-readable/errors/abiItem.ts","../node_modules/abitype/src/human-readable/errors/abiParameter.ts","../node_modules/abitype/src/human-readable/errors/signature.ts","../node_modules/abitype/src/human-readable/errors/struct.ts","../node_modules/abitype/src/human-readable/errors/splitParameters.ts","../node_modules/abitype/src/human-readable/runtime/cache.ts","../node_modules/abitype/src/human-readable/runtime/utils.ts","../node_modules/abitype/src/human-readable/runtime/structs.ts","../node_modules/abitype/src/human-readable/parseAbi.ts","../node_modules/viem/constants/contract.ts","../node_modules/viem/constants/contracts.ts","../node_modules/viem/utils/abi/encodeDeployData.ts","../node_modules/viem/errors/node.ts","../node_modules/viem/utils/errors/getCallError.ts","../node_modules/viem/utils/errors/getNodeError.ts","../node_modules/viem/utils/formatters/extract.ts","../node_modules/viem/utils/formatters/transactionRequest.ts","../node_modules/viem/utils/stateOverride.ts","../node_modules/viem/constants/number.ts","../node_modules/viem/actions/public/call.ts","../node_modules/viem/utils/transaction/assertRequest.ts","../node_modules/viem/constants/abis.ts","../node_modules/viem/constants/solidity.ts","../node_modules/viem/constants/unit.ts","../node_modules/viem/errors/abi.ts","../node_modules/viem/errors/address.ts","../node_modules/viem/errors/version.ts","../node_modules/viem/errors/base.ts","../node_modules/viem/errors/chain.ts","../node_modules/viem/utils/abi/formatAbiItemWithArgs.ts","../node_modules/viem/errors/contract.ts","../node_modules/viem/errors/data.ts","../node_modules/viem/errors/encoding.ts","../node_modules/viem/errors/request.ts","../node_modules/viem/errors/stateOverride.ts","../node_modules/viem/errors/transaction.ts","../node_modules/viem/errors/utils.ts","../node_modules/viem/errors/cursor.ts","../node_modules/viem/utils/cursor.ts","../node_modules/viem/utils/encoding/fromBytes.ts","../node_modules/viem/utils/abi/decodeAbiParameters.ts","../node_modules/viem/utils/abi/decodeErrorResult.ts","../node_modules/viem/utils/abi/decodeFunctionResult.ts","../node_modules/viem/utils/abi/encodeAbiParameters.ts","../node_modules/viem/utils/abi/prepareEncodeFunctionData.ts","../node_modules/viem/utils/abi/encodeFunctionData.ts","../node_modules/viem/utils/abi/formatAbiItem.ts","../node_modules/viem/utils/hash/toEventSelector.ts","../node_modules/viem/utils/abi/getAbiItem.ts","../node_modules/viem/utils/address/getAddress.ts","../node_modules/viem/utils/address/isAddress.ts","../node_modules/viem/utils/chain/getChainContractAddress.ts","../node_modules/viem/utils/data/concat.ts","../node_modules/viem/utils/data/isHex.ts","../node_modules/viem/utils/data/pad.ts","../node_modules/viem/utils/data/size.ts","../node_modules/viem/utils/data/slice.ts","../node_modules/viem/utils/data/trim.ts","../node_modules/viem/utils/encoding/fromHex.ts","../node_modules/viem/utils/encoding/toBytes.ts","../node_modules/viem/utils/encoding/toHex.ts","../node_modules/@noble/hashes/src/_assert.ts","../node_modules/@noble/hashes/src/_u64.ts","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@noble/hashes/src/sha3.ts","../node_modules/viem/utils/hash/keccak256.ts","../node_modules/viem/utils/hash/toFunctionSelector.ts","../node_modules/viem/utils/hash/hashSignature.ts","../node_modules/abitype/src/human-readable/formatAbiParameter.ts","../node_modules/abitype/src/human-readable/formatAbiParameters.ts","../node_modules/viem/utils/hash/toSignature.ts","../node_modules/viem/utils/hash/normalizeSignature.ts","../node_modules/abitype/src/human-readable/formatAbiItem.ts","../node_modules/viem/utils/hash/toSignatureHash.ts","../node_modules/viem/utils/lru.ts","../node_modules/viem/utils/promise/createBatchScheduler.ts","../node_modules/viem/utils/stringify.ts","../node_modules/viem/utils/unit/formatEther.ts","../node_modules/viem/utils/unit/formatGwei.ts","../node_modules/viem/utils/unit/formatUnits.ts","../webpack/bootstrap","../webpack/runtime/amd define","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","reportWebVitals.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/mobx/src/errors.ts","../node_modules/mobx/src/utils/global.ts","../node_modules/mobx/src/utils/utils.ts","../node_modules/mobx/src/api/decorators.ts","../node_modules/mobx/src/types/overrideannotation.ts","../node_modules/mobx/src/core/atom.ts","../node_modules/mobx/src/api/become-observed.ts","../node_modules/mobx/src/utils/comparer.ts","../node_modules/mobx/src/types/modifiers.ts","../node_modules/mobx/src/types/actionannotation.ts","../node_modules/mobx/src/types/flowannotation.ts","../node_modules/mobx/src/types/computedannotation.ts","../node_modules/mobx/src/types/observableannotation.ts","../node_modules/mobx/src/types/autoannotation.ts","../node_modules/mobx/src/api/observable.ts","../node_modules/mobx/src/types/dynamicobject.ts","../node_modules/mobx/src/api/computed.ts","../node_modules/mobx/src/core/action.ts","../node_modules/mobx/src/types/observablevalue.ts","../node_modules/mobx/src/core/computedvalue.ts","../node_modules/mobx/src/core/observable.ts","../node_modules/mobx/src/core/derivation.ts","../node_modules/mobx/src/core/globalstate.ts","../node_modules/mobx/src/core/reaction.ts","../node_modules/mobx/src/api/action.ts","../node_modules/mobx/src/api/autorun.ts","../node_modules/mobx/src/api/configure.ts","../node_modules/mobx/src/api/extendobservable.ts","../node_modules/mobx/src/api/extras.ts","../node_modules/mobx/src/api/flow.ts","../node_modules/mobx/src/api/isobservable.ts","../node_modules/mobx/src/api/tojs.ts","../node_modules/mobx/src/api/object-api.ts","../node_modules/mobx/src/api/transaction.ts","../node_modules/mobx/src/types/intercept-utils.ts","../node_modules/mobx/src/types/listen-utils.ts","../node_modules/mobx/src/api/makeObservable.ts","../node_modules/mobx/src/types/observablearray.ts","../node_modules/mobx/src/core/spy.ts","../node_modules/mobx/src/types/observablemap.ts","../node_modules/mobx/src/types/observableset.ts","../node_modules/mobx/src/types/observableobject.ts","../node_modules/mobx/src/types/legacyobservablearray.ts","../node_modules/mobx/src/types/type-utils.ts","../node_modules/mobx/src/utils/eq.ts","../node_modules/mobx/src/utils/iterable.ts","../node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","../node_modules/mobx/src/mobx.ts","../node_modules/mobx-react-lite/src/utils/observerBatching.ts","../node_modules/mobx-react-lite/src/utils/printDebugValue.ts","../node_modules/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/utils/observerFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/staticRendering.ts","../node_modules/mobx-react-lite/src/useObserver.ts","../node_modules/mobx-react-lite/src/observer.ts","../node_modules/mobx-react-lite/src/index.ts","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/constant.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/core/eventManager.ts","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/components/Icons.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/core/toast.tsx","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/_version.ts","../node_modules/@ethersproject/abstract-signer/src.ts/index.ts","../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/hash/src.ts/_version.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/id.ts","../node_modules/@ethersproject/hash/src.ts/typed-data.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../node_modules/@ethersproject/base64/src.ts/browser-base64.ts","../node_modules/@ethersproject/web/src.ts/browser-geturl.ts","../node_modules/@ethersproject/web/src.ts/index.ts","../node_modules/@ethersproject/web/src.ts/_version.ts","../node_modules/@ethersproject/abstract-provider/src.ts/index.ts","../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts","../node_modules/@ethersproject/basex/src.ts/index.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts","../node_modules/@ethersproject/hash/src.ts/namehash.ts","../node_modules/@ethersproject/networks/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/index.ts","../node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts","../node_modules/@ethersproject/sha2/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/addresses.ts","../node_modules/@ethersproject/providers/src.ts/formatter.ts","../node_modules/@ethersproject/providers/src.ts/base-provider.ts","../node_modules/@ethersproject/constants/src.ts/hashes.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/web3-provider.ts","../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts","../node_modules/@ethersproject/units/src.ts/index.ts","../node_modules/@ethersproject/units/src.ts/_version.ts","config/index.js","pages/NotFound.js","../node_modules/mathjs/lib/esm/utils/is.js","../node_modules/mathjs/lib/esm/utils/object.js","../node_modules/mathjs/lib/esm/utils/factory.js","../node_modules/mathjs/lib/esm/utils/number.js","../node_modules/mathjs/lib/esm/utils/bignumber/formatter.js","../node_modules/mathjs/lib/esm/utils/string.js","../node_modules/mathjs/lib/esm/error/DimensionError.js","../node_modules/mathjs/lib/esm/error/IndexError.js","../node_modules/mathjs/lib/esm/utils/array.js","../node_modules/mathjs/lib/esm/error/ArgumentsError.js","../node_modules/mathjs/lib/esm/core/function/import.js","../node_modules/mathjs/lib/esm/core/config.js","../node_modules/mathjs/lib/esm/core/function/config.js","../node_modules/mathjs/lib/esm/utils/customs.js","../node_modules/mathjs/lib/esm/utils/map.js","../node_modules/mathjs/lib/esm/core/function/typed.js","../node_modules/mathjs/lib/esm/type/resultset/ResultSet.js","../node_modules/decimal.js/decimal.mjs","../node_modules/mathjs/lib/esm/type/bignumber/BigNumber.js","../node_modules/mathjs/lib/esm/type/complex/Complex.js","../node_modules/fraction.js/fraction.js","../node_modules/mathjs/lib/esm/type/fraction/Fraction.js","../node_modules/mathjs/lib/esm/type/matrix/Range.js","../node_modules/mathjs/lib/esm/type/matrix/Matrix.js","../node_modules/mathjs/lib/esm/type/matrix/DenseMatrix.js","../node_modules/mathjs/lib/esm/function/utils/clone.js","../node_modules/mathjs/lib/esm/utils/collection.js","../node_modules/mathjs/lib/esm/function/utils/isInteger.js","../node_modules/mathjs/lib/esm/plain/number/utils.js","../node_modules/mathjs/lib/esm/function/utils/isNegative.js","../node_modules/mathjs/lib/esm/function/utils/isNumeric.js","../node_modules/mathjs/lib/esm/function/utils/hasNumericValue.js","../node_modules/mathjs/lib/esm/function/utils/isPositive.js","../node_modules/mathjs/lib/esm/function/utils/isZero.js","../node_modules/mathjs/lib/esm/function/utils/isNaN.js","../node_modules/mathjs/lib/esm/function/utils/typeOf.js","../node_modules/mathjs/lib/esm/utils/bignumber/nearlyEqual.js","../node_modules/mathjs/lib/esm/function/relational/equalScalar.js","../node_modules/mathjs/lib/esm/utils/complex.js","../node_modules/mathjs/lib/esm/type/matrix/SparseMatrix.js","../node_modules/mathjs/lib/esm/type/number.js","../node_modules/mathjs/lib/esm/type/string.js","../node_modules/mathjs/lib/esm/type/boolean.js","../node_modules/mathjs/lib/esm/type/bignumber/function/bignumber.js","../node_modules/mathjs/lib/esm/type/complex/function/complex.js","../node_modules/mathjs/lib/esm/type/fraction/function/fraction.js","../node_modules/mathjs/lib/esm/type/matrix/function/matrix.js","../node_modules/mathjs/lib/esm/function/matrix/matrixFromFunction.js","../node_modules/mathjs/lib/esm/function/matrix/matrixFromRows.js","../node_modules/mathjs/lib/esm/function/matrix/matrixFromColumns.js","../node_modules/mathjs/lib/esm/type/unit/function/splitUnit.js","../node_modules/mathjs/lib/esm/plain/number/arithmetic.js","../node_modules/mathjs/lib/esm/function/arithmetic/unaryMinus.js","../node_modules/mathjs/lib/esm/function/arithmetic/unaryPlus.js","../node_modules/mathjs/lib/esm/function/arithmetic/abs.js","../node_modules/mathjs/lib/esm/function/matrix/apply.js","../node_modules/mathjs/lib/esm/function/arithmetic/addScalar.js","../node_modules/mathjs/lib/esm/function/arithmetic/cbrt.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm11.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm14.js","../node_modules/mathjs/lib/esm/function/arithmetic/ceil.js","../node_modules/mathjs/lib/esm/function/arithmetic/cube.js","../node_modules/mathjs/lib/esm/function/arithmetic/exp.js","../node_modules/mathjs/lib/esm/function/arithmetic/expm1.js","../node_modules/mathjs/lib/esm/function/arithmetic/fix.js","../node_modules/mathjs/lib/esm/function/arithmetic/floor.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm01.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm04.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm10.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm13.js","../node_modules/mathjs/lib/esm/function/arithmetic/gcd.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm02.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm06.js","../node_modules/mathjs/lib/esm/function/arithmetic/lcm.js","../node_modules/mathjs/lib/esm/function/arithmetic/log10.js","../node_modules/mathjs/lib/esm/function/arithmetic/log2.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm03.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm05.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm12.js","../node_modules/mathjs/lib/esm/function/arithmetic/mod.js","../node_modules/mathjs/lib/esm/function/arithmetic/multiplyScalar.js","../node_modules/mathjs/lib/esm/function/arithmetic/multiply.js","../node_modules/mathjs/lib/esm/function/arithmetic/nthRoot.js","../node_modules/mathjs/lib/esm/function/arithmetic/sign.js","../node_modules/mathjs/lib/esm/function/arithmetic/sqrt.js","../node_modules/mathjs/lib/esm/function/arithmetic/square.js","../node_modules/mathjs/lib/esm/function/arithmetic/subtract.js","../node_modules/mathjs/lib/esm/function/arithmetic/xgcd.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm09.js","../node_modules/mathjs/lib/esm/function/arithmetic/dotMultiply.js","../node_modules/mathjs/lib/esm/utils/bignumber/bitwise.js","../node_modules/mathjs/lib/esm/plain/number/bitwise.js","../node_modules/mathjs/lib/esm/function/bitwise/bitAnd.js","../node_modules/mathjs/lib/esm/function/bitwise/bitNot.js","../node_modules/mathjs/lib/esm/function/bitwise/bitOr.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm07.js","../node_modules/mathjs/lib/esm/function/bitwise/bitXor.js","../node_modules/mathjs/lib/esm/function/complex/arg.js","../node_modules/mathjs/lib/esm/function/complex/conj.js","../node_modules/mathjs/lib/esm/function/complex/im.js","../node_modules/mathjs/lib/esm/function/complex/re.js","../node_modules/mathjs/lib/esm/plain/number/logical.js","../node_modules/mathjs/lib/esm/function/logical/not.js","../node_modules/mathjs/lib/esm/function/logical/or.js","../node_modules/mathjs/lib/esm/function/logical/xor.js","../node_modules/mathjs/lib/esm/function/matrix/concat.js","../node_modules/mathjs/lib/esm/function/matrix/column.js","../node_modules/mathjs/lib/esm/function/matrix/count.js","../node_modules/mathjs/lib/esm/function/matrix/cross.js","../node_modules/mathjs/lib/esm/function/matrix/diag.js","../node_modules/mathjs/lib/esm/utils/lruQueue.js","../node_modules/mathjs/lib/esm/utils/function.js","../node_modules/mathjs/lib/esm/function/matrix/filter.js","../node_modules/mathjs/lib/esm/function/matrix/flatten.js","../node_modules/mathjs/lib/esm/function/matrix/forEach.js","../node_modules/mathjs/lib/esm/function/matrix/getMatrixDataType.js","../node_modules/mathjs/lib/esm/function/matrix/identity.js","../node_modules/mathjs/lib/esm/function/matrix/kron.js","../node_modules/mathjs/lib/esm/function/matrix/map.js","../node_modules/mathjs/lib/esm/function/matrix/diff.js","../node_modules/mathjs/lib/esm/function/matrix/ones.js","../node_modules/mathjs/lib/esm/utils/noop.js","../node_modules/mathjs/lib/esm/function/matrix/range.js","../node_modules/mathjs/lib/esm/function/matrix/reshape.js","../node_modules/mathjs/lib/esm/function/matrix/resize.js","../node_modules/mathjs/lib/esm/function/matrix/rotate.js","../node_modules/mathjs/lib/esm/function/matrix/rotationMatrix.js","../node_modules/mathjs/lib/esm/function/matrix/row.js","../node_modules/mathjs/lib/esm/function/matrix/size.js","../node_modules/mathjs/lib/esm/function/matrix/squeeze.js","../node_modules/mathjs/lib/esm/function/matrix/subset.js","../node_modules/mathjs/lib/esm/function/matrix/transpose.js","../node_modules/mathjs/lib/esm/function/matrix/ctranspose.js","../node_modules/mathjs/lib/esm/function/matrix/zeros.js","../node_modules/mathjs/lib/esm/function/special/erf.js","../node_modules/mathjs/lib/esm/function/statistics/mode.js","../node_modules/mathjs/lib/esm/function/statistics/utils/improveErrorMessage.js","../node_modules/mathjs/lib/esm/function/statistics/prod.js","../node_modules/mathjs/lib/esm/function/string/format.js","../node_modules/mathjs/lib/esm/function/string/bin.js","../node_modules/mathjs/lib/esm/function/string/oct.js","../node_modules/mathjs/lib/esm/function/string/hex.js","../node_modules/mathjs/lib/esm/function/string/print.js","../node_modules/mathjs/lib/esm/function/unit/to.js","../node_modules/mathjs/lib/esm/function/utils/isPrime.js","../node_modules/mathjs/lib/esm/function/utils/numeric.js","../node_modules/mathjs/lib/esm/function/arithmetic/divideScalar.js","../node_modules/mathjs/lib/esm/function/arithmetic/pow.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/mathjs/lib/esm/function/arithmetic/round.js","../node_modules/mathjs/lib/esm/function/arithmetic/log.js","../node_modules/mathjs/lib/esm/function/arithmetic/log1p.js","../node_modules/mathjs/lib/esm/function/arithmetic/nthRoots.js","../node_modules/mathjs/lib/esm/function/arithmetic/dotPow.js","../node_modules/mathjs/lib/esm/function/arithmetic/dotDivide.js","../node_modules/mathjs/lib/esm/function/algebra/solver/utils/solveValidation.js","../node_modules/mathjs/lib/esm/function/algebra/solver/lsolve.js","../node_modules/mathjs/lib/esm/function/algebra/solver/usolve.js","../node_modules/mathjs/lib/esm/function/algebra/solver/lsolveAll.js","../node_modules/mathjs/lib/esm/function/algebra/solver/usolveAll.js","../node_modules/mathjs/lib/esm/type/matrix/utils/algorithm08.js","../node_modules/mathjs/lib/esm/function/bitwise/leftShift.js","../node_modules/mathjs/lib/esm/function/bitwise/rightArithShift.js","../node_modules/mathjs/lib/esm/function/bitwise/rightLogShift.js","../node_modules/mathjs/lib/esm/function/logical/and.js","../node_modules/mathjs/lib/esm/function/relational/compare.js","../node_modules/mathjs/lib/esm/function/relational/compareNatural.js","../node_modules/mathjs/lib/esm/function/relational/compareText.js","../node_modules/mathjs/lib/esm/function/relational/equal.js","../node_modules/mathjs/lib/esm/function/relational/equalText.js","../node_modules/mathjs/lib/esm/function/relational/smaller.js","../node_modules/mathjs/lib/esm/function/relational/smallerEq.js","../node_modules/mathjs/lib/esm/function/relational/larger.js","../node_modules/mathjs/lib/esm/function/relational/largerEq.js","../node_modules/mathjs/lib/esm/function/relational/deepEqual.js","../node_modules/mathjs/lib/esm/function/relational/unequal.js","../node_modules/mathjs/lib/esm/function/matrix/partitionSelect.js","../node_modules/mathjs/lib/esm/function/matrix/sort.js","../node_modules/mathjs/lib/esm/function/statistics/max.js","../node_modules/mathjs/lib/esm/function/statistics/min.js","../node_modules/mathjs/lib/esm/type/matrix/ImmutableDenseMatrix.js","../node_modules/mathjs/lib/esm/type/matrix/MatrixIndex.js","../node_modules/mathjs/lib/esm/type/matrix/FibonacciHeap.js","../node_modules/mathjs/lib/esm/type/matrix/Spa.js","../node_modules/mathjs/lib/esm/utils/bignumber/constants.js","../node_modules/mathjs/lib/esm/type/unit/Unit.js","../node_modules/mathjs/lib/esm/type/unit/function/unit.js","../node_modules/mathjs/lib/esm/type/matrix/function/sparse.js","../node_modules/mathjs/lib/esm/type/unit/function/createUnit.js","../node_modules/mathjs/lib/esm/function/trigonometry/acos.js","../node_modules/mathjs/lib/esm/plain/number/trigonometry.js","../node_modules/mathjs/lib/esm/function/trigonometry/acosh.js","../node_modules/mathjs/lib/esm/function/trigonometry/acot.js","../node_modules/mathjs/lib/esm/function/trigonometry/acoth.js","../node_modules/mathjs/lib/esm/function/trigonometry/acsc.js","../node_modules/mathjs/lib/esm/function/trigonometry/acsch.js","../node_modules/mathjs/lib/esm/function/trigonometry/asec.js","../node_modules/mathjs/lib/esm/function/trigonometry/asech.js","../node_modules/mathjs/lib/esm/function/trigonometry/asin.js","../node_modules/mathjs/lib/esm/function/trigonometry/asinh.js","../node_modules/mathjs/lib/esm/function/trigonometry/atan.js","../node_modules/mathjs/lib/esm/function/trigonometry/atan2.js","../node_modules/mathjs/lib/esm/function/trigonometry/atanh.js","../node_modules/mathjs/lib/esm/function/trigonometry/cos.js","../node_modules/mathjs/lib/esm/function/trigonometry/cosh.js","../node_modules/mathjs/lib/esm/function/trigonometry/cot.js","../node_modules/mathjs/lib/esm/function/trigonometry/coth.js","../node_modules/mathjs/lib/esm/function/trigonometry/csc.js","../node_modules/mathjs/lib/esm/function/trigonometry/csch.js","../node_modules/mathjs/lib/esm/function/trigonometry/sec.js","../node_modules/mathjs/lib/esm/function/trigonometry/sech.js","../node_modules/mathjs/lib/esm/function/trigonometry/sin.js","../node_modules/mathjs/lib/esm/function/trigonometry/sinh.js","../node_modules/mathjs/lib/esm/function/trigonometry/tan.js","../node_modules/mathjs/lib/esm/function/trigonometry/tanh.js","../node_modules/mathjs/lib/esm/function/set/setCartesian.js","../node_modules/mathjs/lib/esm/function/set/setDifference.js","../node_modules/mathjs/lib/esm/function/set/setDistinct.js","../node_modules/mathjs/lib/esm/function/set/setIntersect.js","../node_modules/mathjs/lib/esm/function/set/setIsSubset.js","../node_modules/mathjs/lib/esm/function/set/setMultiplicity.js","../node_modules/mathjs/lib/esm/function/set/setPowerset.js","../node_modules/mathjs/lib/esm/function/set/setSize.js","../node_modules/mathjs/lib/esm/function/set/setSymDifference.js","../node_modules/mathjs/lib/esm/function/set/setUnion.js","../node_modules/mathjs/lib/esm/function/arithmetic/add.js","../node_modules/mathjs/lib/esm/function/arithmetic/hypot.js","../node_modules/mathjs/lib/esm/function/arithmetic/norm.js","../node_modules/mathjs/lib/esm/function/matrix/dot.js","../node_modules/mathjs/lib/esm/function/matrix/trace.js","../node_modules/mathjs/lib/esm/type/matrix/function/index.js","../node_modules/mathjs/lib/esm/expression/keywords.js","../node_modules/mathjs/lib/esm/expression/node/Node.js","../node_modules/mathjs/lib/esm/expression/transform/utils/errorTransform.js","../node_modules/mathjs/lib/esm/expression/node/utils/access.js","../node_modules/mathjs/lib/esm/expression/node/AccessorNode.js","../node_modules/mathjs/lib/esm/expression/node/ArrayNode.js","../node_modules/mathjs/lib/esm/expression/operators.js","../node_modules/mathjs/lib/esm/expression/node/AssignmentNode.js","../node_modules/mathjs/lib/esm/expression/node/utils/assign.js","../node_modules/mathjs/lib/esm/expression/node/BlockNode.js","../node_modules/mathjs/lib/esm/expression/node/ConditionalNode.js","../node_modules/mathjs/lib/esm/utils/latex.js","../node_modules/mathjs/lib/esm/expression/node/ConstantNode.js","../node_modules/mathjs/lib/esm/expression/node/FunctionAssignmentNode.js","../node_modules/mathjs/lib/esm/expression/node/IndexNode.js","../node_modules/mathjs/lib/esm/expression/node/ObjectNode.js","../node_modules/mathjs/lib/esm/expression/node/OperatorNode.js","../node_modules/mathjs/lib/esm/expression/node/ParenthesisNode.js","../node_modules/mathjs/lib/esm/expression/node/RangeNode.js","../node_modules/mathjs/lib/esm/expression/node/RelationalNode.js","../node_modules/mathjs/lib/esm/expression/node/SymbolNode.js","../node_modules/mathjs/lib/esm/utils/scope.js","../node_modules/mathjs/lib/esm/expression/node/FunctionNode.js","../node_modules/mathjs/lib/esm/expression/parse.js","../node_modules/mathjs/lib/esm/expression/function/compile.js","../node_modules/mathjs/lib/esm/expression/function/evaluate.js","../node_modules/mathjs/lib/esm/expression/Parser.js","../node_modules/mathjs/lib/esm/expression/function/parser.js","../node_modules/mathjs/lib/esm/function/algebra/decomposition/lup.js","../node_modules/mathjs/lib/esm/function/algebra/decomposition/qr.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csTdfs.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csFlip.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csAmd.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csFkeep.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csLeaf.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csCounts.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csSqr.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csPermute.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csEtree.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csPost.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csMarked.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csMark.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csUnflip.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csDfs.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csSpsolve.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csReach.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csLu.js","../node_modules/mathjs/lib/esm/function/algebra/decomposition/slu.js","../node_modules/mathjs/lib/esm/function/algebra/sparse/csIpvec.js","../node_modules/mathjs/lib/esm/function/algebra/solver/lusolve.js","../node_modules/mathjs/lib/esm/expression/Help.js","../node_modules/mathjs/lib/esm/type/chain/Chain.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/pi.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/e.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/embeddedDocs.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bignumber.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/boolean.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/complex.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/createUnit.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/fraction.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/index.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/matrix.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/number.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/sparse.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/splitUnit.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/string.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/unit.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/false.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/i.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/Infinity.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN2.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN10.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG2E.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG10E.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/NaN.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/null.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/phi.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT1_2.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT2.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/tau.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/true.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/version.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/derivative.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolve.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolveAll.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lup.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lusolve.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplify.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/rationalize.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/slu.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolve.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolveAll.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/qr.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/abs.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/add.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cbrt.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cube.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/divide.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotDivide.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotMultiply.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotPow.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/exp.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm1.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/gcd.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/lcm.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log2.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log1p.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log10.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/mod.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/multiply.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/norm.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoot.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoots.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/round.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrt.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrtm.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/square.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/subtract.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryMinus.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryPlus.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/xgcd.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitAnd.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitNot.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitOr.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitXor.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/leftShift.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightArithShift.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightLogShift.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/bellNumbers.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/catalan.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/composition.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/stirlingS2.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/config.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/import.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/typed.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/arg.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/conj.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/re.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/im.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/evaluate.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/help.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/distance.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/intersect.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/and.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/not.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/or.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/xor.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/concat.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/count.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/cross.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/column.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ctranspose.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/det.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diag.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diff.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/dot.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/getMatrixDataType.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/identity.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/filter.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/flatten.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/forEach.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/inv.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/eigs.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/kron.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/map.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ones.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/partitionSelect.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/range.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/resize.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/reshape.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotate.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotationMatrix.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/row.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/size.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/sort.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/squeeze.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/subset.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/trace.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/transpose.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/zeros.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinations.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinationsWithRep.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/factorial.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/gamma.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/kldivergence.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/multinomial.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/permutations.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/pickRandom.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/random.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/randomInt.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compare.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareNatural.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareText.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/deepEqual.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equal.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equalText.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/larger.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/largerEq.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smaller.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smallerEq.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/unequal.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setCartesian.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDifference.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDistinct.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIntersect.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIsSubset.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setMultiplicity.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setPowerset.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSize.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSymDifference.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setUnion.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/erf.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mad.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/max.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mean.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/median.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/min.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mode.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/prod.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/std.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/sum.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/variance.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acos.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acosh.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acot.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsc.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asec.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asech.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asin.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asinh.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atanh.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan2.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cos.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cosh.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cot.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/coth.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csc.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csch.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sec.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sech.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sin.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sinh.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tan.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tanh.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/units/to.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/clone.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/format.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/bin.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/oct.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hex.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNaN.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isInteger.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNegative.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNumeric.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hasNumericValue.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPositive.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPrime.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isZero.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/typeOf.js","../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/numeric.js","../node_modules/mathjs/lib/esm/expression/function/help.js","../node_modules/mathjs/lib/esm/type/chain/function/chain.js","../node_modules/mathjs/lib/esm/function/matrix/det.js","../node_modules/mathjs/lib/esm/function/matrix/inv.js","../node_modules/mathjs/lib/esm/function/matrix/eigs/complexEigs.js","../node_modules/mathjs/lib/esm/function/matrix/eigs/realSymetric.js","../node_modules/mathjs/lib/esm/function/matrix/eigs.js","../node_modules/mathjs/lib/esm/function/matrix/expm.js","../node_modules/mathjs/lib/esm/function/matrix/sqrtm.js","../node_modules/mathjs/lib/esm/function/arithmetic/divide.js","../node_modules/mathjs/lib/esm/function/geometry/distance.js","../node_modules/mathjs/lib/esm/function/geometry/intersect.js","../node_modules/mathjs/lib/esm/function/statistics/sum.js","../node_modules/mathjs/lib/esm/function/statistics/mean.js","../node_modules/mathjs/lib/esm/function/statistics/median.js","../node_modules/mathjs/lib/esm/function/statistics/mad.js","../node_modules/mathjs/lib/esm/function/statistics/variance.js","../node_modules/mathjs/lib/esm/function/statistics/quantileSeq.js","../node_modules/mathjs/lib/esm/function/statistics/std.js","../node_modules/mathjs/lib/esm/utils/product.js","../node_modules/mathjs/lib/esm/plain/number/combinations.js","../node_modules/mathjs/lib/esm/function/probability/combinations.js","../node_modules/mathjs/lib/esm/function/probability/combinationsWithRep.js","../node_modules/mathjs/lib/esm/plain/number/probability.js","../node_modules/mathjs/lib/esm/function/probability/gamma.js","../node_modules/mathjs/lib/esm/function/probability/factorial.js","../node_modules/mathjs/lib/esm/function/probability/kldivergence.js","../node_modules/mathjs/lib/esm/function/probability/multinomial.js","../node_modules/mathjs/lib/esm/function/probability/permutations.js","../node_modules/mathjs/lib/esm/function/probability/util/seededRNG.js","../node_modules/mathjs/lib/esm/function/probability/pickRandom.js","../node_modules/mathjs/lib/esm/function/probability/util/randomMatrix.js","../node_modules/mathjs/lib/esm/function/probability/random.js","../node_modules/mathjs/lib/esm/function/probability/randomInt.js","../node_modules/mathjs/lib/esm/function/combinatorics/stirlingS2.js","../node_modules/mathjs/lib/esm/function/combinatorics/bellNumbers.js","../node_modules/mathjs/lib/esm/function/combinatorics/catalan.js","../node_modules/mathjs/lib/esm/function/combinatorics/composition.js","../node_modules/mathjs/lib/esm/function/algebra/simplify/util.js","../node_modules/mathjs/lib/esm/function/algebra/simplify/simplifyCore.js","../node_modules/mathjs/lib/esm/function/algebra/simplify/simplifyConstant.js","../node_modules/mathjs/lib/esm/function/algebra/simplify/resolve.js","../node_modules/mathjs/lib/esm/function/algebra/simplify.js","../node_modules/mathjs/lib/esm/function/algebra/derivative.js","../node_modules/mathjs/lib/esm/function/algebra/rationalize.js","../node_modules/mathjs/lib/esm/json/reviver.js","../node_modules/mathjs/lib/esm/json/replacer.js","../node_modules/mathjs/lib/esm/plain/number/constants.js","../node_modules/mathjs/lib/esm/constants.js","../node_modules/mathjs/lib/esm/version.js","../node_modules/mathjs/lib/esm/type/unit/physicalConstants.js","../node_modules/mathjs/lib/esm/expression/transform/apply.transform.js","../node_modules/mathjs/lib/esm/expression/transform/column.transform.js","../node_modules/mathjs/lib/esm/expression/transform/utils/compileInlineExpression.js","../node_modules/mathjs/lib/esm/expression/transform/filter.transform.js","../node_modules/mathjs/lib/esm/expression/transform/forEach.transform.js","../node_modules/mathjs/lib/esm/expression/transform/index.transform.js","../node_modules/mathjs/lib/esm/expression/transform/map.transform.js","../node_modules/mathjs/lib/esm/expression/transform/utils/lastDimToZeroBase.js","../node_modules/mathjs/lib/esm/expression/transform/max.transform.js","../node_modules/mathjs/lib/esm/expression/transform/mean.transform.js","../node_modules/mathjs/lib/esm/expression/transform/min.transform.js","../node_modules/mathjs/lib/esm/expression/transform/range.transform.js","../node_modules/mathjs/lib/esm/expression/transform/row.transform.js","../node_modules/mathjs/lib/esm/expression/transform/subset.transform.js","../node_modules/mathjs/lib/esm/expression/transform/concat.transform.js","../node_modules/mathjs/lib/esm/expression/transform/diff.transform.js","../node_modules/mathjs/lib/esm/expression/transform/std.transform.js","../node_modules/mathjs/lib/esm/expression/transform/sum.transform.js","../node_modules/mathjs/lib/esm/expression/transform/variance.transform.js","../node_modules/mathjs/lib/esm/entry/allFactoriesAny.js","services/numbers.js","../node_modules/mathjs/lib/esm/core/create.js","../node_modules/mathjs/lib/esm/utils/emitter.js","utils/helpers.js","components/DisplayValue/DisplayValue.js","utils/reducers.js","hooks/useAsync.js","hooks/useSafeDispatch.js","hooks/useModal.js","store/app.store.js","../node_modules/@ethersproject/abi/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts","../node_modules/@ethersproject/abi/src.ts/coders/address.ts","../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts","../node_modules/@ethersproject/abi/src.ts/coders/array.ts","../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts","../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/null.ts","../node_modules/@ethersproject/abi/src.ts/coders/number.ts","../node_modules/@ethersproject/abi/src.ts/coders/string.ts","../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts","../node_modules/@ethersproject/abi/src.ts/fragments.ts","../node_modules/@ethersproject/abi/src.ts/abi-coder.ts","../node_modules/@ethersproject/abi/src.ts/interface.ts","../node_modules/@ethersproject/contracts/src.ts/index.ts","../node_modules/@ethersproject/contracts/src.ts/_version.ts","services/staking.wrapper.js","../node_modules/@wagmi/core/src/utils/deepEqual.ts","../node_modules/@wagmi/core/src/actions/getAccount.ts","../node_modules/@wagmi/core/src/actions/reconnect.ts","../node_modules/@wagmi/core/src/hydrate.ts","../node_modules/wagmi/src/hydrate.ts","../node_modules/wagmi/src/context.ts","../node_modules/@wagmi/core/src/version.ts","../node_modules/@wagmi/core/src/errors/base.ts","../node_modules/@wagmi/core/src/utils/getVersion.ts","../node_modules/wagmi/src/errors/base.ts","../node_modules/wagmi/src/utils/getVersion.ts","../node_modules/wagmi/src/errors/context.ts","../node_modules/wagmi/src/hooks/useConfig.ts","../node_modules/wagmi/src/hooks/useSyncExternalStoreWithTracked.ts","../node_modules/wagmi/src/hooks/useAccount.ts","../node_modules/@wagmi/core/src/actions/watchAccount.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/thenable.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","../node_modules/@wagmi/core/src/errors/config.ts","../node_modules/@wagmi/core/src/query/connect.ts","../node_modules/@wagmi/core/src/actions/connect.ts","../node_modules/@wagmi/core/src/actions/getConnectors.ts","../node_modules/wagmi/src/hooks/useConnectors.ts","../node_modules/@wagmi/core/src/actions/watchConnectors.ts","../node_modules/wagmi/src/hooks/useConnect.ts","../node_modules/mipd/src/store.ts","../node_modules/mipd/src/utils.ts","../node_modules/viem/utils/uid.ts","../node_modules/viem/clients/createClient.ts","../node_modules/zustand/esm/middleware.mjs","../node_modules/zustand/esm/vanilla.mjs","../node_modules/viem/errors/rpc.ts","../node_modules/viem/utils/promise/withTimeout.ts","../node_modules/viem/utils/promise/withRetry.ts","../node_modules/viem/utils/wait.ts","../node_modules/@wagmi/core/src/errors/connector.ts","../node_modules/@wagmi/core/src/connectors/injected.ts","../node_modules/@wagmi/core/src/createEmitter.ts","../node_modules/@wagmi/core/src/utils/deserialize.ts","../node_modules/@wagmi/core/src/utils/serialize.ts","../node_modules/@wagmi/core/src/createStorage.ts","../node_modules/@wagmi/core/src/utils/uid.ts","../node_modules/@wagmi/core/src/createConfig.ts","../node_modules/viem/errors/transport.ts","../node_modules/viem/utils/rpc/id.ts","../node_modules/viem/utils/promise/withDedupe.ts","../node_modules/viem/utils/buildRequest.ts","../node_modules/viem/clients/transports/createTransport.ts","../node_modules/viem/clients/transports/http.ts","../node_modules/viem/utils/rpc/http.ts","../node_modules/@wagmi/core/src/actions/getConnectorClient.ts","../node_modules/viem/clients/transports/custom.ts","../node_modules/@wagmi/core/src/query/utils.ts","../node_modules/@wagmi/core/src/query/getConnectorClient.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/isRestoring.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","../node_modules/wagmi/src/utils/query.ts","../node_modules/@wagmi/core/src/actions/getChainId.ts","../node_modules/wagmi/src/hooks/useChainId.ts","../node_modules/@wagmi/core/src/actions/watchChainId.ts","../node_modules/wagmi/src/hooks/useConnectorClient.ts","../node_modules/@wagmi/core/src/query/switchChain.ts","../node_modules/@wagmi/core/src/actions/switchChain.ts","../node_modules/@wagmi/core/src/actions/getChains.ts","../node_modules/wagmi/src/hooks/useChains.ts","../node_modules/@wagmi/core/src/actions/watchChains.ts","../node_modules/@wagmi/core/src/query/disconnect.ts","../node_modules/@wagmi/core/src/actions/disconnect.ts","../node_modules/@wagmi/core/src/actions/getConnections.ts","../node_modules/wagmi/src/hooks/useConnections.ts","../node_modules/@wagmi/core/src/actions/watchConnections.ts","../node_modules/viem/actions/public/getBalance.ts","../node_modules/@wagmi/core/src/utils/getAction.ts","../node_modules/@wagmi/core/src/utils/getUnit.ts","../node_modules/viem/utils/errors/getContractError.ts","../node_modules/viem/utils/getAction.ts","../node_modules/viem/actions/public/readContract.ts","../node_modules/viem/actions/public/multicall.ts","../node_modules/@wagmi/core/src/actions/readContracts.ts","../node_modules/@wagmi/core/src/actions/multicall.ts","../node_modules/@wagmi/core/src/actions/readContract.ts","../node_modules/@wagmi/core/src/actions/getBalance.ts","../node_modules/@wagmi/core/src/query/getBalance.ts","../node_modules/@wagmi/connectors/src/walletConnect.ts","../node_modules/@wagmi/core/src/utils/extractRpcUrls.ts","../node_modules/@airdao/ui-library/node_modules/tslib/tslib.es6.js","../node_modules/@airdao/ui-library/node_modules/style-inject/dist/style-inject.es.js","../node_modules/@airdao/ui-library/node_modules/prop-types/index.js","../node_modules/@airdao/ui-library/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/@airdao/ui-library/node_modules/object-assign/index.js","../node_modules/@airdao/ui-library/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../components/Button/Button.tsx","../../components/Input/Input.tsx","../../components/ButtonIcon/ButtonIcon.tsx","../../components/TabsRound/TabsRound.tsx","../node_modules/@airdao/ui-library/src/components/Footer/assets/twitter-icon.svg","../../components/Footer/Footer.tsx","../node_modules/@airdao/ui-library/src/components/Footer/assets/telegram-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/reddit-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/medium-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/youtube-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/discord-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/linkedin-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/github-icon.svg","../../components/Loader/Loader.tsx","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/PrismicProvider.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/useStatefulPrismicClientMethod.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/clientHooks.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/usePrismicClient.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/usePrismicContext.js","../../hooks/useBodyScroll.ts","../node_modules/@airdao/ui-library/node_modules/lodash.debounce/index.js","../node_modules/@airdao/ui-library/node_modules/usehooks-ts/dist/index.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/filter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/castArray.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/appendFilters.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/package.json.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/devMsg.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/everyTagFilter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/PrismicError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findRef.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findMasterRef.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findRefByID.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findRefByLabel.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/getPreviewCookie.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/someTagsFilter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/typeFilter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/ForbiddenError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/NotFoundError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/ParsingError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/PreviewTokenExpired.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/RefExpiredError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/RefNotFoundError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/RepositoryNotFoundError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/types/value/link.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/BaseClient.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/pLimit.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/buildQueryURL.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/isRepositoryEndpoint.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/Client.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/createClient.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/helpers/asText.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/richtext/asText.js","../../components/Icons/TailArrow.tsx","../../components/Icons/ArrowRight.tsx","../../components/Icons/ArrowTail.tsx","../../components/Header/components/HeaderNav.tsx","../../components/Icons/ArrowTop.tsx","../../components/AddressInfo/AddressInfo.tsx","../node_modules/@airdao/ui-library/src/components/Header/assets/copy.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/airdao.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/logout.svg","../node_modules/@airdao/ui-library/src/components/Modal_V2/assets/close-icon.svg","../../components/Modal_V2/Modal.tsx","../../components/ConnectWallet/index.tsx","../node_modules/@airdao/ui-library/src/components/ConnectWallet/assets/airdao.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet/assets/arrow-right.svg","../../components/ConnectWalletModal/ConnectWalletModal.tsx","../../constants.ts","../../utils/formatAmount.ts","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/walletconnect-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/metamask-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/safepal-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/bitget-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/gateweb3-icon.svg","../../utils/wagmiConnectors/names.ts","../../utils/wagmiConnectors/icons.ts","../../utils/wagmiConnectors/overrideIconInConnector.ts","../../utils/wagmiConnectors/mockedConnectors.ts","../../components/Header/components/HeaderBody.tsx","../node_modules/@airdao/ui-library/src/components/Header/assets/logo.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/pocket.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/cross.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/hamburger.svg","../../hooks/useIsMobilePlatform.ts","../../hooks/useWindowSize.ts","../../hooks/useFilteredConnectors.ts","../../hooks/useEthersAdapter.ts","../../components/Header/prismic.ts","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/getRepositoryName.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/getRepositoryEndpoint.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/isRepositoryName.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/helpers/asLink.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/helpers/documentToLinkField.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/minifyGraphQLQuery.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/cookie.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/castThunk.js","../../components/Header/Header.tsx","../node_modules/wagmi/src/hooks/useSwitchChain.ts","../node_modules/wagmi/src/hooks/useDisconnect.ts","../node_modules/wagmi/src/hooks/useBalance.ts","../../components/Modal/Modal.tsx","../node_modules/@airdao/ui-library/src/components/Modal/assets/cross.svg","../../components/Notification/components/Content.tsx","../node_modules/@airdao/ui-library/node_modules/clsx/dist/clsx.m.js","../node_modules/@airdao/ui-library/node_modules/react-toastify/dist/react-toastify.esm.mjs","../../components/Notification/assets/error.tsx","../../components/Notification/assets/info.tsx","../../components/Notification/assets/success.tsx","../../components/Notification/assets/warning.tsx","../../components/Spinner/Spinner.tsx","../../components/Notification/Notify.tsx","../../components/Notification/components/CloseButton.tsx","../node_modules/@airdao/ui-library/src/components/Notification/assets/close.svg","../../components/Notification/NotificationContainer.tsx","../../components/Tooltip/getPosition.ts","../../components/Tooltip/Tooltip.tsx","../../components/Textarea/Textarea.tsx","../../hooks/useClickOutside.ts","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/airdao-icon.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/metamask.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/arrow.svg","../../components/ConnectWallet_old/ConnectWallet_old.tsx","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/safepal.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/wallet-connect.svg","../../components/ConnectWalletModal_old/ConnectWalletModal_old.tsx","../../components/Badge/Badge.tsx","../../components/Radio/Radio.tsx","../../components/Checkbox/Checkbox.tsx","../../components/InlineLoader/InlineLoader.tsx","../../contexts/ConnectWalletModalProvider/context.ts","pages/Staking/components/AmountInput/index.js","pages/Staking/components/Deposit/Deposit.js","pages/Staking/components/Withdraw/Withdraw.js","components/StakingItem/CollapsedContentTabs/CollapsedContentTabs.js","assets/svg/hera-pool.svg","assets/svg/plutus-pool.svg","assets/svg/chevron.svg","components/StakingItem/index.js","api/index.js","pages/Staking/components/InfoBlock/InfoBlock.js","assets/svg/info-icon.svg","assets/svg/chat-help-icon.svg","assets/svg/hbr.svg","assets/svg/arrow-short.svg","pages/NewStaking.js","components/RenderRoutes/RenderRoutes.js","context/poolsContext.js","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","context/ConfiguredWagmiProvider.js","../node_modules/@tanstack/query-core/src/queryClient.ts","../../utils/createAirdaoConfig.ts","../node_modules/@prismicio/src/PrismicError.ts","../node_modules/@prismicio/src/getRepositoryEndpoint.ts","../node_modules/@prismicio/src/isRepositoryName.ts","../node_modules/@prismicio/src/index.ts","../node_modules/@prismicio/src/value/link.ts","../node_modules/@prismicio/src/asLink.ts","../node_modules/@prismicio/src/documentToLinkField.ts","../node_modules/@prismicio/src/lib/castArray.ts","../node_modules/@prismicio/src/lib/appendPredicates.ts","../node_modules/@prismicio/src/lib/findRef.ts","../node_modules/@prismicio/src/lib/findMasterRef.ts","../node_modules/@prismicio/src/lib/findRefByID.ts","../node_modules/@prismicio/src/lib/findRefByLabel.ts","../node_modules/@prismicio/src/lib/getPreviewCookie.ts","../node_modules/@prismicio/src/ForbiddenError.ts","../node_modules/@prismicio/src/NotFoundError.ts","../node_modules/@prismicio/src/ParsingError.ts","../node_modules/@prismicio/src/buildQueryURL.ts","../node_modules/@prismicio/src/predicate.ts","../node_modules/@prismicio/src/client.ts","../node_modules/@prismicio/src/isRepositoryEndpoint.ts","../node_modules/@prismicio/src/lib/minifyGraphQLQuery.ts","../node_modules/@prismicio/src/cookie.ts","../node_modules/@prismicio/src/lib/castThunk.ts","prismic.js","components/ErrorBoundary/index.js","../node_modules/@prismicio/src/PrismicProvider.tsx","Main.js","index.js"],"sourcesContent":["/* eslint-env browser */\r\n\r\n/**\r\n * All debug logs are removed on build\r\n */\r\n\r\nimport \"./collapse.css\";\r\nimport React, {\r\n useState,\r\n useEffect,\r\n useRef,\r\n useCallback,\r\n useReducer\r\n} from \"react\";\r\nimport debugLog from \"./debugLog\";\r\n\r\n// using let instead of const,\r\n// experimenting with ES2015 bundle which gets a bit smaller when using let over const.\r\nlet COLLAPSED = \"collapsed\";\r\nlet COLLAPSING = \"collapsing\";\r\nlet EXPANDING = \"expanding\";\r\nlet EXPANDED = \"expanded\";\r\n\r\nlet defaultClassName = \"collapse-css-transition\";\r\nlet defaultElementType = \"div\";\r\nlet defaultCollapseHeight = \"0px\";\r\n\r\n/**\r\n *\r\n * @param {function} callback\r\n */\r\nfunction nextFrame(callback) {\r\n requestAnimationFrame(function() {\r\n //setTimeout(callback, 0); // NOT used because can be jumpy if click-spamming.\r\n requestAnimationFrame(callback); // This is used.\r\n });\r\n}\r\n\r\nfunction Collapse({\r\n children,\r\n transition,\r\n style,\r\n render,\r\n elementType = defaultElementType,\r\n isOpen,\r\n collapseHeight = defaultCollapseHeight,\r\n onInit,\r\n onChange,\r\n className = defaultClassName,\r\n addState,\r\n noAnim,\r\n overflowOnExpanded,\r\n ...rest\r\n}) {\r\n let getCollapsedVisibility = () => (collapseHeight === \"0px\" ? \"hidden\" : \"\");\r\n\r\n let [__, forceUpdate] = useReducer(_ => _ + 1, 0);\r\n\r\n let elementRef = useRef();\r\n let [callbackTick, setCallbackTick] = useState(0);\r\n\r\n // Avoiding setState to control when stuff are updated.\r\n // Might not be needed.\r\n let state = useRef({\r\n collapse: isOpen ? EXPANDED : COLLAPSED,\r\n style: {\r\n height: isOpen ? \"\" : collapseHeight,\r\n visibility: isOpen ? \"\" : getCollapsedVisibility()\r\n }\r\n }).current;\r\n\r\n useEffect(() => {\r\n // Invoke callback when data are updated, use Effect to sync state.\r\n callbackTick && onCallback(onChange);\r\n }, [callbackTick]);\r\n\r\n /**\r\n *\r\n * @param {function} callback\r\n */\r\n let onCallback = (callback, params = {}) => {\r\n if (callback) {\r\n debugLog(\"onCallback \" + callback.name);\r\n callback({ state: state.collapse, style: state.style, ...params });\r\n }\r\n };\r\n\r\n function setCollapsed() {\r\n if (!elementRef.current) return; // might be redundant\r\n\r\n // Update state\r\n state.collapse = COLLAPSED;\r\n\r\n debugLog(\"setCollapsed\");\r\n\r\n state.style = {\r\n height: collapseHeight,\r\n visibility: getCollapsedVisibility()\r\n };\r\n forceUpdate();\r\n\r\n setTimeout(() => setCallbackTick(Date.now), 0); // callback and re-render\r\n }\r\n\r\n function setCollapsing() {\r\n if (!elementRef.current) return; // might be redundant\r\n\r\n if (noAnim) {\r\n return setCollapsed();\r\n }\r\n\r\n // Update state\r\n state.collapse = COLLAPSING;\r\n\r\n debugLog(\"setCollapsing\");\r\n\r\n state.style = {\r\n height: getElementHeight(),\r\n visibility: \"\"\r\n };\r\n forceUpdate();\r\n\r\n nextFrame(() => {\r\n if (!elementRef.current) return;\r\n if (state.collapse !== COLLAPSING) return;\r\n\r\n state.style = {\r\n height: collapseHeight,\r\n visibility: \"\"\r\n };\r\n //forceUpdate();\r\n\r\n setCallbackTick(Date.now); // callback and re-render\r\n });\r\n }\r\n\r\n function setExpanding() {\r\n if (!elementRef.current) return; // might be redundant\r\n\r\n if (noAnim) {\r\n return setExpanded();\r\n }\r\n\r\n // Updatetate\r\n state.collapse = EXPANDING;\r\n\r\n debugLog(\"setExpanding\");\r\n\r\n nextFrame(() => {\r\n if (!elementRef.current) return; // might be redundant\r\n if (state.collapse !== EXPANDING) return;\r\n\r\n state.style = {\r\n height: getElementHeight(),\r\n visibility: \"\"\r\n };\r\n // forceUpdate();\r\n\r\n setCallbackTick(Date.now); // callback and re-render\r\n });\r\n }\r\n\r\n function setExpanded() {\r\n if (!elementRef.current) return; // might be redundant\r\n\r\n // Update state\r\n state.collapse = EXPANDED;\r\n\r\n debugLog(\"setExpanded\");\r\n\r\n state.style = {\r\n height: \"\",\r\n visibility: \"\"\r\n };\r\n forceUpdate();\r\n\r\n setTimeout(() => setCallbackTick(Date.now), 0); // callback and re-render\r\n }\r\n\r\n function getElementHeight() {\r\n // @ts-ignore\r\n return `${elementRef.current.scrollHeight}px`;\r\n }\r\n\r\n function onTransitionEnd({ target, propertyName }) {\r\n if (target === elementRef.current && propertyName === \"height\") {\r\n let styleHeight = target.style.height;\r\n\r\n debugLog(\"onTransitionEnd\", state.collapse, propertyName, styleHeight);\r\n\r\n switch (state.collapse) {\r\n case EXPANDING:\r\n if (styleHeight === \"\" || styleHeight === collapseHeight)\r\n // This is stale, a newer event has happened before this could execute\r\n console.warn(\r\n `onTransitionEnd height unexpected ${styleHeight}`,\r\n \"ignore setExpanded\"\r\n );\r\n else setExpanded();\r\n break;\r\n case COLLAPSING:\r\n if (styleHeight === \"\" || styleHeight !== collapseHeight)\r\n // This is stale, a newer event has happened before this could execute\r\n console.warn(\r\n `onTransitionEnd height unexpected ${styleHeight}`,\r\n \"ignore setCollapsed\"\r\n );\r\n else setCollapsed();\r\n break;\r\n default:\r\n console.warn(\"Ignored in onTransitionEnd\", state.collapse);\r\n }\r\n }\r\n }\r\n\r\n // getDerivedStateFromProps\r\n let didOpen = state.collapse === EXPANDED || state.collapse === EXPANDING;\r\n\r\n if (!didOpen && isOpen) setExpanding();\r\n\r\n if (didOpen && !isOpen) setCollapsing();\r\n // END getDerivedStateFromProps\r\n\r\n let overflow =\r\n state.collapse === EXPANDED && overflowOnExpanded ? \"\" : \"hidden\";\r\n\r\n let computedStyle = {\r\n overflow,\r\n transition,\r\n ...style,\r\n ...state.style\r\n };\r\n let ElementType = elementType;\r\n\r\n let callbackRef = useCallback(\r\n node => {\r\n if (node) {\r\n elementRef.current = node;\r\n onCallback(onInit, { node });\r\n debugLog(\"callback ref\");\r\n }\r\n },\r\n [elementType]\r\n );\r\n\r\n let collapseClassName = addState\r\n ? `${className} --c-${state.collapse}`\r\n : className;\r\n\r\n debugLog(\"Render\");\r\n\r\n return (\r\n \r\n {typeof children === \"function\"\r\n ? children(state.collapse)\r\n : typeof render === \"function\"\r\n ? render(state.collapse)\r\n : children}\r\n \r\n );\r\n}\r\n\r\nexport default Collapse;\r\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nmodule.exports = Object.freeze({\n web3Rpc: process.env.WEB3_RPC,\n nodePrivateKey: process.env.WEB3_NODEPRIVATEKEY,\n headContractAddress: process.env.HEAD_CONTRACT_ADDRESS || '0x0000000000000000000000000000000000000F10',\n validatorSetContractAddress: process.env.VALIDATOR_SET_CONTRACT_ADDRESS || '0x0000000000000000000000000000000000000F00',\n blockRewardsContractAddress: process.env.BLOCK_REWARDS_CONTRACT_ADDRESS || '0x0000000000000000000000000000000000000F01',\n multiplexerContractAddress: process.env.MULTIPLEXER_CONTRACT_ADDRESS || '0x0000000000000000000000000000000000000000',\n multisigContractAddress: process.env.MULTISIG_CONTRACT_ADDRESS || '0x0000000000000000000000000000000000000000',\n multisigApprovalAddresses: process.env.MULTISIG_APPROVAL_ADDRESSES\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _web3_tools = require('../utils/web3_tools');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MultisigWalletJson = require('../contracts/MultiSigWallet.json'); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nvar MultiplexerJson = require('../contracts/Multiplexer.json');\n\nvar AdministrativeActions = function () {\n function AdministrativeActions(headWrapper, kycWhitelistWrapper, feesWrapper, validatorProxyWrapper, blockchainStateWrapper, poolsNodesManagerWrapper, rolesWrapper) {\n (0, _classCallCheck3.default)(this, AdministrativeActions);\n\n this.headWrapper = headWrapper;\n this.kycWhitelistWrapper = kycWhitelistWrapper;\n this.feesWrapper = feesWrapper;\n this.validatorProxyWrapper = validatorProxyWrapper;\n this.blockchainStateWrapper = blockchainStateWrapper;\n this.poolsNodesManagerWrapper = poolsNodesManagerWrapper;\n this.rolesWrapper = rolesWrapper;\n }\n\n (0, _createClass3.default)(AdministrativeActions, [{\n key: 'moveOwnershipsToMultiplexer',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(multiplexerAddress) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.headWrapper.transferOwnership(multiplexerAddress);\n\n case 2:\n _context.next = 4;\n return this.kycWhitelistWrapper.transferOwnership(multiplexerAddress);\n\n case 4:\n _context.next = 6;\n return this.feesWrapper.transferOwnership(multiplexerAddress);\n\n case 6:\n _context.next = 8;\n return this.validatorProxyWrapper.transferOwnership(multiplexerAddress);\n\n case 8:\n _context.next = 10;\n return this.poolsNodesManagerWrapper.transferOwnership(multiplexerAddress);\n\n case 10:\n _context.next = 12;\n return this.rolesWrapper.transferOwnership(multiplexerAddress);\n\n case 12:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function moveOwnershipsToMultiplexer(_x) {\n return _ref.apply(this, arguments);\n }\n\n return moveOwnershipsToMultiplexer;\n }()\n }, {\n key: 'switchContext',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(newContextAddress) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.headWrapper.getOwner();\n\n case 2:\n _context2.t0 = _context2.sent;\n _context2.t1 = this.headWrapper.defaultAddress;\n\n if (!(_context2.t0 !== _context2.t1)) {\n _context2.next = 6;\n break;\n }\n\n throw new Error('You need to be the owner of the Head contract to perform a context switch');\n\n case 6:\n _context2.next = 8;\n return this.blockchainStateWrapper.isAddressAContract(newContextAddress);\n\n case 8:\n if (_context2.sent) {\n _context2.next = 10;\n break;\n }\n\n throw new Error('Provided address is not a contract');\n\n case 10:\n _context2.next = 12;\n return this.headWrapper.setContext(newContextAddress);\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function switchContext(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return switchContext;\n }()\n }, {\n key: 'showInfo',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var multiplexer, multisig, owners;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.t0 = console;\n _context3.next = 3;\n return this.feesWrapper.getOwner();\n\n case 3:\n _context3.t1 = _context3.sent;\n\n _context3.t0.log.call(_context3.t0, 'Multiplexer:', _context3.t1);\n\n _context3.t2 = _web3_tools.loadContract;\n _context3.t3 = this.headWrapper.web3;\n _context3.t4 = MultiplexerJson.abi;\n _context3.next = 10;\n return this.feesWrapper.getOwner();\n\n case 10:\n _context3.t5 = _context3.sent;\n _context3.next = 13;\n return (0, _context3.t2)(_context3.t3, _context3.t4, _context3.t5);\n\n case 13:\n multiplexer = _context3.sent;\n _context3.t6 = console;\n _context3.next = 17;\n return multiplexer.methods.owner().call();\n\n case 17:\n _context3.t7 = _context3.sent;\n\n _context3.t6.log.call(_context3.t6, 'Multisig:', _context3.t7);\n\n _context3.t8 = _web3_tools.loadContract;\n _context3.t9 = this.headWrapper.web3;\n _context3.t10 = MultisigWalletJson.abi;\n _context3.next = 24;\n return multiplexer.methods.owner().call();\n\n case 24:\n _context3.t11 = _context3.sent;\n _context3.next = 27;\n return (0, _context3.t8)(_context3.t9, _context3.t10, _context3.t11);\n\n case 27:\n multisig = _context3.sent;\n _context3.next = 30;\n return multisig.methods.getOwners().call();\n\n case 30:\n owners = _context3.sent;\n\n console.log('Multisig owners:', owners);\n\n case 32:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function showInfo() {\n return _ref3.apply(this, arguments);\n }\n\n return showInfo;\n }()\n }]);\n return AdministrativeActions;\n}();\n\nexports.default = AdministrativeActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bn = require('bn.js');\n\nvar _bn2 = _interopRequireDefault(_bn);\n\nvar _errors = require('../errors/errors');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar ChallengeActions = function () {\n function ChallengeActions(challengeWrapper, feeWrapper, shelteringWrapper, blockchainStateWrapper, atlasStakeStoreWrapper) {\n (0, _classCallCheck3.default)(this, ChallengeActions);\n\n this.challengeWrapper = challengeWrapper;\n this.feeWrapper = feeWrapper;\n this.shelteringWrapper = shelteringWrapper;\n this.blockchainStateWrapper = blockchainStateWrapper;\n this.atlasStakeStoreWrapper = atlasStakeStoreWrapper;\n }\n\n (0, _createClass3.default)(ChallengeActions, [{\n key: 'startChallenge',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(sheltererId, bundleId) {\n var challengeId, storagePeriods, fee, balance, _ref2, blockNumber, transactionHash;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.shelteringWrapper.isSheltering(bundleId, sheltererId);\n\n case 2:\n if (_context.sent) {\n _context.next = 4;\n break;\n }\n\n throw new Error(sheltererId + ' is not sherltering ' + bundleId);\n\n case 4:\n _context.next = 6;\n return this.challengeWrapper.getChallengeId(sheltererId, bundleId);\n\n case 6:\n challengeId = _context.sent;\n _context.next = 9;\n return this.challengeWrapper.isInProgress(challengeId);\n\n case 9:\n if (!_context.sent) {\n _context.next = 11;\n break;\n }\n\n throw new Error('Could not start a challenge: same challenge is currently in progress');\n\n case 11:\n _context.next = 13;\n return this.shelteringWrapper.bundleStoragePeriods(bundleId);\n\n case 13:\n storagePeriods = _context.sent;\n _context.next = 16;\n return this.feeWrapper.feeForChallenge(storagePeriods);\n\n case 16:\n fee = _context.sent;\n _context.next = 19;\n return this.getBalance();\n\n case 19:\n balance = _context.sent;\n\n if (!new _bn2.default(balance).lte(new _bn2.default(fee))) {\n _context.next = 22;\n break;\n }\n\n throw new _errors.InsufficientFundsToStartChallengeError(fee, balance);\n\n case 22:\n _context.next = 24;\n return this.challengeWrapper.start(sheltererId, bundleId, fee);\n\n case 24:\n _ref2 = _context.sent;\n blockNumber = _ref2.blockNumber;\n transactionHash = _ref2.transactionHash;\n return _context.abrupt('return', {\n blockNumber: blockNumber,\n transactionHash: transactionHash,\n challengeId: challengeId\n });\n\n case 28:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function startChallenge(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return startChallenge;\n }()\n }, {\n key: 'markAsExpired',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(challengeId) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.challengeWrapper.isInProgress(challengeId);\n\n case 2:\n if (_context2.sent) {\n _context2.next = 4;\n break;\n }\n\n throw new Error('Challenge ' + challengeId + ' not found');\n\n case 4:\n _context2.next = 6;\n return this.challengeWrapper.challengeIsTimedOut(challengeId);\n\n case 6:\n if (_context2.sent) {\n _context2.next = 8;\n break;\n }\n\n throw new Error('Challenge ' + challengeId + ' cannot be marked as expired');\n\n case 8:\n return _context2.abrupt('return', this.challengeWrapper.markAsExpired(challengeId));\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function markAsExpired(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return markAsExpired;\n }()\n }, {\n key: 'challengeStatus',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(challengeId) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.challengeWrapper.isInProgress(challengeId);\n\n case 2:\n if (_context3.sent) {\n _context3.next = 4;\n break;\n }\n\n return _context3.abrupt('return', { isInProgress: false });\n\n case 4:\n _context3.next = 6;\n return this.challengeWrapper.canResolve(challengeId);\n\n case 6:\n _context3.t0 = _context3.sent;\n _context3.next = 9;\n return this.challengeWrapper.challengeIsTimedOut(challengeId);\n\n case 9:\n _context3.t1 = _context3.sent;\n return _context3.abrupt('return', {\n isInProgress: true,\n canResolve: _context3.t0,\n isTimedOut: _context3.t1\n });\n\n case 11:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function challengeStatus(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return challengeStatus;\n }()\n\n /** @private */\n\n }, {\n key: 'getBalance',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', this.blockchainStateWrapper.getBalance(this.challengeWrapper.defaultAddress));\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getBalance() {\n return _ref5.apply(this, arguments);\n }\n\n return getBalance;\n }()\n }, {\n key: 'nextPenalty',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(nodeAddress) {\n var basicStake, _ref7, penaltiesCount, lastPenaltyTime;\n\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.atlasStakeStoreWrapper.getBasicStake(nodeAddress);\n\n case 2:\n basicStake = _context5.sent;\n\n if (!(basicStake === '0')) {\n _context5.next = 5;\n break;\n }\n\n throw new Error('Node ' + nodeAddress + ' is not onboarded as an ATLAS');\n\n case 5:\n _context5.next = 7;\n return this.atlasStakeStoreWrapper.getPenaltiesHistory(nodeAddress);\n\n case 7:\n _ref7 = _context5.sent;\n penaltiesCount = _ref7.penaltiesCount;\n lastPenaltyTime = _ref7.lastPenaltyTime;\n _context5.next = 12;\n return this.feeWrapper.getPenalty(basicStake, penaltiesCount, lastPenaltyTime);\n\n case 12:\n return _context5.abrupt('return', _context5.sent.penalty);\n\n case 13:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function nextPenalty(_x5) {\n return _ref6.apply(this, arguments);\n }\n\n return nextPenalty;\n }()\n }]);\n return ChallengeActions;\n}();\n\nexports.default = ChallengeActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nvar _package = require('../../package');\n\nvar _constants = require('../constants');\n\nvar _block_reward_functions = require('../utils/block_reward_functions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar DeployActions = function () {\n function DeployActions(deployer, headWrapper, validatorSetWrapper, blockRewardsWrapper, validatorProxyWrapper) {\n (0, _classCallCheck3.default)(this, DeployActions);\n\n this.deployer = deployer;\n this.sender = this.deployer.sender;\n this.headWrapper = headWrapper;\n this.validatorSetWrapper = validatorSetWrapper;\n this.blockRewardsWrapper = blockRewardsWrapper;\n this.validatorProxyWrapper = validatorProxyWrapper;\n this.defaultBlockReward = (0, _block_reward_functions.convertRateToBaseReward)(_constants.DEFAULT_BLOCK_RATE);\n }\n\n (0, _createClass3.default)(DeployActions, [{\n key: 'deployGenesis',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(initialValidators) {\n var baseReward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.defaultBlockReward;\n var headJson, validatorSetJson, blockRewardsJson, head, validatorSet, blockRewards;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n headJson = _contract_jsons2.default.head, validatorSetJson = _contract_jsons2.default.validatorSet, blockRewardsJson = _contract_jsons2.default.blockRewards;\n _context.next = 3;\n return this.deployer.deployContract(headJson, [this.sender], {});\n\n case 3:\n head = _context.sent;\n _context.next = 6;\n return this.deployer.deployContract(validatorSetJson, [this.sender, initialValidators, this.sender], {});\n\n case 6:\n validatorSet = _context.sent;\n _context.next = 9;\n return this.deployer.deployContract(blockRewardsJson, [this.sender, baseReward, this.sender], {});\n\n case 9:\n blockRewards = _context.sent;\n return _context.abrupt('return', { head: head, validatorSet: validatorSet, blockRewards: blockRewards });\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function deployGenesis(_x) {\n return _ref.apply(this, arguments);\n }\n\n return deployGenesis;\n }()\n }, {\n key: 'deployInitial',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var turbo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var overrides, contractsToDeploy, genesisContracts;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n overrides = turbo ? _contract_jsons.contractSuperSpeedJsons : {};\n contractsToDeploy = (0, _extends3.default)({}, _contract_jsons2.default, overrides);\n genesisContracts = {\n head: this.headWrapper.address(),\n validatorSet: this.validatorSetWrapper.address(),\n blockRewards: this.blockRewardsWrapper.address()\n };\n return _context2.abrupt('return', this.deployer.deploy(contractsToDeploy, genesisContracts, [], { multiplexer: { owner: this.sender } }, _package.version));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function deployInitial() {\n return _ref2.apply(this, arguments);\n }\n\n return deployInitial;\n }()\n }, {\n key: 'deployUpdate',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var turbo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var overrides, contractsToDeploy, recycledContracts, genesisContracts;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n overrides = turbo ? _contract_jsons.contractSuperSpeedJsons : {};\n contractsToDeploy = (0, _extends3.default)({}, _contract_jsons2.default, overrides);\n _context3.next = 4;\n return this.recycleStorageContracts();\n\n case 4:\n recycledContracts = _context3.sent;\n genesisContracts = {\n head: this.headWrapper.address(),\n validatorSet: this.validatorSetWrapper.address(),\n blockRewards: this.blockRewardsWrapper.address()\n };\n _context3.next = 8;\n return this.regainGenesisContractsOwnership();\n\n case 8:\n return _context3.abrupt('return', this.deployer.deploy(contractsToDeploy, (0, _extends3.default)({}, genesisContracts, recycledContracts), [], { multiplexer: { owner: this.sender } }, _package.version));\n\n case 9:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function deployUpdate() {\n return _ref3.apply(this, arguments);\n }\n\n return deployUpdate;\n }()\n }, {\n key: 'recycleStorageContracts',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var storageContractNames, recycled, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, contractName;\n\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n storageContractNames = this.headWrapper.availableStorageCatalogueContracts;\n recycled = {};\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context4.prev = 5;\n _iterator = storageContractNames[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context4.next = 21;\n break;\n }\n\n contractName = _step.value;\n _context4.prev = 9;\n _context4.next = 12;\n return this.headWrapper.contractAddressByName(contractName);\n\n case 12:\n recycled[contractName] = _context4.sent;\n _context4.next = 18;\n break;\n\n case 15:\n _context4.prev = 15;\n _context4.t0 = _context4['catch'](9);\n\n console.log(_context4.t0);\n\n case 18:\n _iteratorNormalCompletion = true;\n _context4.next = 7;\n break;\n\n case 21:\n _context4.next = 27;\n break;\n\n case 23:\n _context4.prev = 23;\n _context4.t1 = _context4['catch'](5);\n _didIteratorError = true;\n _iteratorError = _context4.t1;\n\n case 27:\n _context4.prev = 27;\n _context4.prev = 28;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 30:\n _context4.prev = 30;\n\n if (!_didIteratorError) {\n _context4.next = 33;\n break;\n }\n\n throw _iteratorError;\n\n case 33:\n return _context4.finish(30);\n\n case 34:\n return _context4.finish(27);\n\n case 35:\n return _context4.abrupt('return', recycled);\n\n case 36:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[5, 23, 27, 35], [9, 15], [28,, 30, 34]]);\n }));\n\n function recycleStorageContracts() {\n return _ref4.apply(this, arguments);\n }\n\n return recycleStorageContracts;\n }()\n }, {\n key: 'regainGenesisContractsOwnership',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var validatorProxyOwner, validatorProxyAddress, validatorSetOwner, blockRewardsOwner;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.validatorProxyWrapper.getOwner();\n\n case 2:\n validatorProxyOwner = _context5.sent;\n _context5.next = 5;\n return this.validatorProxyWrapper.address();\n\n case 5:\n validatorProxyAddress = _context5.sent;\n _context5.next = 8;\n return this.validatorSetWrapper.getOwner();\n\n case 8:\n validatorSetOwner = _context5.sent;\n\n if (!(validatorSetOwner === this.sender)) {\n _context5.next = 12;\n break;\n }\n\n _context5.next = 18;\n break;\n\n case 12:\n if (!(validatorProxyOwner === this.sender && validatorSetOwner === validatorProxyAddress)) {\n _context5.next = 17;\n break;\n }\n\n _context5.next = 15;\n return this.validatorProxyWrapper.transferOwnershipForValidatorSet(this.sender);\n\n case 15:\n _context5.next = 18;\n break;\n\n case 17:\n throw 'Failed to regain ownership for validator set contract from it\\'s current owner: ' + validatorSetOwner;\n\n case 18:\n _context5.next = 20;\n return this.blockRewardsWrapper.getOwner();\n\n case 20:\n blockRewardsOwner = _context5.sent;\n\n if (!(blockRewardsOwner === this.sender)) {\n _context5.next = 24;\n break;\n }\n\n _context5.next = 30;\n break;\n\n case 24:\n if (!(validatorProxyOwner === this.sender && blockRewardsOwner === validatorProxyAddress)) {\n _context5.next = 29;\n break;\n }\n\n _context5.next = 27;\n return this.validatorProxyWrapper.transferOwnershipForBlockRewards(this.sender);\n\n case 27:\n _context5.next = 30;\n break;\n\n case 29:\n throw 'Failed to regain ownership for block rewards contract from it\\'s current owner: ' + blockRewardsOwner;\n\n case 30:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function regainGenesisContractsOwnership() {\n return _ref5.apply(this, arguments);\n }\n\n return regainGenesisContractsOwnership;\n }()\n }]);\n return DeployActions;\n}();\n\nexports.default = DeployActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar FeesActions = function () {\n function FeesActions(feesWrapper) {\n (0, _classCallCheck3.default)(this, FeesActions);\n\n this.feesWrapper = feesWrapper;\n }\n\n (0, _createClass3.default)(FeesActions, [{\n key: 'transferOwnership',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(newOwnerAddress) {\n var owner;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.feesWrapper.getOwner();\n\n case 2:\n owner = _context.sent;\n\n if (!(owner !== this.feesWrapper.defaultAddress)) {\n _context.next = 5;\n break;\n }\n\n throw new Error('You need to be the owner of the Fees contract to be able to transfer ownership');\n\n case 5:\n return _context.abrupt('return', this.feesWrapper.transferOwnership(newOwnerAddress));\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function transferOwnership(_x) {\n return _ref.apply(this, arguments);\n }\n\n return transferOwnership;\n }()\n }, {\n key: 'setBaseUploadFee',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fee) {\n var owner;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.feesWrapper.getOwner();\n\n case 2:\n owner = _context2.sent;\n\n if (!(owner !== this.feesWrapper.defaultAddress)) {\n _context2.next = 5;\n break;\n }\n\n throw new Error('You need to be the owner of the Fees contract to set an upload fee');\n\n case 5:\n return _context2.abrupt('return', this.feesWrapper.setBaseUploadFee(fee));\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setBaseUploadFee(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return setBaseUploadFee;\n }()\n }, {\n key: 'feeForUpload',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(storagePeriods) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', this.feesWrapper.feeForUpload(storagePeriods));\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function feeForUpload(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return feeForUpload;\n }()\n }, {\n key: 'feeForChallenge',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(storagePeriods) {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', this.feesWrapper.feeForChallenge(storagePeriods));\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function feeForChallenge(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return feeForChallenge;\n }()\n }]);\n return FeesActions;\n}();\n\nexports.default = FeesActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar MultisigActions = function () {\n function MultisigActions(multisigWrapper, multiplexerWrapper, multisigFunctions) {\n (0, _classCallCheck3.default)(this, MultisigActions);\n\n this.multisigWrapper = multisigWrapper;\n this.multiplexerWrapper = multiplexerWrapper;\n this.multisigFunctions = multisigFunctions;\n }\n\n (0, _createClass3.default)(MultisigActions, [{\n key: 'getTransactionCallFromData',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(transactionId) {\n var _ref2, data, name, args;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.multisigWrapper.getTransaction(transactionId);\n\n case 2:\n _ref2 = _context.sent;\n data = _ref2.data;\n name = this.multisigFunctions.getFunctionName(data);\n args = this.multisigFunctions.getFunctionArguments(data);\n return _context.abrupt('return', { name: name, args: args, transactionId: transactionId });\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getTransactionCallFromData(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getTransactionCallFromData;\n }()\n }, {\n key: 'allPendingTransactions',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var requiredConfirmations, allPendingTransactionIds, allPendingTransactions, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, txId, confirmationCount;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.confirmationsRequired();\n\n case 2:\n requiredConfirmations = _context2.sent;\n _context2.next = 5;\n return this.multisigWrapper.getPendingTransaction();\n\n case 5:\n allPendingTransactionIds = _context2.sent;\n allPendingTransactions = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 10;\n _iterator = allPendingTransactionIds[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context2.next = 32;\n break;\n }\n\n txId = _step.value;\n _context2.t0 = parseInt;\n _context2.next = 17;\n return this.multisigWrapper.getConfirmationCount(txId);\n\n case 17:\n _context2.t1 = _context2.sent;\n confirmationCount = (0, _context2.t0)(_context2.t1, 10);\n\n if (!(confirmationCount < requiredConfirmations)) {\n _context2.next = 29;\n break;\n }\n\n _context2.t2 = allPendingTransactions;\n _context2.t3 = _extends3.default;\n _context2.t4 = {};\n _context2.next = 25;\n return this.getTransactionCallFromData(txId);\n\n case 25:\n _context2.t5 = _context2.sent;\n _context2.t6 = {\n confirmations: {\n required: requiredConfirmations,\n confirmed: confirmationCount\n }\n };\n _context2.t7 = (0, _context2.t3)(_context2.t4, _context2.t5, _context2.t6);\n\n _context2.t2.push.call(_context2.t2, _context2.t7);\n\n case 29:\n _iteratorNormalCompletion = true;\n _context2.next = 12;\n break;\n\n case 32:\n _context2.next = 38;\n break;\n\n case 34:\n _context2.prev = 34;\n _context2.t8 = _context2['catch'](10);\n _didIteratorError = true;\n _iteratorError = _context2.t8;\n\n case 38:\n _context2.prev = 38;\n _context2.prev = 39;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 41:\n _context2.prev = 41;\n\n if (!_didIteratorError) {\n _context2.next = 44;\n break;\n }\n\n throw _iteratorError;\n\n case 44:\n return _context2.finish(41);\n\n case 45:\n return _context2.finish(38);\n\n case 46:\n return _context2.abrupt('return', allPendingTransactions);\n\n case 47:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[10, 34, 38, 46], [39,, 41, 45]]);\n }));\n\n function allPendingTransactions() {\n return _ref3.apply(this, arguments);\n }\n\n return allPendingTransactions;\n }()\n }, {\n key: 'confirmationsRequired',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.t0 = parseInt;\n _context3.next = 3;\n return this.multisigWrapper.confirmationsRequired();\n\n case 3:\n _context3.t1 = _context3.sent;\n return _context3.abrupt('return', (0, _context3.t0)(_context3.t1, 10));\n\n case 5:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function confirmationsRequired() {\n return _ref4.apply(this, arguments);\n }\n\n return confirmationsRequired;\n }()\n }, {\n key: 'approvableTransactions',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var allPendingTransactions, approvableTransactions, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, transaction, confirmations;\n\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.allPendingTransactions();\n\n case 2:\n allPendingTransactions = _context4.sent;\n approvableTransactions = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context4.prev = 7;\n _iterator2 = allPendingTransactions[Symbol.iterator]();\n\n case 9:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context4.next = 18;\n break;\n }\n\n transaction = _step2.value;\n _context4.next = 13;\n return this.multisigWrapper.getConfirmations(transaction.transactionId);\n\n case 13:\n confirmations = _context4.sent;\n\n if (!confirmations.includes(this.multisigWrapper.defaultAddress)) {\n approvableTransactions.push(transaction);\n }\n\n case 15:\n _iteratorNormalCompletion2 = true;\n _context4.next = 9;\n break;\n\n case 18:\n _context4.next = 24;\n break;\n\n case 20:\n _context4.prev = 20;\n _context4.t0 = _context4['catch'](7);\n _didIteratorError2 = true;\n _iteratorError2 = _context4.t0;\n\n case 24:\n _context4.prev = 24;\n _context4.prev = 25;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 27:\n _context4.prev = 27;\n\n if (!_didIteratorError2) {\n _context4.next = 30;\n break;\n }\n\n throw _iteratorError2;\n\n case 30:\n return _context4.finish(27);\n\n case 31:\n return _context4.finish(24);\n\n case 32:\n return _context4.abrupt('return', approvableTransactions);\n\n case 33:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[7, 20, 24, 32], [25,, 27, 31]]);\n }));\n\n function approvableTransactions() {\n return _ref5.apply(this, arguments);\n }\n\n return approvableTransactions;\n }()\n }, {\n key: 'checkIfTransactionDitNotFail',\n value: function checkIfTransactionDitNotFail(transactionData) {\n if (transactionData.events.ExecutionFailure) {\n throw new Error('Transaction #' + transactionData.events.ExecutionFailure.returnValues.transactionId + ' has been rejected');\n }\n return transactionData;\n }\n }, {\n key: 'submitTransaction',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(data) {\n var senderAddress = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.multiplexerWrapper.address();\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.t0 = this;\n _context5.next = 3;\n return this.multisigWrapper.submitTransaction(senderAddress, '0', data);\n\n case 3:\n _context5.t1 = _context5.sent;\n return _context5.abrupt('return', _context5.t0.checkIfTransactionDitNotFail.call(_context5.t0, _context5.t1));\n\n case 5:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function submitTransaction(_x2) {\n return _ref6.apply(this, arguments);\n }\n\n return submitTransaction;\n }()\n }, {\n key: 'transferMultiplexerOwnership',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(address) {\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.t0 = this;\n _context6.next = 3;\n return this.multiplexerWrapper.transferOwnership(address);\n\n case 3:\n _context6.t1 = _context6.sent;\n return _context6.abrupt('return', _context6.t0.submitTransaction.call(_context6.t0, _context6.t1));\n\n case 5:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function transferMultiplexerOwnership(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return transferMultiplexerOwnership;\n }()\n }, {\n key: 'transferContractsOwnership',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(address) {\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.t0 = this;\n _context7.next = 3;\n return this.multiplexerWrapper.transferContractsOwnership(address);\n\n case 3:\n _context7.t1 = _context7.sent;\n return _context7.abrupt('return', _context7.t0.submitTransaction.call(_context7.t0, _context7.t1));\n\n case 5:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function transferContractsOwnership(_x5) {\n return _ref8.apply(this, arguments);\n }\n\n return transferContractsOwnership;\n }()\n }, {\n key: 'changeContext',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(contextAddress) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.t0 = this;\n _context8.next = 3;\n return this.multiplexerWrapper.changeContext(contextAddress);\n\n case 3:\n _context8.t1 = _context8.sent;\n return _context8.abrupt('return', _context8.t0.submitTransaction.call(_context8.t0, _context8.t1));\n\n case 5:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function changeContext(_x6) {\n return _ref9.apply(this, arguments);\n }\n\n return changeContext;\n }()\n }, {\n key: 'addToWhitelist',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(candidateAddress, role, deposit) {\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.t0 = this;\n _context9.next = 3;\n return this.multiplexerWrapper.addToWhitelist(candidateAddress, role, deposit);\n\n case 3:\n _context9.t1 = _context9.sent;\n return _context9.abrupt('return', _context9.t0.submitTransaction.call(_context9.t0, _context9.t1));\n\n case 5:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function addToWhitelist(_x7, _x8, _x9) {\n return _ref10.apply(this, arguments);\n }\n\n return addToWhitelist;\n }()\n }, {\n key: 'removeFromWhitelist',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(candidateAddress) {\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.t0 = this;\n _context10.next = 3;\n return this.multiplexerWrapper.removeFromWhitelist(candidateAddress);\n\n case 3:\n _context10.t1 = _context10.sent;\n return _context10.abrupt('return', _context10.t0.submitTransaction.call(_context10.t0, _context10.t1));\n\n case 5:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function removeFromWhitelist(_x10) {\n return _ref11.apply(this, arguments);\n }\n\n return removeFromWhitelist;\n }()\n }, {\n key: 'retireApollo',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(apolloAddress) {\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.t0 = this;\n _context11.next = 3;\n return this.multiplexerWrapper.retireApollo(apolloAddress);\n\n case 3:\n _context11.t1 = _context11.sent;\n return _context11.abrupt('return', _context11.t0.submitTransaction.call(_context11.t0, _context11.t1));\n\n case 5:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function retireApollo(_x11) {\n return _ref12.apply(this, arguments);\n }\n\n return retireApollo;\n }()\n }, {\n key: 'setBaseUploadFee',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(fee) {\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.t0 = this;\n _context12.next = 3;\n return this.multiplexerWrapper.setBaseUploadFee(fee);\n\n case 3:\n _context12.t1 = _context12.sent;\n return _context12.abrupt('return', _context12.t0.submitTransaction.call(_context12.t0, _context12.t1));\n\n case 5:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function setBaseUploadFee(_x12) {\n return _ref13.apply(this, arguments);\n }\n\n return setBaseUploadFee;\n }()\n }, {\n key: 'setBaseReward',\n value: function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(newBaseReward) {\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.t0 = this;\n _context13.next = 3;\n return this.multiplexerWrapper.setBaseReward(newBaseReward);\n\n case 3:\n _context13.t1 = _context13.sent;\n return _context13.abrupt('return', _context13.t0.submitTransaction.call(_context13.t0, _context13.t1));\n\n case 5:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function setBaseReward(_x13) {\n return _ref14.apply(this, arguments);\n }\n\n return setBaseReward;\n }()\n }, {\n key: 'transferOwnershipForValidatorSet',\n value: function () {\n var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(address) {\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.t0 = this;\n _context14.next = 3;\n return this.multiplexerWrapper.transferOwnershipForValidatorSet(address);\n\n case 3:\n _context14.t1 = _context14.sent;\n return _context14.abrupt('return', _context14.t0.submitTransaction.call(_context14.t0, _context14.t1));\n\n case 5:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function transferOwnershipForValidatorSet(_x14) {\n return _ref15.apply(this, arguments);\n }\n\n return transferOwnershipForValidatorSet;\n }()\n }, {\n key: 'transferOwnershipForBlockRewards',\n value: function () {\n var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(address) {\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.t0 = this;\n _context15.next = 3;\n return this.multiplexerWrapper.transferOwnershipForBlockRewards(address);\n\n case 3:\n _context15.t1 = _context15.sent;\n return _context15.abrupt('return', _context15.t0.submitTransaction.call(_context15.t0, _context15.t1));\n\n case 5:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function transferOwnershipForBlockRewards(_x15) {\n return _ref16.apply(this, arguments);\n }\n\n return transferOwnershipForBlockRewards;\n }()\n }, {\n key: 'confirmTransaction',\n value: function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(transactionId) {\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.t0 = this;\n _context16.next = 3;\n return this.multisigWrapper.confirmTransaction(transactionId);\n\n case 3:\n _context16.t1 = _context16.sent;\n return _context16.abrupt('return', _context16.t0.checkIfTransactionDitNotFail.call(_context16.t0, _context16.t1));\n\n case 5:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function confirmTransaction(_x16) {\n return _ref17.apply(this, arguments);\n }\n\n return confirmTransaction;\n }()\n }, {\n key: 'revokeConfirmation',\n value: function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(transactionId) {\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n return _context17.abrupt('return', this.multisigWrapper.revokeConfirmation(transactionId));\n\n case 1:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function revokeConfirmation(_x17) {\n return _ref18.apply(this, arguments);\n }\n\n return revokeConfirmation;\n }()\n }, {\n key: 'addOwner',\n value: function () {\n var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(newOwnerAddress) {\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.t0 = this;\n _context18.next = 3;\n return this.multisigWrapper.addOwner(newOwnerAddress);\n\n case 3:\n _context18.t1 = _context18.sent;\n _context18.t2 = this.multisigWrapper.address;\n return _context18.abrupt('return', _context18.t0.submitTransaction.call(_context18.t0, _context18.t1, _context18.t2));\n\n case 6:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function addOwner(_x18) {\n return _ref19.apply(this, arguments);\n }\n\n return addOwner;\n }()\n }, {\n key: 'removeOwner',\n value: function () {\n var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19(ownerAddress) {\n return _regenerator2.default.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _context19.t0 = this;\n _context19.next = 3;\n return this.multisigWrapper.removeOwner(ownerAddress);\n\n case 3:\n _context19.t1 = _context19.sent;\n _context19.t2 = this.multisigWrapper.address;\n return _context19.abrupt('return', _context19.t0.submitTransaction.call(_context19.t0, _context19.t1, _context19.t2));\n\n case 6:\n case 'end':\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function removeOwner(_x19) {\n return _ref20.apply(this, arguments);\n }\n\n return removeOwner;\n }()\n }, {\n key: 'changeRequirement',\n value: function () {\n var _ref21 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(newRequiredConfirmationsCount) {\n return _regenerator2.default.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n _context20.t0 = this;\n _context20.next = 3;\n return this.multisigWrapper.changeRequirement(newRequiredConfirmationsCount);\n\n case 3:\n _context20.t1 = _context20.sent;\n _context20.t2 = this.multisigWrapper.address;\n return _context20.abrupt('return', _context20.t0.submitTransaction.call(_context20.t0, _context20.t1, _context20.t2));\n\n case 6:\n case 'end':\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function changeRequirement(_x20) {\n return _ref21.apply(this, arguments);\n }\n\n return changeRequirement;\n }()\n }, {\n key: 'getOwners',\n value: function () {\n var _ref22 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee21() {\n return _regenerator2.default.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n return _context21.abrupt('return', this.multisigWrapper.getOwners());\n\n case 1:\n case 'end':\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function getOwners() {\n return _ref22.apply(this, arguments);\n }\n\n return getOwners;\n }()\n }, {\n key: 'setDeveloper',\n value: function () {\n var _ref23 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee22(developer) {\n return _regenerator2.default.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n _context22.t0 = this;\n _context22.next = 3;\n return this.multiplexerWrapper.setDeveloper(developer);\n\n case 3:\n _context22.t1 = _context22.sent;\n return _context22.abrupt('return', _context22.t0.submitTransaction.call(_context22.t0, _context22.t1));\n\n case 5:\n case 'end':\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function setDeveloper(_x21) {\n return _ref23.apply(this, arguments);\n }\n\n return setDeveloper;\n }()\n }, {\n key: 'setDeveloperFee',\n value: function () {\n var _ref24 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee23(fee) {\n return _regenerator2.default.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n _context23.t0 = this;\n _context23.next = 3;\n return this.multiplexerWrapper.setDeveloperFee(fee);\n\n case 3:\n _context23.t1 = _context23.sent;\n return _context23.abrupt('return', _context23.t0.submitTransaction.call(_context23.t0, _context23.t1));\n\n case 5:\n case 'end':\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function setDeveloperFee(_x22) {\n return _ref24.apply(this, arguments);\n }\n\n return setDeveloperFee;\n }()\n }, {\n key: 'setSupportFee',\n value: function () {\n var _ref25 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee24(support, fee) {\n return _regenerator2.default.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n _context24.t0 = this;\n _context24.next = 3;\n return this.multiplexerWrapper.setSupportFee(support, fee);\n\n case 3:\n _context24.t1 = _context24.sent;\n return _context24.abrupt('return', _context24.t0.submitTransaction.call(_context24.t0, _context24.t1));\n\n case 5:\n case 'end':\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function setSupportFee(_x23, _x24) {\n return _ref25.apply(this, arguments);\n }\n\n return setSupportFee;\n }()\n }, {\n key: 'addAdmin',\n value: function () {\n var _ref26 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee25(admin) {\n return _regenerator2.default.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n _context25.t0 = this;\n _context25.next = 3;\n return this.multiplexerWrapper.addAdmin(admin);\n\n case 3:\n _context25.t1 = _context25.sent;\n return _context25.abrupt('return', _context25.t0.submitTransaction.call(_context25.t0, _context25.t1));\n\n case 5:\n case 'end':\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function addAdmin(_x25) {\n return _ref26.apply(this, arguments);\n }\n\n return addAdmin;\n }()\n }, {\n key: 'removeAdmin',\n value: function () {\n var _ref27 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee26(admin) {\n return _regenerator2.default.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n _context26.t0 = this;\n _context26.next = 3;\n return this.multiplexerWrapper.removeAdmin(admin);\n\n case 3:\n _context26.t1 = _context26.sent;\n return _context26.abrupt('return', _context26.t0.submitTransaction.call(_context26.t0, _context26.t1));\n\n case 5:\n case 'end':\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function removeAdmin(_x26) {\n return _ref27.apply(this, arguments);\n }\n\n return removeAdmin;\n }()\n }, {\n key: 'addPool',\n value: function () {\n var _ref28 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee27(pool) {\n return _regenerator2.default.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n _context27.t0 = this;\n _context27.next = 3;\n return this.multiplexerWrapper.addPool(pool);\n\n case 3:\n _context27.t1 = _context27.sent;\n return _context27.abrupt('return', _context27.t0.submitTransaction.call(_context27.t0, _context27.t1));\n\n case 5:\n case 'end':\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function addPool(_x27) {\n return _ref28.apply(this, arguments);\n }\n\n return addPool;\n }()\n }, {\n key: 'removePool',\n value: function () {\n var _ref29 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee28(pool) {\n return _regenerator2.default.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n _context28.t0 = this;\n _context28.next = 3;\n return this.multiplexerWrapper.removePool(pool);\n\n case 3:\n _context28.t1 = _context28.sent;\n return _context28.abrupt('return', _context28.t0.submitTransaction.call(_context28.t0, _context28.t1));\n\n case 5:\n case 'end':\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function removePool(_x28) {\n return _ref29.apply(this, arguments);\n }\n\n return removePool;\n }()\n }]);\n return MultisigActions;\n}();\n\nexports.default = MultisigActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _constants = require('../constants');\n\nvar _web3_tools = require('../utils/web3_tools');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar OnboardActions = function () {\n function OnboardActions(kycWhitelistWrapper, rolesWrapper, atlasStakeWrapper) {\n (0, _classCallCheck3.default)(this, OnboardActions);\n\n this.kycWhitelistWrapper = kycWhitelistWrapper;\n this.rolesWrapper = rolesWrapper;\n this.atlasStakeWrapper = atlasStakeWrapper;\n }\n\n (0, _createClass3.default)(OnboardActions, [{\n key: 'onboardAsAtlas',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(address, stakeAmount, url) {\n var roles;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.validateWhitelistedForRole(address, _constants.ATLAS);\n\n case 2:\n _context.next = 4;\n return this.validateAtlasStakeAmount(address, stakeAmount);\n\n case 4:\n roles = this.rolesWrapper;\n _context.next = 7;\n return roles.onboardAsAtlas(address, stakeAmount, url);\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onboardAsAtlas(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return onboardAsAtlas;\n }()\n }, {\n key: 'onboardAsHermes',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address, url) {\n var roles;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.validateWhitelistedForRole(address, _constants.HERMES);\n\n case 2:\n roles = this.rolesWrapper;\n _context2.next = 5;\n return roles.onboardAsHermes(address, url);\n\n case 5:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function onboardAsHermes(_x4, _x5) {\n return _ref2.apply(this, arguments);\n }\n\n return onboardAsHermes;\n }()\n }, {\n key: 'onboardAsApollo',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(address, depositAmount) {\n var roles;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.validateWhitelistedForRole(address, _constants.APOLLO);\n\n case 2:\n _context3.next = 4;\n return this.validateApolloDepositAmount(address, depositAmount);\n\n case 4:\n roles = this.rolesWrapper;\n _context3.next = 7;\n return roles.onboardAsApollo(address, depositAmount);\n\n case 7:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function onboardAsApollo(_x6, _x7) {\n return _ref3.apply(this, arguments);\n }\n\n return onboardAsApollo;\n }()\n }, {\n key: 'getOnboardedRole',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(address) {\n var roles;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n roles = this.rolesWrapper;\n _context4.next = 3;\n return roles.onboardedRole(address);\n\n case 3:\n _context4.t0 = _context4.sent;\n _context4.next = 6;\n return roles.nodeUrl(address);\n\n case 6:\n _context4.t1 = _context4.sent;\n return _context4.abrupt('return', {\n role: _context4.t0,\n url: _context4.t1\n });\n\n case 8:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getOnboardedRole(_x8) {\n return _ref4.apply(this, arguments);\n }\n\n return getOnboardedRole;\n }()\n }, {\n key: 'validateWhitelistedForRole',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(address, role) {\n var kyc;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n kyc = this.kycWhitelistWrapper;\n _context5.next = 3;\n return kyc.hasRoleAssigned(address, role);\n\n case 3:\n if (_context5.sent) {\n _context5.next = 5;\n break;\n }\n\n throw new Error('Address ' + address + ' is not white-listed for the ' + _constants.ROLE_REVERSE_CODES[role] + ' role.');\n\n case 5:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function validateWhitelistedForRole(_x9, _x10) {\n return _ref5.apply(this, arguments);\n }\n\n return validateWhitelistedForRole;\n }()\n }, {\n key: 'validateAtlasStakeAmount',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(address, amount) {\n var requiredAmount;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.requiredAmount(address);\n\n case 2:\n requiredAmount = _context6.sent;\n\n if (requiredAmount.eq(_web3_tools.utils.toBN(amount))) {\n _context6.next = 5;\n break;\n }\n\n throw new Error('Address ' + address + ' requires a stake of ' + requiredAmount + ' but ' + amount + ' provided.');\n\n case 5:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function validateAtlasStakeAmount(_x11, _x12) {\n return _ref6.apply(this, arguments);\n }\n\n return validateAtlasStakeAmount;\n }()\n }, {\n key: 'validateApolloDepositAmount',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(address, amount) {\n var requiredAmount;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.requiredAmount(address);\n\n case 2:\n requiredAmount = _context7.sent;\n\n if (!requiredAmount.gt(_web3_tools.utils.toBN(amount))) {\n _context7.next = 5;\n break;\n }\n\n throw new Error('Address ' + address + ' requires a minimum deposit of ' + requiredAmount + ' but ' + amount + ' provided.');\n\n case 5:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function validateApolloDepositAmount(_x13, _x14) {\n return _ref7.apply(this, arguments);\n }\n\n return validateApolloDepositAmount;\n }()\n }, {\n key: 'requiredAmount',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(address) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.t0 = _web3_tools.utils;\n _context8.next = 3;\n return this.kycWhitelistWrapper.getRequiredDeposit(address);\n\n case 3:\n _context8.t1 = _context8.sent;\n return _context8.abrupt('return', _context8.t0.toBN.call(_context8.t0, _context8.t1));\n\n case 5:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function requiredAmount(_x15) {\n return _ref8.apply(this, arguments);\n }\n\n return requiredAmount;\n }()\n }, {\n key: 'retire',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n var role;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.rolesWrapper.onboardedRole(this.rolesWrapper.defaultAddress);\n\n case 2:\n role = _context9.sent;\n _context9.t0 = role;\n _context9.next = _context9.t0 === _constants.ATLAS ? 6 : _context9.t0 === _constants.APOLLO ? 11 : _context9.t0 === _constants.HERMES ? 12 : 13;\n break;\n\n case 6:\n _context9.next = 8;\n return this.atlasStakeWrapper.isShelteringAny(this.atlasStakeWrapper.defaultAddress);\n\n case 8:\n if (!_context9.sent) {\n _context9.next = 10;\n break;\n }\n\n throw new Error('Cannot retire while still sheltering bundles');\n\n case 10:\n return _context9.abrupt('return', this.rolesWrapper.retireAtlas());\n\n case 11:\n return _context9.abrupt('return', this.rolesWrapper.retireApollo());\n\n case 12:\n return _context9.abrupt('return', this.rolesWrapper.retireHermes());\n\n case 13:\n throw new Error('The node is not onboarded');\n\n case 14:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function retire() {\n return _ref9.apply(this, arguments);\n }\n\n return retire;\n }()\n }]);\n return OnboardActions;\n}();\n\nexports.default = OnboardActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bn = require('bn.js');\n\nvar _bn2 = _interopRequireDefault(_bn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FIRST_MEANINGFUL_PERIOD = 630; // May 2018\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar PayoutsActions = function () {\n function PayoutsActions(timeWrapper, payoutsWrapper) {\n (0, _classCallCheck3.default)(this, PayoutsActions);\n\n this.timeWrapper = timeWrapper;\n this.payoutsWrapper = payoutsWrapper;\n }\n\n (0, _createClass3.default)(PayoutsActions, [{\n key: 'currentPayoutPeriod',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', this.timeWrapper.currentPayoutPeriod());\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function currentPayoutPeriod() {\n return _ref.apply(this, arguments);\n }\n\n return currentPayoutPeriod;\n }()\n }, {\n key: 'nextPayoutPeriodStart',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var nextPayoutPeriod;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.t0 = parseInt;\n _context2.next = 3;\n return this.currentPayoutPeriod();\n\n case 3:\n _context2.t1 = _context2.sent;\n _context2.t2 = (0, _context2.t0)(_context2.t1, 10);\n nextPayoutPeriod = _context2.t2 + 1;\n return _context2.abrupt('return', this.timeWrapper.payoutPeriodStart(nextPayoutPeriod));\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function nextPayoutPeriodStart() {\n return _ref2.apply(this, arguments);\n }\n\n return nextPayoutPeriodStart;\n }()\n }, {\n key: 'getTotalAvailablePayout',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var currentPayout, availablePayout, ind;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.t0 = parseInt;\n _context3.next = 3;\n return this.currentPayoutPeriod();\n\n case 3:\n _context3.t1 = _context3.sent;\n currentPayout = (0, _context3.t0)(_context3.t1, 10);\n availablePayout = new _bn2.default('0');\n ind = FIRST_MEANINGFUL_PERIOD;\n\n case 7:\n if (!(ind < currentPayout)) {\n _context3.next = 18;\n break;\n }\n\n _context3.t2 = availablePayout;\n _context3.t3 = _bn2.default;\n _context3.next = 12;\n return this.payoutsWrapper.availablePayoutAmountInPeriod(ind);\n\n case 12:\n _context3.t4 = _context3.sent;\n _context3.t5 = new _context3.t3(_context3.t4);\n availablePayout = _context3.t2.add.call(_context3.t2, _context3.t5);\n\n case 15:\n ind++;\n _context3.next = 7;\n break;\n\n case 18:\n return _context3.abrupt('return', availablePayout.toString());\n\n case 19:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getTotalAvailablePayout() {\n return _ref3.apply(this, arguments);\n }\n\n return getTotalAvailablePayout;\n }()\n }, {\n key: 'withdraw',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.payoutsWrapper.withdraw();\n\n case 2:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function withdraw() {\n return _ref4.apply(this, arguments);\n }\n\n return withdraw;\n }()\n }]);\n return PayoutsActions;\n}();\n\nexports.default = PayoutsActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bn = require('bn.js');\n\nvar _bn2 = _interopRequireDefault(_bn);\n\nvar _errors = require('../errors/errors');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar UploadActions = function () {\n function UploadActions(uploadsWrapper, feesWrapper, shelteringWrapper, blockchainStateWrapper, challengesEventEmitterWrapper) {\n var lowFundsWarningAmount = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '0';\n (0, _classCallCheck3.default)(this, UploadActions);\n\n this.uploadsWrapper = uploadsWrapper;\n this.feesWrapper = feesWrapper;\n this.shelteringWrapper = shelteringWrapper;\n this.blockchainStateWrapper = blockchainStateWrapper;\n this.challengesEventEmitterWrapper = challengesEventEmitterWrapper;\n this.lowFundsWarningAmount = new _bn2.default(lowFundsWarningAmount);\n }\n\n (0, _createClass3.default)(UploadActions, [{\n key: 'uploadBundle',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(bundleId, storagePeriods) {\n var fee, balance, _ref2, blockNumber, transactionHash, timestamp;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.feesWrapper.feeForUpload(storagePeriods);\n\n case 2:\n fee = _context.sent;\n _context.next = 5;\n return this.getBalance();\n\n case 5:\n balance = _context.sent;\n\n if (!new _bn2.default(balance).lte(new _bn2.default(fee))) {\n _context.next = 8;\n break;\n }\n\n throw new _errors.InsufficientFundsToUploadBundleError(fee, balance);\n\n case 8:\n _context.next = 10;\n return this.uploadsWrapper.registerBundle(bundleId, fee, storagePeriods);\n\n case 10:\n _ref2 = _context.sent;\n blockNumber = _ref2.blockNumber;\n transactionHash = _ref2.transactionHash;\n _context.next = 15;\n return this.blockchainStateWrapper.getBlockTimestamp(blockNumber);\n\n case 15:\n timestamp = _context.sent;\n return _context.abrupt('return', {\n blockNumber: blockNumber,\n transactionHash: transactionHash,\n timestamp: timestamp,\n lowBalanceWarning: new _bn2.default(balance).lt(this.lowFundsWarningAmount),\n approximateBalanceAfterUpload: new _bn2.default(balance).sub(new _bn2.default(fee)).toString()\n });\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function uploadBundle(_x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return uploadBundle;\n }()\n }, {\n key: 'getBalance',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', this.blockchainStateWrapper.getBalance(this.uploadsWrapper.defaultAddress));\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getBalance() {\n return _ref3.apply(this, arguments);\n }\n\n return getBalance;\n }()\n }, {\n key: 'getBundleUploadData',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(bundleId) {\n var uploadBlock, timestamp, events, _events$find, transactionHash;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.shelteringWrapper.getBundleUploadBlockNumber(bundleId);\n\n case 2:\n uploadBlock = _context3.sent;\n\n if (uploadBlock) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt('return', null);\n\n case 5:\n _context3.next = 7;\n return this.blockchainStateWrapper.getBlockTimestamp(uploadBlock);\n\n case 7:\n timestamp = _context3.sent;\n _context3.next = 10;\n return this.challengesEventEmitterWrapper.challenges(uploadBlock, uploadBlock);\n\n case 10:\n events = _context3.sent;\n _events$find = events.find(function (_ref5) {\n var returnValues = _ref5.returnValues;\n return returnValues.bundleId === bundleId;\n }), transactionHash = _events$find.transactionHash;\n return _context3.abrupt('return', { blockNumber: uploadBlock, transactionHash: transactionHash, timestamp: timestamp });\n\n case 13:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getBundleUploadData(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return getBundleUploadData;\n }()\n }]);\n return UploadActions;\n}();\n\nexports.default = UploadActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar WhitelistActions = function () {\n function WhitelistActions(kycWhitelistWrapper) {\n (0, _classCallCheck3.default)(this, WhitelistActions);\n\n this.kycWhitelistWrapper = kycWhitelistWrapper;\n }\n\n (0, _createClass3.default)(WhitelistActions, [{\n key: 'add',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(address, role, requiredDeposit) {\n var kycWhitelist, owner;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n kycWhitelist = this.kycWhitelistWrapper;\n _context.next = 3;\n return kycWhitelist.getOwner();\n\n case 3:\n owner = _context.sent;\n\n if (!(owner !== kycWhitelist.defaultAddress)) {\n _context.next = 6;\n break;\n }\n\n throw new Error('You need to be the owner of the KYC whitelist to perform a add action');\n\n case 6:\n _context.next = 8;\n return kycWhitelist.isWhitelisted(address);\n\n case 8:\n if (!_context.sent) {\n _context.next = 10;\n break;\n }\n\n throw new Error('The provided address ' + address + ' is already whitelisted');\n\n case 10:\n _context.next = 12;\n return kycWhitelist.add(address, role, requiredDeposit);\n\n case 12:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function add(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return add;\n }()\n }, {\n key: 'remove',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address) {\n var kycWhitelist, owner;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n kycWhitelist = this.kycWhitelistWrapper;\n _context2.next = 3;\n return kycWhitelist.getOwner();\n\n case 3:\n owner = _context2.sent;\n\n if (!(owner !== kycWhitelist.defaultAddress)) {\n _context2.next = 6;\n break;\n }\n\n throw new Error('You need to be the owner of the KYC whitelist to perform this action');\n\n case 6:\n _context2.next = 8;\n return kycWhitelist.isWhitelisted(address);\n\n case 8:\n if (_context2.sent) {\n _context2.next = 10;\n break;\n }\n\n throw new Error('Address ' + address + ' is not whitelisted');\n\n case 10:\n _context2.next = 12;\n return kycWhitelist.remove(address);\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function remove(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return remove;\n }()\n }, {\n key: 'get',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(address) {\n var kycWhitelist;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n kycWhitelist = this.kycWhitelistWrapper;\n _context3.next = 3;\n return kycWhitelist.getRoleAssigned(address);\n\n case 3:\n _context3.t0 = _context3.sent;\n _context3.next = 6;\n return kycWhitelist.getRequiredDeposit(address);\n\n case 6:\n _context3.t1 = _context3.sent;\n return _context3.abrupt('return', {\n role: _context3.t0,\n requiredDeposit: _context3.t1\n });\n\n case 8:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function get(_x5) {\n return _ref3.apply(this, arguments);\n }\n\n return get;\n }()\n }, {\n key: 'transferOwnership',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(newOwnerAddress) {\n var kycWhitelist, owner;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n kycWhitelist = this.kycWhitelistWrapper;\n _context4.next = 3;\n return kycWhitelist.getOwner();\n\n case 3:\n owner = _context4.sent;\n\n if (!(owner !== kycWhitelist.defaultAddress)) {\n _context4.next = 6;\n break;\n }\n\n throw new Error('You need to be the owner of the KycWhitelist contract to be able to transfer ownership');\n\n case 6:\n return _context4.abrupt('return', kycWhitelist.transferOwnership(newOwnerAddress));\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function transferOwnership(_x6) {\n return _ref4.apply(this, arguments);\n }\n\n return transferOwnership;\n }()\n }]);\n return WhitelistActions;\n}();\n\nexports.default = WhitelistActions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BLOCKS_PER_YEAR = exports.TOTAL_AMB_SUPPLY = exports.DEFAULT_BLOCK_RATE = exports.ATLAS3_RELATIVE_STRENGTH = exports.ATLAS2_RELATIVE_STRENGTH = exports.ATLAS1_RELATIVE_STRENGTH = exports.FIRST_PHASE_DURATION = exports.ROUND_DURATION = exports.DMP_PRECISION = exports.APPROVALS_REQUIRED = exports.ZERO_ADDRESS = exports.APOLLO_DEPOSIT = exports.ATLAS3_STAKE = exports.ATLAS2_STAKE = exports.ATLAS1_STAKE = exports.ROLE_REVERSE_CODES = exports.ROLE_CODES = exports.APOLLO = exports.HERMES = exports.ATLAS = exports.NONE = exports.MIN_BLOCK_TIME = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _ROLE_REVERSE_CODES; /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nvar _web3_tools = require('./utils/web3_tools');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MIN_BLOCK_TIME = exports.MIN_BLOCK_TIME = 5;\n\nvar NONE = exports.NONE = '0';\nvar ATLAS = exports.ATLAS = '1';\nvar HERMES = exports.HERMES = '2';\nvar APOLLO = exports.APOLLO = '3';\nvar ROLE_CODES = exports.ROLE_CODES = { NONE: NONE, ATLAS: ATLAS, HERMES: HERMES, APOLLO: APOLLO };\nvar ROLE_REVERSE_CODES = exports.ROLE_REVERSE_CODES = (_ROLE_REVERSE_CODES = {}, (0, _defineProperty3.default)(_ROLE_REVERSE_CODES, NONE, 'NONE'), (0, _defineProperty3.default)(_ROLE_REVERSE_CODES, ATLAS, 'ATLAS'), (0, _defineProperty3.default)(_ROLE_REVERSE_CODES, HERMES, 'HERMES'), (0, _defineProperty3.default)(_ROLE_REVERSE_CODES, APOLLO, 'APOLLO'), _ROLE_REVERSE_CODES);\n\nvar ATLAS1_STAKE = exports.ATLAS1_STAKE = _web3_tools.utils.toWei('10000');\nvar ATLAS2_STAKE = exports.ATLAS2_STAKE = _web3_tools.utils.toWei('30000');\nvar ATLAS3_STAKE = exports.ATLAS3_STAKE = _web3_tools.utils.toWei('75000');\nvar APOLLO_DEPOSIT = exports.APOLLO_DEPOSIT = _web3_tools.utils.toWei('250000');\n\nvar ZERO_ADDRESS = exports.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\nvar APPROVALS_REQUIRED = exports.APPROVALS_REQUIRED = 4;\n\nvar DMP_PRECISION = exports.DMP_PRECISION = 10000;\nvar ROUND_DURATION = exports.ROUND_DURATION = 5 * 60;\nvar FIRST_PHASE_DURATION = exports.FIRST_PHASE_DURATION = 2 * 60 * 60;\nvar ATLAS1_RELATIVE_STRENGTH = exports.ATLAS1_RELATIVE_STRENGTH = 1;\nvar ATLAS2_RELATIVE_STRENGTH = exports.ATLAS2_RELATIVE_STRENGTH = 4;\nvar ATLAS3_RELATIVE_STRENGTH = exports.ATLAS3_RELATIVE_STRENGTH = 12;\n\nvar DEFAULT_BLOCK_RATE = exports.DEFAULT_BLOCK_RATE = 2;\nvar TOTAL_AMB_SUPPLY = exports.TOTAL_AMB_SUPPLY = '361477437535701402159030000';\nvar BLOCKS_PER_YEAR = exports.BLOCKS_PER_YEAR = 365 * 24 * 60 * 60 / 5;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pool = exports.multisig = exports.contractSuperSpeedJsons = undefined;\n\nvar _Head = require('./contracts/Head.json');\n\nvar _Head2 = _interopRequireDefault(_Head);\n\nvar _Context = require('./contracts/Context.json');\n\nvar _Context2 = _interopRequireDefault(_Context);\n\nvar _Catalogue = require('./contracts/Catalogue.json');\n\nvar _Catalogue2 = _interopRequireDefault(_Catalogue);\n\nvar _StorageCatalogue = require('./contracts/StorageCatalogue.json');\n\nvar _StorageCatalogue2 = _interopRequireDefault(_StorageCatalogue);\n\nvar _ValidatorSet = require('./contracts/ValidatorSet.json');\n\nvar _ValidatorSet2 = _interopRequireDefault(_ValidatorSet);\n\nvar _BlockRewards = require('./contracts/BlockRewards.json');\n\nvar _BlockRewards2 = _interopRequireDefault(_BlockRewards);\n\nvar _AtlasStakeStore = require('./contracts/AtlasStakeStore.json');\n\nvar _AtlasStakeStore2 = _interopRequireDefault(_AtlasStakeStore);\n\nvar _BundleStore = require('./contracts/BundleStore.json');\n\nvar _BundleStore2 = _interopRequireDefault(_BundleStore);\n\nvar _Roles = require('./contracts/Roles.json');\n\nvar _Roles2 = _interopRequireDefault(_Roles);\n\nvar _KycWhitelist = require('./contracts/KycWhitelist.json');\n\nvar _KycWhitelist2 = _interopRequireDefault(_KycWhitelist);\n\nvar _KycWhitelistStore = require('./contracts/KycWhitelistStore.json');\n\nvar _KycWhitelistStore2 = _interopRequireDefault(_KycWhitelistStore);\n\nvar _Fees = require('./contracts/Fees.json');\n\nvar _Fees2 = _interopRequireDefault(_Fees);\n\nvar _Challenges = require('./contracts/Challenges.json');\n\nvar _Challenges2 = _interopRequireDefault(_Challenges);\n\nvar _ChallengesStore = require('./contracts/ChallengesStore.json');\n\nvar _ChallengesStore2 = _interopRequireDefault(_ChallengesStore);\n\nvar _Sheltering = require('./contracts/Sheltering.json');\n\nvar _Sheltering2 = _interopRequireDefault(_Sheltering);\n\nvar _PayoutsStore = require('./contracts/PayoutsStore.json');\n\nvar _PayoutsStore2 = _interopRequireDefault(_PayoutsStore);\n\nvar _RolesStore = require('./contracts/RolesStore.json');\n\nvar _RolesStore2 = _interopRequireDefault(_RolesStore);\n\nvar _Payouts = require('./contracts/Payouts.json');\n\nvar _Payouts2 = _interopRequireDefault(_Payouts);\n\nvar _ShelteringTransfers = require('./contracts/ShelteringTransfers.json');\n\nvar _ShelteringTransfers2 = _interopRequireDefault(_ShelteringTransfers);\n\nvar _ShelteringTransfersStore = require('./contracts/ShelteringTransfersStore.json');\n\nvar _ShelteringTransfersStore2 = _interopRequireDefault(_ShelteringTransfersStore);\n\nvar _Time = require('./contracts/Time.json');\n\nvar _Time2 = _interopRequireDefault(_Time);\n\nvar _Config = require('./contracts/Config.json');\n\nvar _Config2 = _interopRequireDefault(_Config);\n\nvar _Uploads = require('./contracts/Uploads.json');\n\nvar _Uploads2 = _interopRequireDefault(_Uploads);\n\nvar _ApolloDepositStore = require('./contracts/ApolloDepositStore.json');\n\nvar _ApolloDepositStore2 = _interopRequireDefault(_ApolloDepositStore);\n\nvar _ValidatorProxy = require('./contracts/ValidatorProxy.json');\n\nvar _ValidatorProxy2 = _interopRequireDefault(_ValidatorProxy);\n\nvar _SuperSpeedConfig = require('./contracts/SuperSpeedConfig.json');\n\nvar _SuperSpeedConfig2 = _interopRequireDefault(_SuperSpeedConfig);\n\nvar _SuperSpeedTime = require('./contracts/SuperSpeedTime.json');\n\nvar _SuperSpeedTime2 = _interopRequireDefault(_SuperSpeedTime);\n\nvar _ChallengesEventEmitter = require('./contracts/ChallengesEventEmitter.json');\n\nvar _ChallengesEventEmitter2 = _interopRequireDefault(_ChallengesEventEmitter);\n\nvar _RolesEventEmitter = require('./contracts/RolesEventEmitter.json');\n\nvar _RolesEventEmitter2 = _interopRequireDefault(_RolesEventEmitter);\n\nvar _TransfersEventEmitter = require('./contracts/TransfersEventEmitter.json');\n\nvar _TransfersEventEmitter2 = _interopRequireDefault(_TransfersEventEmitter);\n\nvar _Multiplexer = require('./contracts/Multiplexer.json');\n\nvar _Multiplexer2 = _interopRequireDefault(_Multiplexer);\n\nvar _MultiSigWallet = require('./contracts/MultiSigWallet.json');\n\nvar _MultiSigWallet2 = _interopRequireDefault(_MultiSigWallet);\n\nvar _RewardsEventEmitter = require('./contracts/RewardsEventEmitter.json');\n\nvar _RewardsEventEmitter2 = _interopRequireDefault(_RewardsEventEmitter);\n\nvar _PoolsNodesManager = require('./contracts/PoolsNodesManager.json');\n\nvar _PoolsNodesManager2 = _interopRequireDefault(_PoolsNodesManager);\n\nvar _PoolsStore = require('./contracts/PoolsStore.json');\n\nvar _PoolsStore2 = _interopRequireDefault(_PoolsStore);\n\nvar _Pool = require('./contracts/Pool.json');\n\nvar _Pool2 = _interopRequireDefault(_Pool);\n\nvar _PoolEventsEmitter = require('./contracts/PoolEventsEmitter.json');\n\nvar _PoolEventsEmitter2 = _interopRequireDefault(_PoolEventsEmitter);\n\nvar _NodeAddressesStore = require('./contracts/NodeAddressesStore.json');\n\nvar _NodeAddressesStore2 = _interopRequireDefault(_NodeAddressesStore);\n\nvar _RolesPrivilagesStore = require('./contracts/RolesPrivilagesStore.json');\n\nvar _RolesPrivilagesStore2 = _interopRequireDefault(_RolesPrivilagesStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar contractJsons = {\n head: _Head2.default,\n context: _Context2.default,\n catalogue: _Catalogue2.default,\n storageCatalogue: _StorageCatalogue2.default,\n validatorSet: _ValidatorSet2.default,\n blockRewards: _BlockRewards2.default,\n time: _Time2.default,\n atlasStakeStore: _AtlasStakeStore2.default,\n roles: _Roles2.default,\n bundleStore: _BundleStore2.default,\n kycWhitelist: _KycWhitelist2.default,\n kycWhitelistStore: _KycWhitelistStore2.default,\n sheltering: _Sheltering2.default,\n fees: _Fees2.default,\n challenges: _Challenges2.default,\n challengesStore: _ChallengesStore2.default,\n payoutsStore: _PayoutsStore2.default,\n payouts: _Payouts2.default,\n shelteringTransfers: _ShelteringTransfers2.default,\n shelteringTransfersStore: _ShelteringTransfersStore2.default,\n config: _Config2.default,\n uploads: _Uploads2.default,\n rolesStore: _RolesStore2.default,\n apolloDepositStore: _ApolloDepositStore2.default,\n validatorProxy: _ValidatorProxy2.default,\n challengesEventEmitter: _ChallengesEventEmitter2.default,\n rolesEventEmitter: _RolesEventEmitter2.default,\n transfersEventEmitter: _TransfersEventEmitter2.default,\n rewardsEventEmitter: _RewardsEventEmitter2.default,\n poolsNodesManager: _PoolsNodesManager2.default,\n nodeAddressesStore: _NodeAddressesStore2.default,\n poolsStore: _PoolsStore2.default,\n poolEventsEmitter: _PoolEventsEmitter2.default,\n multiplexer: _Multiplexer2.default,\n rolesPrivilagesStore: _RolesPrivilagesStore2.default\n}; /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nvar contractSuperSpeedJsons = exports.contractSuperSpeedJsons = {\n config: _SuperSpeedConfig2.default,\n time: _SuperSpeedTime2.default\n};\n\nvar multisig = exports.multisig = _MultiSigWallet2.default;\nvar pool = exports.pool = _Pool2.default;\n\nexports.default = contractJsons;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _SafeMathExtensions = require('../src/contracts/SafeMathExtensions.json');\n\nvar _SafeMathExtensions2 = _interopRequireDefault(_SafeMathExtensions);\n\nvar _DmpAlgorithm = require('../src/contracts/DmpAlgorithm.json');\n\nvar _DmpAlgorithm2 = _interopRequireDefault(_DmpAlgorithm);\n\nvar _web3_tools = require('./utils/web3_tools');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getContractConstructor = function getContractConstructor(contractJson) {\n return contractJson.abi.find(function (value) {\n return value.type === 'constructor';\n });\n}; /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nvar Deployer = function () {\n function Deployer(web3, sender) {\n var gas = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _web3_tools.DEFAULT_GAS;\n (0, _classCallCheck3.default)(this, Deployer);\n\n this.web3 = web3;\n this.sender = sender;\n this.gas = gas;\n }\n\n (0, _createClass3.default)(Deployer, [{\n key: 'deployLibs',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _web3_tools.deployContract)(this.web3, _SafeMathExtensions2.default, [], { from: this.sender });\n\n case 2:\n _context.t0 = _context.sent;\n _context.next = 5;\n return (0, _web3_tools.deployContract)(this.web3, _DmpAlgorithm2.default, [], { from: this.sender });\n\n case 5:\n _context.t1 = _context.sent;\n return _context.abrupt('return', {\n SafeMathExtensions: _context.t0,\n DmpAlgorithm: _context.t1\n });\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function deployLibs() {\n return _ref.apply(this, arguments);\n }\n\n return deployLibs;\n }()\n }, {\n key: 'deployOrLoadContracts',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(jsons, alreadyDeployed, skipDeployment, libs, params) {\n var _this = this;\n\n var contracts, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _ref3, _ref4, contractName, address, generateConstructorParameterList, waiting, resolveConstructorParameters, unresolvedParametersCount, _loop;\n\n return _regenerator2.default.wrap(function _callee2$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n contracts = {};\n\n // first load already deployed contracts\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context3.prev = 4;\n _iterator = Object.entries(alreadyDeployed)[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context3.next = 17;\n break;\n }\n\n _ref3 = _step.value;\n _ref4 = (0, _slicedToArray3.default)(_ref3, 2);\n contractName = _ref4[0];\n address = _ref4[1];\n _context3.next = 13;\n return this.loadContract(jsons[contractName], address);\n\n case 13:\n contracts[contractName] = _context3.sent;\n\n case 14:\n _iteratorNormalCompletion = true;\n _context3.next = 6;\n break;\n\n case 17:\n _context3.next = 23;\n break;\n\n case 19:\n _context3.prev = 19;\n _context3.t0 = _context3['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context3.t0;\n\n case 23:\n _context3.prev = 23;\n _context3.prev = 24;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 26:\n _context3.prev = 26;\n\n if (!_didIteratorError) {\n _context3.next = 29;\n break;\n }\n\n throw _iteratorError;\n\n case 29:\n return _context3.finish(26);\n\n case 30:\n return _context3.finish(23);\n\n case 31:\n generateConstructorParameterList = function generateConstructorParameterList(jsons, params) {\n return Object.entries(jsons).map(function (_ref5) {\n var _ref6 = (0, _slicedToArray3.default)(_ref5, 2),\n contractName = _ref6[0],\n json = _ref6[1];\n\n var constructorMethod = getContractConstructor(json);\n var constructorParams = constructorMethod !== undefined ? constructorMethod.inputs.map(function (input) {\n return { paramName: input.name.slice(1), paramType: input.type };\n }) : [];\n var resolvedParams = constructorParams.reduce(function (acc, _ref7) {\n var paramName = _ref7.paramName;\n\n if (params[contractName] !== undefined && params[contractName][paramName] !== undefined) {\n acc[paramName] = params[contractName][paramName];\n }\n return acc;\n }, {});\n return {\n contractName: contractName,\n constructorParams: constructorParams,\n resolvedParams: resolvedParams\n };\n });\n };\n\n // prepare constructor parameter list. Filter out skipped and already deployed contracts.\n\n\n waiting = generateConstructorParameterList(jsons, params).filter(function (_ref8) {\n var contractName = _ref8.contractName;\n return alreadyDeployed[contractName] === undefined;\n }).filter(function (_ref9) {\n var contractName = _ref9.contractName;\n return skipDeployment.indexOf(contractName) === -1;\n });\n\n resolveConstructorParameters = function resolveConstructorParameters(list, params) {\n return list.map(function (entry) {\n entry.constructorParams.forEach(function (_ref10) {\n var paramName = _ref10.paramName,\n paramType = _ref10.paramType;\n\n if (entry.resolvedParams[paramName] !== undefined) {\n return;\n }\n if (paramType === 'address' && params[paramName] !== undefined) {\n entry.resolvedParams[paramName] = params[paramName];\n }\n });\n return entry;\n });\n };\n\n // resolve deployed contracts\n\n\n waiting = resolveConstructorParameters(waiting, alreadyDeployed);\n\n // resolve skipped contracts\n waiting = resolveConstructorParameters(waiting, skipDeployment.reduce(function (acc, key) {\n acc[key] = '0x0000000000000000000000000000000000000000';\n return acc;\n }, {}));\n\n // iteratively deploy the waiting contracts\n\n unresolvedParametersCount = function unresolvedParametersCount(entry) {\n return entry.constructorParams.length - Object.keys(entry.resolvedParams).length;\n };\n\n _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop() {\n var entry, unresolvedParameters, contract;\n return _regenerator2.default.wrap(function _loop$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n waiting.sort(function (left, right) {\n return unresolvedParametersCount(left) - unresolvedParametersCount(right);\n });\n entry = waiting.shift();\n\n if (!(unresolvedParametersCount(entry) > 0)) {\n _context2.next = 5;\n break;\n }\n\n unresolvedParameters = entry.constructorParams.map(function (_ref11) {\n var paramName = _ref11.paramName;\n return paramName;\n }).filter(function (paramName) {\n return entry.resolvedParams[paramName] === undefined;\n });\n throw 'Failed to satisfy dependencies (' + unresolvedParameters + ') to deploy: ' + entry.contractName;\n\n case 5:\n _context2.next = 7;\n return _this.deployContract(jsons[entry.contractName], entry.constructorParams.map(function (_ref12) {\n var paramName = _ref12.paramName;\n return entry.resolvedParams[paramName];\n }), libs);\n\n case 7:\n contract = _context2.sent;\n\n contracts[entry.contractName] = contract;\n waiting = resolveConstructorParameters(waiting, (0, _defineProperty3.default)({}, entry.contractName, contract.options.address));\n\n case 10:\n case 'end':\n return _context2.stop();\n }\n }\n }, _loop, _this);\n });\n\n case 38:\n if (!(waiting.length > 0)) {\n _context3.next = 42;\n break;\n }\n\n return _context3.delegateYield(_loop(), 't1', 40);\n\n case 40:\n _context3.next = 38;\n break;\n\n case 42:\n return _context3.abrupt('return', contracts);\n\n case 43:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee2, this, [[4, 19, 23, 31], [24,, 26, 30]]);\n }));\n\n function deployOrLoadContracts(_x2, _x3, _x4, _x5, _x6) {\n return _ref2.apply(this, arguments);\n }\n\n return deployOrLoadContracts;\n }()\n }, {\n key: 'loadContract',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(json, address) {\n return _regenerator2.default.wrap(function _callee3$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', (0, _web3_tools.loadContract)(this.web3, json.abi, address));\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function loadContract(_x7, _x8) {\n return _ref13.apply(this, arguments);\n }\n\n return loadContract;\n }()\n }, {\n key: 'deployContract',\n value: function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(json, params, libs) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _ref15, _ref16, libName, libContract;\n\n return _regenerator2.default.wrap(function _callee4$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n // link with libraries\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context5.prev = 3;\n for (_iterator2 = Object.entries(libs)[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n _ref15 = _step2.value;\n _ref16 = (0, _slicedToArray3.default)(_ref15, 2);\n libName = _ref16[0];\n libContract = _ref16[1];\n\n (0, _web3_tools.link)(json, libName, libContract);\n }\n\n // deploy\n _context5.next = 11;\n break;\n\n case 7:\n _context5.prev = 7;\n _context5.t0 = _context5['catch'](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context5.t0;\n\n case 11:\n _context5.prev = 11;\n _context5.prev = 12;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 14:\n _context5.prev = 14;\n\n if (!_didIteratorError2) {\n _context5.next = 17;\n break;\n }\n\n throw _iteratorError2;\n\n case 17:\n return _context5.finish(14);\n\n case 18:\n return _context5.finish(11);\n\n case 19:\n return _context5.abrupt('return', (0, _web3_tools.deployContract)(this.web3, json, params, { from: this.sender }));\n\n case 20:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee4, this, [[3, 7, 11, 19], [12,, 14, 18]]);\n }));\n\n function deployContract(_x9, _x10, _x11) {\n return _ref14.apply(this, arguments);\n }\n\n return deployContract;\n }()\n }, {\n key: 'deployContext',\n value: function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(contextJson, contracts, versionTag) {\n return _regenerator2.default.wrap(function _callee5$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt('return', this.deployContract(contextJson, [Object.values(contracts).map(function (contract) {\n return contract.options.address;\n }), contracts.catalogue.options.address, contracts.storageCatalogue.options.address, versionTag], []));\n\n case 1:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function deployContext(_x12, _x13, _x14) {\n return _ref17.apply(this, arguments);\n }\n\n return deployContext;\n }()\n }, {\n key: 'updateContextPointer',\n value: function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(contracts) {\n return _regenerator2.default.wrap(function _callee6$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return contracts.head.methods.setContext(contracts.context.options.address).send({\n gas: this.gas,\n from: this.sender\n });\n\n case 2:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function updateContextPointer(_x15) {\n return _ref18.apply(this, arguments);\n }\n\n return updateContextPointer;\n }()\n }, {\n key: 'checkOwnership',\n value: function () {\n var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(contracts) {\n var _this2 = this;\n\n var checkRightOwner, validatorSet, blockRewards, head;\n return _regenerator2.default.wrap(function _callee8$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n checkRightOwner = function () {\n var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(contract, contractName) {\n var owner;\n return _regenerator2.default.wrap(function _callee7$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(contract === undefined)) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt('return');\n\n case 2:\n _context8.next = 4;\n return contract.methods.owner().call();\n\n case 4:\n owner = _context8.sent;\n\n if (!(owner !== _this2.sender)) {\n _context8.next = 7;\n break;\n }\n\n throw 'The ' + contractName + ' contract needs to be owned by ' + _this2.sender + ' (the sender). The current owner is ' + owner;\n\n case 7:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee7, _this2);\n }));\n\n return function checkRightOwner(_x17, _x18) {\n return _ref20.apply(this, arguments);\n };\n }();\n\n validatorSet = contracts.validatorSet, blockRewards = contracts.blockRewards, head = contracts.head;\n _context9.next = 4;\n return checkRightOwner(head, 'head');\n\n case 4:\n _context9.next = 6;\n return checkRightOwner(validatorSet, 'validator set');\n\n case 6:\n _context9.next = 8;\n return checkRightOwner(blockRewards, 'block rewards');\n\n case 8:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function checkOwnership(_x16) {\n return _ref19.apply(this, arguments);\n }\n\n return checkOwnership;\n }()\n }, {\n key: 'transferOwnerships',\n value: function () {\n var _ref21 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(contracts) {\n var validatorSet, blockRewards, validatorProxy, validatorSetOwner, blockRewardsOwner;\n return _regenerator2.default.wrap(function _callee9$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n validatorSet = contracts.validatorSet, blockRewards = contracts.blockRewards, validatorProxy = contracts.validatorProxy;\n\n if (!(validatorSet !== undefined && validatorProxy !== undefined)) {\n _context10.next = 14;\n break;\n }\n\n _context10.next = 4;\n return validatorSet.methods.owner().call();\n\n case 4:\n validatorSetOwner = _context10.sent;\n\n if (!(validatorSetOwner === validatorProxy.options.address)) {\n _context10.next = 8;\n break;\n }\n\n _context10.next = 14;\n break;\n\n case 8:\n if (!(validatorSetOwner === this.sender)) {\n _context10.next = 13;\n break;\n }\n\n _context10.next = 11;\n return validatorSet.methods.transferOwnership(validatorProxy.options.address).send({ from: this.sender });\n\n case 11:\n _context10.next = 14;\n break;\n\n case 13:\n throw 'Failed to transfer ownership for validator set contract to validator proxy. The current owner ' + validatorSetOwner + ' remains';\n\n case 14:\n if (!(blockRewards !== undefined && validatorProxy !== undefined)) {\n _context10.next = 27;\n break;\n }\n\n _context10.next = 17;\n return blockRewards.methods.owner().call();\n\n case 17:\n blockRewardsOwner = _context10.sent;\n\n if (!(blockRewardsOwner === validatorProxy.options.address)) {\n _context10.next = 21;\n break;\n }\n\n _context10.next = 27;\n break;\n\n case 21:\n if (!(blockRewardsOwner === this.sender)) {\n _context10.next = 26;\n break;\n }\n\n _context10.next = 24;\n return contracts.blockRewards.methods.transferOwnership(validatorProxy.options.address).send({ from: this.sender });\n\n case 24:\n _context10.next = 27;\n break;\n\n case 26:\n throw 'Failed to transfer ownership for block rewards contract to validator proxy. The current owner ' + blockRewardsOwner + ' remains';\n\n case 27:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function transferOwnerships(_x19) {\n return _ref21.apply(this, arguments);\n }\n\n return transferOwnerships;\n }()\n }, {\n key: 'deploy',\n value: function () {\n var _ref22 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(jsons, alreadyDeployed) {\n var skipDeployment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var versionTag = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '0';\n var libs, contextJson, jsonsWithoutContext, contracts;\n return _regenerator2.default.wrap(function _callee10$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.deployLibs();\n\n case 2:\n libs = _context11.sent;\n contextJson = jsons.context, jsonsWithoutContext = (0, _objectWithoutProperties3.default)(jsons, ['context']);\n _context11.next = 6;\n return this.deployOrLoadContracts(jsonsWithoutContext, alreadyDeployed, skipDeployment, libs, params);\n\n case 6:\n contracts = _context11.sent;\n _context11.next = 9;\n return this.checkOwnership(contracts);\n\n case 9:\n _context11.next = 11;\n return this.deployContext(contextJson, contracts, versionTag);\n\n case 11:\n contracts.context = _context11.sent;\n _context11.next = 14;\n return this.updateContextPointer(contracts);\n\n case 14:\n _context11.next = 16;\n return this.transferOwnerships(contracts);\n\n case 16:\n return _context11.abrupt('return', contracts);\n\n case 17:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function deploy(_x20, _x21) {\n return _ref22.apply(this, arguments);\n }\n\n return deploy;\n }()\n }]);\n return Deployer;\n}();\n\nexports.default = Deployer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InsufficientFundsToStartChallengeError = exports.InsufficientFundsToUploadBundleError = exports.AmbrosusError = undefined;\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _web = require('web3');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extendableBuiltin(cls) {\n function ExtendableBuiltin() {\n var instance = Reflect.construct(cls, Array.from(arguments));\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n return instance;\n }\n\n ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n constructor: {\n value: cls,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ExtendableBuiltin, cls);\n } else {\n ExtendableBuiltin.__proto__ = cls;\n }\n\n return ExtendableBuiltin;\n} /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nvar AmbrosusError = exports.AmbrosusError = function (_extendableBuiltin2) {\n (0, _inherits3.default)(AmbrosusError, _extendableBuiltin2);\n\n function AmbrosusError(message) {\n (0, _classCallCheck3.default)(this, AmbrosusError);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AmbrosusError.__proto__ || Object.getPrototypeOf(AmbrosusError)).call(this, message));\n\n _this.name = _this.constructor.name;\n Error.captureStackTrace(_this, _this.constructor);\n return _this;\n }\n\n return AmbrosusError;\n}(_extendableBuiltin(Error));\n\nvar InsufficientFundsToUploadBundleError = exports.InsufficientFundsToUploadBundleError = function (_AmbrosusError) {\n (0, _inherits3.default)(InsufficientFundsToUploadBundleError, _AmbrosusError);\n\n function InsufficientFundsToUploadBundleError(fee, balance) {\n (0, _classCallCheck3.default)(this, InsufficientFundsToUploadBundleError);\n return (0, _possibleConstructorReturn3.default)(this, (InsufficientFundsToUploadBundleError.__proto__ || Object.getPrototypeOf(InsufficientFundsToUploadBundleError)).call(this, 'Insufficient funds: need at least ' + _web.utils.fromWei(fee, 'ether') + ' to upload the bundle. Balance: ' + _web.utils.fromWei(balance, 'ether')));\n }\n\n return InsufficientFundsToUploadBundleError;\n}(AmbrosusError);\n\nvar InsufficientFundsToStartChallengeError = exports.InsufficientFundsToStartChallengeError = function (_AmbrosusError2) {\n (0, _inherits3.default)(InsufficientFundsToStartChallengeError, _AmbrosusError2);\n\n function InsufficientFundsToStartChallengeError(fee, balance) {\n (0, _classCallCheck3.default)(this, InsufficientFundsToStartChallengeError);\n return (0, _possibleConstructorReturn3.default)(this, (InsufficientFundsToStartChallengeError.__proto__ || Object.getPrototypeOf(InsufficientFundsToStartChallengeError)).call(this, 'Insufficient funds: need at least ' + _web.utils.fromWei(fee, 'ether') + ' to start a challenge. Balance: ' + _web.utils.fromWei(balance, 'ether')));\n }\n\n return InsufficientFundsToStartChallengeError;\n}(AmbrosusError);","'use strict';\n\nvar _challenge_wrapper = require('./wrappers/challenge_wrapper');\n\nvar _challenge_wrapper2 = _interopRequireDefault(_challenge_wrapper);\n\nvar _sheltering_transfers_wrapper = require('./wrappers/sheltering_transfers_wrapper');\n\nvar _sheltering_transfers_wrapper2 = _interopRequireDefault(_sheltering_transfers_wrapper);\n\nvar _payouts_wrapper = require('./wrappers/payouts_wrapper');\n\nvar _payouts_wrapper2 = _interopRequireDefault(_payouts_wrapper);\n\nvar _config_wrapper = require('./wrappers/config_wrapper');\n\nvar _config_wrapper2 = _interopRequireDefault(_config_wrapper);\n\nvar _fees_wrapper = require('./wrappers/fees_wrapper');\n\nvar _fees_wrapper2 = _interopRequireDefault(_fees_wrapper);\n\nvar _head_wrapper = require('./wrappers/head_wrapper');\n\nvar _head_wrapper2 = _interopRequireDefault(_head_wrapper);\n\nvar _validator_set_wrapper = require('./wrappers/validator_set_wrapper');\n\nvar _validator_set_wrapper2 = _interopRequireDefault(_validator_set_wrapper);\n\nvar _block_rewards_wrapper = require('./wrappers/block_rewards_wrapper');\n\nvar _block_rewards_wrapper2 = _interopRequireDefault(_block_rewards_wrapper);\n\nvar _validator_proxy_wrapper = require('./wrappers/validator_proxy_wrapper');\n\nvar _validator_proxy_wrapper2 = _interopRequireDefault(_validator_proxy_wrapper);\n\nvar _kyc_whitelist_wrapper = require('./wrappers/kyc_whitelist_wrapper');\n\nvar _kyc_whitelist_wrapper2 = _interopRequireDefault(_kyc_whitelist_wrapper);\n\nvar _time_wrapper = require('./wrappers/time_wrapper');\n\nvar _time_wrapper2 = _interopRequireDefault(_time_wrapper);\n\nvar _roles_wrapper = require('./wrappers/roles_wrapper');\n\nvar _roles_wrapper2 = _interopRequireDefault(_roles_wrapper);\n\nvar _sheltering_wrapper = require('./wrappers/sheltering_wrapper');\n\nvar _sheltering_wrapper2 = _interopRequireDefault(_sheltering_wrapper);\n\nvar _uploads_wrapper = require('./wrappers/uploads_wrapper');\n\nvar _uploads_wrapper2 = _interopRequireDefault(_uploads_wrapper);\n\nvar _blockchain_state_wrapper = require('./wrappers/blockchain_state_wrapper');\n\nvar _blockchain_state_wrapper2 = _interopRequireDefault(_blockchain_state_wrapper);\n\nvar _challenges_event_emitter_wrapper = require('./wrappers/challenges_event_emitter_wrapper');\n\nvar _challenges_event_emitter_wrapper2 = _interopRequireDefault(_challenges_event_emitter_wrapper);\n\nvar _transfers_event_emitter_wrapper = require('./wrappers/transfers_event_emitter_wrapper');\n\nvar _transfers_event_emitter_wrapper2 = _interopRequireDefault(_transfers_event_emitter_wrapper);\n\nvar _rewards_event_emitter_wrapper = require('./wrappers/rewards_event_emitter_wrapper');\n\nvar _rewards_event_emitter_wrapper2 = _interopRequireDefault(_rewards_event_emitter_wrapper);\n\nvar _bundle_store_wrapper = require('./wrappers/bundle_store_wrapper');\n\nvar _bundle_store_wrapper2 = _interopRequireDefault(_bundle_store_wrapper);\n\nvar _roles_event_emitter_wrapper = require('./wrappers/roles_event_emitter_wrapper');\n\nvar _roles_event_emitter_wrapper2 = _interopRequireDefault(_roles_event_emitter_wrapper);\n\nvar _whitelist_actions = require('./actions/whitelist_actions');\n\nvar _whitelist_actions2 = _interopRequireDefault(_whitelist_actions);\n\nvar _onboard_actions = require('./actions/onboard_actions');\n\nvar _onboard_actions2 = _interopRequireDefault(_onboard_actions);\n\nvar _upload_actions = require('./actions/upload_actions');\n\nvar _upload_actions2 = _interopRequireDefault(_upload_actions);\n\nvar _deployer = require('./deployer');\n\nvar _deployer2 = _interopRequireDefault(_deployer);\n\nvar _contract_jsons = require('./contract_jsons.js');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nvar _fees_actions = require('./actions/fees_actions');\n\nvar _fees_actions2 = _interopRequireDefault(_fees_actions);\n\nvar _deploy_actions = require('./actions/deploy_actions');\n\nvar _deploy_actions2 = _interopRequireDefault(_deploy_actions);\n\nvar _admin_actions = require('./actions/admin_actions');\n\nvar _admin_actions2 = _interopRequireDefault(_admin_actions);\n\nvar _payouts_actions = require('./actions/payouts_actions');\n\nvar _payouts_actions2 = _interopRequireDefault(_payouts_actions);\n\nvar _challenge_actions = require('./actions/challenge_actions');\n\nvar _challenge_actions2 = _interopRequireDefault(_challenge_actions);\n\nvar _errors = require('./errors/errors');\n\nvar _atlas_stake_store_wrapper = require('./wrappers/atlas_stake_store_wrapper');\n\nvar _atlas_stake_store_wrapper2 = _interopRequireDefault(_atlas_stake_store_wrapper);\n\nvar _apollo_deposit_store_wrapper = require('./wrappers/apollo_deposit_store_wrapper');\n\nvar _apollo_deposit_store_wrapper2 = _interopRequireDefault(_apollo_deposit_store_wrapper);\n\nvar _pools_nodes_manager_wrapper = require('./wrappers/pools_nodes_manager_wrapper');\n\nvar _pools_nodes_manager_wrapper2 = _interopRequireDefault(_pools_nodes_manager_wrapper);\n\nvar _pools_store_wrapper = require('./wrappers/pools_store_wrapper');\n\nvar _pools_store_wrapper2 = _interopRequireDefault(_pools_store_wrapper);\n\nvar _pool_events_emitter_wrapper = require('./wrappers/pool_events_emitter_wrapper');\n\nvar _pool_events_emitter_wrapper2 = _interopRequireDefault(_pool_events_emitter_wrapper);\n\nvar _multiplexer_wrapper = require('./wrappers/multiplexer_wrapper');\n\nvar _multiplexer_wrapper2 = _interopRequireDefault(_multiplexer_wrapper);\n\nvar _multisig_wrapper = require('./wrappers/multisig_wrapper');\n\nvar _multisig_wrapper2 = _interopRequireDefault(_multisig_wrapper);\n\nvar _multisig_actions = require('./actions/multisig_actions');\n\nvar _multisig_actions2 = _interopRequireDefault(_multisig_actions);\n\nvar _multisig_functions = require('./utils/multisig_functions');\n\nvar _multisig_functions2 = _interopRequireDefault(_multisig_functions);\n\nvar _node_addresses_store_wrapper = require('./wrappers/node_addresses_store_wrapper');\n\nvar _node_addresses_store_wrapper2 = _interopRequireDefault(_node_addresses_store_wrapper);\n\nvar _roles_privilages_store_wrapper = require('./wrappers/roles_privilages_store_wrapper');\n\nvar _roles_privilages_store_wrapper2 = _interopRequireDefault(_roles_privilages_store_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar constants = require('./constants');\n\nmodule.exports = {\n PayoutsWrapper: _payouts_wrapper2.default,\n TimeWrapper: _time_wrapper2.default,\n ChallengeWrapper: _challenge_wrapper2.default,\n ShelteringTransfersWrapper: _sheltering_transfers_wrapper2.default,\n ConfigWrapper: _config_wrapper2.default,\n FeesWrapper: _fees_wrapper2.default,\n HeadWrapper: _head_wrapper2.default,\n ValidatorSetWrapper: _validator_set_wrapper2.default,\n BlockRewardsWrapper: _block_rewards_wrapper2.default,\n ValidatorProxyWrapper: _validator_proxy_wrapper2.default,\n KycWhitelistWrapper: _kyc_whitelist_wrapper2.default,\n RolesWrapper: _roles_wrapper2.default,\n ShelteringWrapper: _sheltering_wrapper2.default,\n UploadsWrapper: _uploads_wrapper2.default,\n BlockchainStateWrapper: _blockchain_state_wrapper2.default,\n ChallengesEventEmitterWrapper: _challenges_event_emitter_wrapper2.default,\n TransfersEventEmitterWrapper: _transfers_event_emitter_wrapper2.default,\n RewardsEventEmitterWrapper: _rewards_event_emitter_wrapper2.default,\n WhitelistActions: _whitelist_actions2.default,\n OnboardActions: _onboard_actions2.default,\n UploadActions: _upload_actions2.default,\n FeesActions: _fees_actions2.default,\n AdministrativeActions: _admin_actions2.default,\n Deployer: _deployer2.default,\n DeployActions: _deploy_actions2.default,\n PayoutsActions: _payouts_actions2.default,\n ChallengeActions: _challenge_actions2.default,\n constants: constants,\n contractJsons: _contract_jsons2.default,\n pool: _contract_jsons.pool,\n InsufficientFundsToUploadBundleError: _errors.InsufficientFundsToUploadBundleError,\n InsufficientFundsToStartChallengeError: _errors.InsufficientFundsToStartChallengeError,\n BundleStoreWrapper: _bundle_store_wrapper2.default,\n AtlasStakeStoreWrapper: _atlas_stake_store_wrapper2.default,\n ApolloDepositStoreWrapper: _apollo_deposit_store_wrapper2.default,\n PoolsNodesManagerWrapper: _pools_nodes_manager_wrapper2.default,\n PoolsStoreWrapper: _pools_store_wrapper2.default,\n RolesEventEmitterWrapper: _roles_event_emitter_wrapper2.default,\n PoolEventsEmitterWrapper: _pool_events_emitter_wrapper2.default,\n NodeAddressesStoreWrapper: _node_addresses_store_wrapper2.default,\n MultiplexerWrapper: _multiplexer_wrapper2.default,\n MultisigWrapper: _multisig_wrapper2.default,\n MultisigActions: _multisig_actions2.default,\n MultisigFunctions: _multisig_functions2.default,\n RolesPrivilagesStoreWrapper: _roles_privilages_store_wrapper2.default\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertRateToBaseReward = convertRateToBaseReward;\nexports.convertBaseRewardToRate = convertBaseRewardToRate;\n\nvar _bignumber = require('bignumber.js');\n\nvar _bignumber2 = _interopRequireDefault(_bignumber);\n\nvar _constants = require('../constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\n_bignumber2.default.config({ EXPONENTIAL_AT: 1e+9 });\n\nfunction convertRateToBaseReward(rate) {\n if (rate < 0 || rate > 100) {\n throw 'Invalid rate';\n }\n _bignumber2.default.set({ ROUNDING_MODE: _bignumber2.default.ROUND_DOWN });\n\n var totalSupply = new _bignumber2.default(_constants.TOTAL_AMB_SUPPLY);\n var numberOfBlocksInYear = new _bignumber2.default(_constants.BLOCKS_PER_YEAR);\n\n var baseReward = totalSupply.dividedBy(numberOfBlocksInYear).multipliedBy(rate).dividedBy(100);\n\n return baseReward.toFixed(0);\n}\n\nfunction convertBaseRewardToRate(baseReward) {\n var baseRewordBN = new _bignumber2.default(baseReward);\n var totalSupply = new _bignumber2.default(_constants.TOTAL_AMB_SUPPLY);\n var numberOfBlocksInYear = new _bignumber2.default(_constants.BLOCKS_PER_YEAR);\n\n _bignumber2.default.set({ ROUNDING_MODE: _bignumber2.default.ROUND_HALF_UP });\n var rate = baseRewordBN.multipliedBy(numberOfBlocksInYear).multipliedBy(100).dividedBy(totalSupply);\n\n return rate.toFixed(2);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends3 = require('babel-runtime/helpers/extends');\n\nvar _extends4 = _interopRequireDefault(_extends3);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MultisigFunctions = function () {\n function MultisigFunctions(web3) {\n (0, _classCallCheck3.default)(this, MultisigFunctions);\n\n this.web3 = web3;\n this.functionAbis = (0, _extends4.default)({}, this.getFunctionSignatures(_contract_jsons.multisig.abi), this.getFunctionSignatures(_contract_jsons2.default.multiplexer.abi));\n }\n\n (0, _createClass3.default)(MultisigFunctions, [{\n key: 'getFunctionSignatures',\n value: function getFunctionSignatures(abi) {\n var _this = this;\n\n return abi.filter(function (abiEntry) {\n return abiEntry.type === 'function' && !abiEntry.constant;\n }).map(function (abiEntry) {\n return (0, _defineProperty3.default)({}, _this.web3.eth.abi.encodeFunctionSignature(abiEntry), {\n name: abiEntry.name,\n inputs: abiEntry.inputs\n });\n }).reduce(function (acc, entry) {\n return (0, _extends4.default)({}, acc, entry);\n }, {});\n }\n }, {\n key: 'getFunctionName',\n value: function getFunctionName(transactionData) {\n return this.functionAbis[transactionData.substring(0, 10)].name;\n }\n }, {\n key: 'getFunctionArguments',\n value: function getFunctionArguments(transactionData) {\n var inputs = this.functionAbis[transactionData.substring(0, 10)].inputs;\n\n var parameters = this.web3.eth.abi.decodeParameters(inputs, '0x' + transactionData.substring(10));\n return inputs.reduce(function (acc, _ref2) {\n var name = _ref2.name;\n return (0, _extends4.default)({}, acc, (0, _defineProperty3.default)({}, name, parameters[name]));\n }, {});\n }\n }]);\n return MultisigFunctions;\n}(); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\n\nexports.default = MultisigFunctions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deployContract = exports.restoreSnapshot = exports.makeSnapshot = exports.createWeb3 = exports.utils = exports.DEFAULT_GAS = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar createWeb3 = exports.createWeb3 = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var conf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _config2.default;\n var web3, rpc;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n web3 = new _web2.default();\n rpc = conf.web3Rpc;\n\n importPrivateKey(web3, conf);\n\n if (isValidRPCAddress(rpc)) {\n _context.next = 5;\n break;\n }\n\n throw new Error('The config value for the Parity RPC server is invalid: ' + rpc);\n\n case 5:\n\n web3.setProvider(rpc);\n return _context.abrupt('return', web3);\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function createWeb3() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar makeSnapshot = exports.makeSnapshot = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(web3) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', web3.eth.makeSnapshot());\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function makeSnapshot(_x2) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nvar restoreSnapshot = exports.restoreSnapshot = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(web3, snapshotId) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', web3.eth.restoreSnapshot(snapshotId));\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function restoreSnapshot(_x3, _x4) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nvar deployContract = exports.deployContract = function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(web3, json) {\n var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var defaultAddress, contract, deploy, sent;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n defaultAddress = getDefaultAddress(web3);\n contract = new web3.eth.Contract(json.abi, undefined, {\n gas: DEFAULT_GAS,\n gasPrice: web3.utils.toWei('5', 'gwei')\n });\n _context4.next = 4;\n return contract.deploy({ data: json.bytecode, arguments: args });\n\n case 4:\n deploy = _context4.sent;\n _context4.next = 7;\n return deploy.estimateGas(options);\n\n case 7:\n _context4.next = 9;\n return deploy.send((0, _extends3.default)({ from: defaultAddress,\n gas: DEFAULT_GAS\n }, options));\n\n case 9:\n sent = _context4.sent;\n return _context4.abrupt('return', sent);\n\n case 11:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function deployContract(_x5, _x6) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nexports.getDefaultAddress = getDefaultAddress;\nexports.getDefaultPrivateKey = getDefaultPrivateKey;\nexports.loadContract = loadContract;\nexports.link = link;\n\nvar _web = require('web3');\n\nvar _web2 = _interopRequireDefault(_web);\n\nvar _config = require('../../config/config');\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar DEFAULT_GAS = exports.DEFAULT_GAS = 6000000;\n\nvar _ref = new _web2.default(),\n utils = _ref.utils;\n\nexports.utils = utils;\n\n\nfunction isValidRPCAddress(rpc) {\n return (/^((?:https?)|(?:ws)):\\/\\//g.test(rpc)\n );\n}\n\nfunction importPrivateKey(web3, conf) {\n try {\n var nodePrivateKey = conf.nodePrivateKey;\n\n var account = web3.eth.accounts.privateKeyToAccount(nodePrivateKey);\n web3.eth.accounts.wallet.add(account);\n web3.eth.defaultAccount = account.address;\n return account;\n } catch (err) {\n throw new Error('A configuration value for web3 node private key is missing');\n }\n}\n\nfunction getDefaultAddress(web3) {\n // note: web3.eth.defaultAccount actually stores an address of the default account, and not the full account :P\n var defaultAccount = web3.eth.defaultAccount;\n\n if (!defaultAccount) {\n throw new Error('web3 doesn\\'t have a default account set. Check your configuration');\n }\n return defaultAccount;\n}\n\nfunction getDefaultPrivateKey(web3) {\n var defaultAddress = getDefaultAddress(web3);\n var account = web3.eth.accounts.wallet[defaultAddress];\n return account.privateKey;\n}\n\nfunction loadContract(web3, abi, address) {\n return new web3.eth.Contract(abi, address, {\n gas: DEFAULT_GAS,\n gasPrice: web3.utils.toWei('5', 'gwei')\n });\n}\n\nfunction link(contract, name, library) {\n var address = library.options.address.replace('0x', '');\n var pattern = new RegExp('_+' + name + '_+', 'g');\n contract.bytecode = contract.bytecode.replace(pattern, address);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ApolloDepositStoreWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ApolloDepositStoreWrapper, _ManagedContractWrapp);\n\n function ApolloDepositStoreWrapper() {\n (0, _classCallCheck3.default)(this, ApolloDepositStoreWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ApolloDepositStoreWrapper.__proto__ || Object.getPrototypeOf(ApolloDepositStoreWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ApolloDepositStoreWrapper, [{\n key: 'isDepositing',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(nodeAddress) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.isDepositing(nodeAddress).call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function isDepositing(_x) {\n return _ref.apply(this, arguments);\n }\n\n return isDepositing;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'apolloDepositStore';\n }\n }]);\n return ApolloDepositStoreWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ApolloDepositStoreWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AtlasStakeStoreWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(AtlasStakeStoreWrapper, _ManagedContractWrapp);\n\n function AtlasStakeStoreWrapper() {\n (0, _classCallCheck3.default)(this, AtlasStakeStoreWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (AtlasStakeStoreWrapper.__proto__ || Object.getPrototypeOf(AtlasStakeStoreWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AtlasStakeStoreWrapper, [{\n key: 'isShelteringAny',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(nodeAddress) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.isShelteringAny(nodeAddress).call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function isShelteringAny(_x) {\n return _ref.apply(this, arguments);\n }\n\n return isShelteringAny;\n }()\n }, {\n key: 'getPenaltiesHistory',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(nodeAddress) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.getPenaltiesHistory(nodeAddress).call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getPenaltiesHistory(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getPenaltiesHistory;\n }()\n }, {\n key: 'getStake',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(nodeAddress) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.getStake(nodeAddress).call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getStake(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getStake;\n }()\n }, {\n key: 'getBasicStake',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(nodeAddress) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.getBasicStake(nodeAddress).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getBasicStake(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return getBasicStake;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'atlasStakeStore';\n }\n }]);\n return AtlasStakeStoreWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = AtlasStakeStoreWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nvar _genesis_contract_wrapper = require('./genesis_contract_wrapper');\n\nvar _genesis_contract_wrapper2 = _interopRequireDefault(_genesis_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar BlockRewardsWrapper = function (_GenesisContractWrapp) {\n (0, _inherits3.default)(BlockRewardsWrapper, _GenesisContractWrapp);\n\n function BlockRewardsWrapper(blockRewardsContractAddress, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, BlockRewardsWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (BlockRewardsWrapper.__proto__ || Object.getPrototypeOf(BlockRewardsWrapper)).call(this, blockRewardsContractAddress, _contract_jsons2.default.blockRewards, web3, defaultAddress));\n }\n\n (0, _createClass3.default)(BlockRewardsWrapper, [{\n key: 'baseRewardChanges',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', this.contract.getPastEvents('BaseRewardChanged', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function baseRewardChanges(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return baseRewardChanges;\n }()\n }, {\n key: 'getBaseReward',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', this.contract.methods.baseReward().call());\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getBaseReward() {\n return _ref2.apply(this, arguments);\n }\n\n return getBaseReward;\n }()\n }]);\n return BlockRewardsWrapper;\n}(_genesis_contract_wrapper2.default);\n\nexports.default = BlockRewardsWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar BlockchainStateWrapper = function () {\n function BlockchainStateWrapper(web3) {\n (0, _classCallCheck3.default)(this, BlockchainStateWrapper);\n\n this.web3 = web3;\n }\n\n (0, _createClass3.default)(BlockchainStateWrapper, [{\n key: 'getBlockTimestamp',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(blockNumber) {\n var blockData, timestamp;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.web3.eth.getBlock(blockNumber);\n\n case 2:\n blockData = _context.sent;\n timestamp = blockData.timestamp;\n return _context.abrupt('return', timestamp);\n\n case 5:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getBlockTimestamp(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getBlockTimestamp;\n }()\n }, {\n key: 'isAddressAContract',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.web3.eth.getCode(address);\n\n case 2:\n _context2.t0 = _context2.sent;\n return _context2.abrupt('return', _context2.t0 !== '0x');\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function isAddressAContract(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return isAddressAContract;\n }()\n }, {\n key: 'getBalance',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(address) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', this.web3.eth.getBalance(address));\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getBalance(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getBalance;\n }()\n }, {\n key: 'getCurrentBlockNumber',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', this.web3.eth.getBlockNumber());\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getCurrentBlockNumber() {\n return _ref4.apply(this, arguments);\n }\n\n return getCurrentBlockNumber;\n }()\n }]);\n return BlockchainStateWrapper;\n}();\n\nexports.default = BlockchainStateWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BundleStoreWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(BundleStoreWrapper, _ManagedContractWrapp);\n\n function BundleStoreWrapper() {\n (0, _classCallCheck3.default)(this, BundleStoreWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (BundleStoreWrapper.__proto__ || Object.getPrototypeOf(BundleStoreWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(BundleStoreWrapper, [{\n key: 'bundlesStored',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('BundleStored', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function bundlesStored(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return bundlesStored;\n }()\n }, {\n key: 'sheltererAdded',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('SheltererAdded', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function sheltererAdded(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return sheltererAdded;\n }()\n }, {\n key: 'sheltererRemoved',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.getPastEvents('SheltererRemoved', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function sheltererRemoved(_x5, _x6) {\n return _ref3.apply(this, arguments);\n }\n\n return sheltererRemoved;\n }()\n }, {\n key: 'getShelterers',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(bundleId) {\n var contract, shelterers;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n _context4.next = 5;\n return contract.methods.getShelterers(bundleId).call();\n\n case 5:\n shelterers = _context4.sent;\n return _context4.abrupt('return', shelterers.concat());\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getShelterers(_x7) {\n return _ref4.apply(this, arguments);\n }\n\n return getShelterers;\n }()\n }, {\n key: 'getUploader',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.getUploader(bundleId).call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getUploader(_x8) {\n return _ref5.apply(this, arguments);\n }\n\n return getUploader;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'bundleStore';\n }\n }]);\n return BundleStoreWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = BundleStoreWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _constants = require('../constants');\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar ChallengeWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ChallengeWrapper, _ManagedContractWrapp);\n\n function ChallengeWrapper() {\n (0, _classCallCheck3.default)(this, ChallengeWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ChallengeWrapper.__proto__ || Object.getPrototypeOf(ChallengeWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ChallengeWrapper, [{\n key: 'earliestMeaningfulBlock',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(challengeDuration) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.t0 = Math;\n _context.next = 3;\n return this.web3.eth.getBlockNumber();\n\n case 3:\n _context.t1 = _context.sent;\n _context.t2 = Math.ceil(challengeDuration / _constants.MIN_BLOCK_TIME);\n _context.t3 = _context.t1 - _context.t2;\n return _context.abrupt('return', _context.t0.max.call(_context.t0, 0, _context.t3));\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function earliestMeaningfulBlock(_x) {\n return _ref.apply(this, arguments);\n }\n\n return earliestMeaningfulBlock;\n }()\n }, {\n key: 'resolve',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', this.processTransaction(contract.methods.resolve(challengeId)));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function resolve(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return resolve;\n }()\n }, {\n key: 'start',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(sheltererId, bundleId, fee) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', this.processTransaction(contract.methods.start(sheltererId, bundleId), { value: fee }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function start(_x3, _x4, _x5) {\n return _ref3.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: 'markAsExpired',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', this.processTransaction(contract.methods.markAsExpired(challengeId)));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function markAsExpired(_x6) {\n return _ref4.apply(this, arguments);\n }\n\n return markAsExpired;\n }()\n }, {\n key: 'challengeIsTimedOut',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.challengeIsTimedOut(challengeId).call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function challengeIsTimedOut(_x7) {\n return _ref5.apply(this, arguments);\n }\n\n return challengeIsTimedOut;\n }()\n }, {\n key: 'canResolve',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', contract.methods.canResolve(this.defaultAddress, challengeId).call());\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function canResolve(_x8) {\n return _ref6.apply(this, arguments);\n }\n\n return canResolve;\n }()\n }, {\n key: 'getChallengeId',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(sheltererId, bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.contract();\n\n case 2:\n contract = _context7.sent;\n return _context7.abrupt('return', contract.methods.getChallengeId(sheltererId, bundleId).call());\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getChallengeId(_x9, _x10) {\n return _ref7.apply(this, arguments);\n }\n\n return getChallengeId;\n }()\n }, {\n key: 'getChallengeCreationTime',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.contract();\n\n case 2:\n contract = _context8.sent;\n return _context8.abrupt('return', contract.methods.getCreationTime(challengeId).call());\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function getChallengeCreationTime(_x11) {\n return _ref8.apply(this, arguments);\n }\n\n return getChallengeCreationTime;\n }()\n }, {\n key: 'isInProgress',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.contract();\n\n case 2:\n contract = _context9.sent;\n return _context9.abrupt('return', contract.methods.isInProgress(challengeId).call());\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function isInProgress(_x12) {\n return _ref9.apply(this, arguments);\n }\n\n return isInProgress;\n }()\n }, {\n key: 'getChallengeDesignatedShelterer',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(challengeId) {\n var contract;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.contract();\n\n case 2:\n contract = _context10.sent;\n return _context10.abrupt('return', contract.methods.getDesignatedShelterer(challengeId).call());\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function getChallengeDesignatedShelterer(_x13) {\n return _ref10.apply(this, arguments);\n }\n\n return getChallengeDesignatedShelterer;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'challenges';\n }\n }]);\n return ChallengeWrapper;\n}(_managed_contract_wrapper2.default);\n\nexports.default = ChallengeWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChallengesEventEmitterWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ChallengesEventEmitterWrapper, _ManagedContractWrapp);\n\n function ChallengesEventEmitterWrapper() {\n (0, _classCallCheck3.default)(this, ChallengesEventEmitterWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ChallengesEventEmitterWrapper.__proto__ || Object.getPrototypeOf(ChallengesEventEmitterWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ChallengesEventEmitterWrapper, [{\n key: 'challenges',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('ChallengeCreated', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function challenges(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return challenges;\n }()\n }, {\n key: 'resolvedChallenges',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('ChallengeResolved', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function resolvedChallenges(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return resolvedChallenges;\n }()\n }, {\n key: 'timedOutChallenges',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.getPastEvents('ChallengeTimeout', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function timedOutChallenges(_x5, _x6) {\n return _ref3.apply(this, arguments);\n }\n\n return timedOutChallenges;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'challengesEventEmitter';\n }\n }]);\n return ChallengesEventEmitterWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ChallengesEventEmitterWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ConfigWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ConfigWrapper, _ManagedContractWrapp);\n\n function ConfigWrapper() {\n (0, _classCallCheck3.default)(this, ConfigWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ConfigWrapper.__proto__ || Object.getPrototypeOf(ConfigWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ConfigWrapper, [{\n key: 'atlas1Stake',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.ATLAS1_STAKE().call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function atlas1Stake() {\n return _ref.apply(this, arguments);\n }\n\n return atlas1Stake;\n }()\n }, {\n key: 'challengeDuration',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.CHALLENGE_DURATION().call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function challengeDuration() {\n return _ref2.apply(this, arguments);\n }\n\n return challengeDuration;\n }()\n }, {\n key: 'bundleSizeLimit',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.BUNDLE_SIZE_LIMIT().call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function bundleSizeLimit() {\n return _ref3.apply(this, arguments);\n }\n\n return bundleSizeLimit;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'config';\n }\n }]);\n return ConfigWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\n/* eslint-disable new-cap */\n\n\nexports.default = ConfigWrapper;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _asyncToGenerator2 = require(\"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\n/** @abstract */\nvar ContractWrapper = function () {\n function ContractWrapper(web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, ContractWrapper);\n\n this.web3 = web3;\n this.defaultAddress = defaultAddress;\n }\n\n (0, _createClass3.default)(ContractWrapper, [{\n key: \"processTransaction\",\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(transactionObject) {\n var sendParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", transactionObject.send((0, _extends3.default)({ from: this.defaultAddress }, sendParams)));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function processTransaction(_x) {\n return _ref.apply(this, arguments);\n }\n\n return processTransaction;\n }()\n }, {\n key: \"setDefaultAddress\",\n value: function setDefaultAddress(defaultAddress) {\n this.defaultAddress = defaultAddress;\n }\n }]);\n return ContractWrapper;\n}();\n\nexports.default = ContractWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_ownable_contract_wrapper = require('./managed_ownable_contract_wrapper');\n\nvar _managed_ownable_contract_wrapper2 = _interopRequireDefault(_managed_ownable_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FeesWrapper = function (_ManagedOwnableContra) {\n (0, _inherits3.default)(FeesWrapper, _ManagedOwnableContra);\n\n function FeesWrapper() {\n (0, _classCallCheck3.default)(this, FeesWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (FeesWrapper.__proto__ || Object.getPrototypeOf(FeesWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(FeesWrapper, [{\n key: 'setBaseUploadFee',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fee) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', this.processTransaction(contract.methods.setBaseUploadFee(fee)));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setBaseUploadFee(_x) {\n return _ref.apply(this, arguments);\n }\n\n return setBaseUploadFee;\n }()\n }, {\n key: 'feeForUpload',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(storagePeriods) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.getFeeForUpload(storagePeriods).call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function feeForUpload(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return feeForUpload;\n }()\n }, {\n key: 'feeForChallenge',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(storagePeriods) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.getFeeForChallenge(storagePeriods).call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function feeForChallenge(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return feeForChallenge;\n }()\n }, {\n key: 'getPenalty',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(nominalStake, penaltiesCount, lastPenaltyTime) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.getPenalty(nominalStake, penaltiesCount, lastPenaltyTime).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getPenalty(_x4, _x5, _x6) {\n return _ref4.apply(this, arguments);\n }\n\n return getPenalty;\n }()\n }, {\n key: 'getDeveloper',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.developer().call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getDeveloper() {\n return _ref5.apply(this, arguments);\n }\n\n return getDeveloper;\n }()\n }, {\n key: 'setDeveloper',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(developer) {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', this.processTransaction(contract.methods.setDeveloper(developer)));\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function setDeveloper(_x7) {\n return _ref6.apply(this, arguments);\n }\n\n return setDeveloper;\n }()\n }, {\n key: 'getDeveloperFee',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7() {\n var contract;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.contract();\n\n case 2:\n contract = _context7.sent;\n return _context7.abrupt('return', contract.methods.developerFeePPM().call());\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getDeveloperFee() {\n return _ref7.apply(this, arguments);\n }\n\n return getDeveloperFee;\n }()\n }, {\n key: 'setDeveloperFee',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(fee) {\n var contract;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.contract();\n\n case 2:\n contract = _context8.sent;\n return _context8.abrupt('return', this.processTransaction(contract.methods.setDeveloperFee(fee)));\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function setDeveloperFee(_x8) {\n return _ref8.apply(this, arguments);\n }\n\n return setDeveloperFee;\n }()\n }, {\n key: 'getDeveloperUploadFee',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n var contract;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.contract();\n\n case 2:\n contract = _context9.sent;\n return _context9.abrupt('return', contract.methods.developerUploadFeePPM().call());\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getDeveloperUploadFee() {\n return _ref9.apply(this, arguments);\n }\n\n return getDeveloperUploadFee;\n }()\n }, {\n key: 'setDeveloperUploadFee',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(fee) {\n var contract;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.contract();\n\n case 2:\n contract = _context10.sent;\n return _context10.abrupt('return', this.processTransaction(contract.methods.setDeveloperUploadFee(fee)));\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function setDeveloperUploadFee(_x9) {\n return _ref10.apply(this, arguments);\n }\n\n return setDeveloperUploadFee;\n }()\n }, {\n key: 'setSupportFee',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(support, fee) {\n var contract;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.contract();\n\n case 2:\n contract = _context11.sent;\n return _context11.abrupt('return', this.processTransaction(contract.methods.setSupportFee(support, fee)));\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function setSupportFee(_x10, _x11) {\n return _ref11.apply(this, arguments);\n }\n\n return setSupportFee;\n }()\n }, {\n key: 'getAdmins',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() {\n var contract;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return this.contract();\n\n case 2:\n contract = _context12.sent;\n return _context12.abrupt('return', contract.methods.getAdmins().call());\n\n case 4:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function getAdmins() {\n return _ref12.apply(this, arguments);\n }\n\n return getAdmins;\n }()\n }, {\n key: 'addAdmin',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(admin) {\n var contract;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.next = 2;\n return this.contract();\n\n case 2:\n contract = _context13.sent;\n return _context13.abrupt('return', this.processTransaction(contract.methods.addAdmin(admin)));\n\n case 4:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function addAdmin(_x12) {\n return _ref13.apply(this, arguments);\n }\n\n return addAdmin;\n }()\n }, {\n key: 'removeAdmin',\n value: function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(admin) {\n var contract;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.contract();\n\n case 2:\n contract = _context14.sent;\n return _context14.abrupt('return', this.processTransaction(contract.methods.removeAdmin(admin)));\n\n case 4:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function removeAdmin(_x13) {\n return _ref14.apply(this, arguments);\n }\n\n return removeAdmin;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'fees';\n }\n }]);\n return FeesWrapper;\n}(_managed_ownable_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = FeesWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _web3_tools = require('../utils/web3_tools');\n\nvar _contract_wrapper = require('./contract_wrapper');\n\nvar _contract_wrapper2 = _interopRequireDefault(_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar GenesisContractWrapper = function (_ContractWrapper) {\n (0, _inherits3.default)(GenesisContractWrapper, _ContractWrapper);\n\n function GenesisContractWrapper(address, contractJson, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, GenesisContractWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GenesisContractWrapper.__proto__ || Object.getPrototypeOf(GenesisContractWrapper)).call(this, web3, defaultAddress));\n\n if (address === undefined) {\n throw new Error('address is not configured');\n }\n\n _this.contract = (0, _web3_tools.loadContract)(_this.web3, contractJson.abi, address);\n return _this;\n }\n\n (0, _createClass3.default)(GenesisContractWrapper, [{\n key: 'getOwner',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', this.contract.methods.owner().call());\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getOwner() {\n return _ref.apply(this, arguments);\n }\n\n return getOwner;\n }()\n }, {\n key: 'transferOwnership',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(newOwnerAddress) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', this.contract.methods.transferOwnership(newOwnerAddress).send({ from: this.defaultAddress }));\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function transferOwnership(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return transferOwnership;\n }()\n }, {\n key: 'address',\n value: function address() {\n return this.contract.options.address;\n }\n }]);\n return GenesisContractWrapper;\n}(_contract_wrapper2.default);\n\nexports.default = GenesisContractWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nvar _web3_tools = require('../utils/web3_tools');\n\nvar _genesis_contract_wrapper = require('./genesis_contract_wrapper');\n\nvar _genesis_contract_wrapper2 = _interopRequireDefault(_genesis_contract_wrapper);\n\nvar _constants = require('../constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar HeadWrapper = function (_GenesisContractWrapp) {\n (0, _inherits3.default)(HeadWrapper, _GenesisContractWrapp);\n\n function HeadWrapper(headContractAddress, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, HeadWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HeadWrapper.__proto__ || Object.getPrototypeOf(HeadWrapper)).call(this, headContractAddress, _contract_jsons2.default.head, web3, defaultAddress));\n\n _this.clearContractAddressCache();\n\n _this.availableCatalogueContracts = ['kycWhitelist', 'roles', 'fees', 'time', 'challenges', 'payouts', 'shelteringTransfers', 'sheltering', 'uploads', 'config', 'validatorProxy', 'poolsNodesManager'];\n\n _this.availableStorageCatalogueContracts = ['apolloDepositStore', 'atlasStakeStore', 'bundleStore', 'challengesStore', 'kycWhitelistStore', 'payoutsStore', 'rolesStore', 'shelteringTransfersStore', 'challengesEventEmitter', 'transfersEventEmitter', 'rewardsEventEmitter', 'rolesEventEmitter', 'poolsStore', 'poolEventsEmitter', 'nodeAddressesStore', 'rolesPrivilagesStore'];\n\n _this.cachedContextContract = null;\n _this.cachedCatalogueContract = null;\n _this.cachedStorageCatalogueContract = null;\n return _this;\n }\n\n (0, _createClass3.default)(HeadWrapper, [{\n key: 'contractAddressByName',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(contractName) {\n var catalogue, storageCatalogue;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.availableCatalogueContracts.includes(contractName)) {\n _context.next = 13;\n break;\n }\n\n _context.next = 3;\n return this.catalogue();\n\n case 3:\n catalogue = _context.sent;\n\n if (!this.isNotInContractAddressCache(contractName)) {\n _context.next = 11;\n break;\n }\n\n _context.t0 = this;\n _context.t1 = contractName;\n _context.next = 9;\n return catalogue.methods[contractName + '()']().call();\n\n case 9:\n _context.t2 = _context.sent;\n\n _context.t0.updateContractAddressCache.call(_context.t0, _context.t1, _context.t2);\n\n case 11:\n _context.next = 27;\n break;\n\n case 13:\n if (!this.availableStorageCatalogueContracts.includes(contractName)) {\n _context.next = 26;\n break;\n }\n\n _context.next = 16;\n return this.storageCatalogue();\n\n case 16:\n storageCatalogue = _context.sent;\n\n if (!this.isNotInContractAddressCache(contractName)) {\n _context.next = 24;\n break;\n }\n\n _context.t3 = this;\n _context.t4 = contractName;\n _context.next = 22;\n return storageCatalogue.methods[contractName + '()']().call();\n\n case 22:\n _context.t5 = _context.sent;\n\n _context.t3.updateContractAddressCache.call(_context.t3, _context.t4, _context.t5);\n\n case 24:\n _context.next = 27;\n break;\n\n case 26:\n throw new Error('Requested contract does not exist');\n\n case 27:\n return _context.abrupt('return', this.cachedAddresses['' + contractName]);\n\n case 28:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function contractAddressByName(_x) {\n return _ref.apply(this, arguments);\n }\n\n return contractAddressByName;\n }()\n }, {\n key: 'setContext',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract.methods.setContext(address).send({\n from: this.defaultAddress\n });\n\n case 2:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setContext(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return setContext;\n }()\n }, {\n key: 'context',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var contextAddress;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract.methods.context().call();\n\n case 2:\n contextAddress = _context3.sent;\n\n if (!(contextAddress === _constants.ZERO_ADDRESS)) {\n _context3.next = 5;\n break;\n }\n\n throw 'Context address is not set in the head contract';\n\n case 5:\n if (!this.cachedContractAddressHasChanged(contextAddress, 'context')) {\n _context3.next = 10;\n break;\n }\n\n this.clearContractAddressCache();\n this.updateContractAddressCache('context', contextAddress);\n _context3.next = 12;\n break;\n\n case 10:\n if (!this.cachedContextContract) {\n _context3.next = 12;\n break;\n }\n\n return _context3.abrupt('return', this.cachedContextContract);\n\n case 12:\n this.cachedContextContract = (0, _web3_tools.loadContract)(this.web3, _contract_jsons2.default.context.abi, contextAddress);\n return _context3.abrupt('return', this.cachedContextContract);\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function context() {\n return _ref3.apply(this, arguments);\n }\n\n return context;\n }()\n }, {\n key: 'catalogue',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var context;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.context();\n\n case 2:\n context = _context4.sent;\n\n if (!this.isNotInContractAddressCache('catalogue')) {\n _context4.next = 11;\n break;\n }\n\n _context4.t0 = this;\n _context4.next = 7;\n return context.methods.catalogue().call();\n\n case 7:\n _context4.t1 = _context4.sent;\n\n _context4.t0.updateContractAddressCache.call(_context4.t0, 'catalogue', _context4.t1);\n\n _context4.next = 13;\n break;\n\n case 11:\n if (!this.cachedCatalogueContract) {\n _context4.next = 13;\n break;\n }\n\n return _context4.abrupt('return', this.cachedCatalogueContract);\n\n case 13:\n this.cachedCatalogueContract = (0, _web3_tools.loadContract)(this.web3, _contract_jsons2.default.catalogue.abi, this.cachedAddresses.catalogue);\n return _context4.abrupt('return', this.cachedCatalogueContract);\n\n case 15:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function catalogue() {\n return _ref4.apply(this, arguments);\n }\n\n return catalogue;\n }()\n }, {\n key: 'storageCatalogue',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var context;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.context();\n\n case 2:\n context = _context5.sent;\n\n if (!this.isNotInContractAddressCache('storageCatalogue')) {\n _context5.next = 11;\n break;\n }\n\n _context5.t0 = this;\n _context5.next = 7;\n return context.methods.storageCatalogue().call();\n\n case 7:\n _context5.t1 = _context5.sent;\n\n _context5.t0.updateContractAddressCache.call(_context5.t0, 'storageCatalogue', _context5.t1);\n\n _context5.next = 13;\n break;\n\n case 11:\n if (!this.cachedStorageCatalogueContract) {\n _context5.next = 13;\n break;\n }\n\n return _context5.abrupt('return', this.cachedStorageCatalogueContract);\n\n case 13:\n this.cachedStorageCatalogueContract = (0, _web3_tools.loadContract)(this.web3, _contract_jsons2.default.storageCatalogue.abi, this.cachedAddresses.storageCatalogue);\n return _context5.abrupt('return', this.cachedStorageCatalogueContract);\n\n case 15:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function storageCatalogue() {\n return _ref5.apply(this, arguments);\n }\n\n return storageCatalogue;\n }()\n }, {\n key: 'clearContractAddressCache',\n value: function clearContractAddressCache() {\n this.cachedAddresses = {};\n }\n }, {\n key: 'isNotInContractAddressCache',\n value: function isNotInContractAddressCache(contractName) {\n return !('' + contractName in this.cachedAddresses);\n }\n }, {\n key: 'cachedContractAddressHasChanged',\n value: function cachedContractAddressHasChanged(contractAddress, contractName) {\n return contractAddress !== this.cachedAddresses['' + contractName];\n }\n }, {\n key: 'updateContractAddressCache',\n value: function updateContractAddressCache(contractName, contractAddress) {\n this.cachedAddresses['' + contractName] = contractAddress;\n }\n }, {\n key: 'contractsVersion',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.context();\n\n case 2:\n return _context6.abrupt('return', _context6.sent.methods.versionTag().call());\n\n case 3:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function contractsVersion() {\n return _ref6.apply(this, arguments);\n }\n\n return contractsVersion;\n }()\n }]);\n return HeadWrapper;\n}(_genesis_contract_wrapper2.default);\n\nexports.default = HeadWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_ownable_contract_wrapper = require('./managed_ownable_contract_wrapper');\n\nvar _managed_ownable_contract_wrapper2 = _interopRequireDefault(_managed_ownable_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar KycWhitelistWrapper = function (_ManagedOwnableContra) {\n (0, _inherits3.default)(KycWhitelistWrapper, _ManagedOwnableContra);\n\n function KycWhitelistWrapper() {\n (0, _classCallCheck3.default)(this, KycWhitelistWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (KycWhitelistWrapper.__proto__ || Object.getPrototypeOf(KycWhitelistWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(KycWhitelistWrapper, [{\n key: 'add',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(address, role, requiredDeposit) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', this.processTransaction(contract.methods.add(address, role, requiredDeposit)));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function add(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return add;\n }()\n }, {\n key: 'remove',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', this.processTransaction(contract.methods.remove(address)));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function remove(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return remove;\n }()\n }, {\n key: 'isWhitelisted',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(address) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.isWhitelisted(address).call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function isWhitelisted(_x5) {\n return _ref3.apply(this, arguments);\n }\n\n return isWhitelisted;\n }()\n }, {\n key: 'hasRoleAssigned',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(address, role) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.hasRoleAssigned(address, role).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function hasRoleAssigned(_x6, _x7) {\n return _ref4.apply(this, arguments);\n }\n\n return hasRoleAssigned;\n }()\n }, {\n key: 'getRequiredDeposit',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(address) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.getRequiredDeposit(address).call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getRequiredDeposit(_x8) {\n return _ref5.apply(this, arguments);\n }\n\n return getRequiredDeposit;\n }()\n }, {\n key: 'getRoleAssigned',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(address) {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', contract.methods.getRoleAssigned(address).call());\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getRoleAssigned(_x9) {\n return _ref6.apply(this, arguments);\n }\n\n return getRoleAssigned;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'kycWhitelist';\n }\n }]);\n return KycWhitelistWrapper;\n}(_managed_ownable_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = KycWhitelistWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _web3_tools = require('../utils/web3_tools');\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nvar _contract_wrapper = require('./contract_wrapper');\n\nvar _contract_wrapper2 = _interopRequireDefault(_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/** @abstract */\nvar ManagedContractWrapper = function (_ContractWrapper) {\n (0, _inherits3.default)(ManagedContractWrapper, _ContractWrapper);\n\n function ManagedContractWrapper(headWrapper, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, ManagedContractWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ManagedContractWrapper.__proto__ || Object.getPrototypeOf(ManagedContractWrapper)).call(this, web3, defaultAddress));\n\n _this.headWrapper = headWrapper;\n _this.cachedContractObject = null;\n _this.cachedContractAddress = null;\n return _this;\n }\n\n (0, _createClass3.default)(ManagedContractWrapper, [{\n key: 'address',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', this.headWrapper.contractAddressByName(this.getContractName));\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function address() {\n return _ref.apply(this, arguments);\n }\n\n return address;\n }()\n }, {\n key: 'contract',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var contractAddress;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.headWrapper.contractAddressByName(this.getContractName);\n\n case 2:\n contractAddress = _context2.sent;\n\n if (!(contractAddress === undefined)) {\n _context2.next = 5;\n break;\n }\n\n throw new Error('Contract is not deployed');\n\n case 5:\n if (this.cachedContractAddress !== contractAddress) {\n this.cachedContractObject = (0, _web3_tools.loadContract)(this.web3, _contract_jsons2.default[this.getContractName].abi, contractAddress);\n this.cachedContractAddress = contractAddress;\n }\n return _context2.abrupt('return', this.cachedContractObject);\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function contract() {\n return _ref2.apply(this, arguments);\n }\n\n return contract;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n throw new Error('Abstract method getContractName needs to be overridden');\n }\n }]);\n return ManagedContractWrapper;\n}(_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ManagedContractWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/** @abstract */\nvar ManagedOwnableContractWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ManagedOwnableContractWrapper, _ManagedContractWrapp);\n\n function ManagedOwnableContractWrapper() {\n (0, _classCallCheck3.default)(this, ManagedOwnableContractWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ManagedOwnableContractWrapper.__proto__ || Object.getPrototypeOf(ManagedOwnableContractWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ManagedOwnableContractWrapper, [{\n key: 'getOwner',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.owner().call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getOwner() {\n return _ref.apply(this, arguments);\n }\n\n return getOwner;\n }()\n }, {\n key: 'transferOwnership',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(newOwnerAddress) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', this.processTransaction(contract.methods.transferOwnership(newOwnerAddress)));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function transferOwnership(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return transferOwnership;\n }()\n }]);\n return ManagedOwnableContractWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ManagedOwnableContractWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nvar _genesis_contract_wrapper = require('./genesis_contract_wrapper');\n\nvar _genesis_contract_wrapper2 = _interopRequireDefault(_genesis_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar MultiplexerWrapper = function (_GenesisContractWrapp) {\n (0, _inherits3.default)(MultiplexerWrapper, _GenesisContractWrapp);\n\n function MultiplexerWrapper(multiplexerContractAddress, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, MultiplexerWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (MultiplexerWrapper.__proto__ || Object.getPrototypeOf(MultiplexerWrapper)).call(this, multiplexerContractAddress, _contract_jsons2.default.multiplexer, web3, defaultAddress));\n }\n\n (0, _createClass3.default)(MultiplexerWrapper, [{\n key: 'transferOwnership',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(newOwnerAddress) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', this.contract.methods.transferOwnership(newOwnerAddress).encodeABI());\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function transferOwnership(_x) {\n return _ref.apply(this, arguments);\n }\n\n return transferOwnership;\n }()\n }, {\n key: 'transferContractsOwnership',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', this.contract.methods.transferContractsOwnership(address).encodeABI());\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function transferContractsOwnership(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return transferContractsOwnership;\n }()\n }, {\n key: 'changeContext',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(contextAddress) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', this.contract.methods.changeContext(contextAddress).encodeABI());\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function changeContext(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return changeContext;\n }()\n }, {\n key: 'addToWhitelist',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(candidateAddress, role, deposit) {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', this.contract.methods.addToWhitelist(candidateAddress, role, deposit).encodeABI());\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function addToWhitelist(_x4, _x5, _x6) {\n return _ref4.apply(this, arguments);\n }\n\n return addToWhitelist;\n }()\n }, {\n key: 'removeFromWhitelist',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(candidateAddress) {\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt('return', this.contract.methods.removeFromWhitelist(candidateAddress).encodeABI());\n\n case 1:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function removeFromWhitelist(_x7) {\n return _ref5.apply(this, arguments);\n }\n\n return removeFromWhitelist;\n }()\n }, {\n key: 'retireApollo',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(apolloAddress) {\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt('return', this.contract.methods.retireApollo(apolloAddress).encodeABI());\n\n case 1:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function retireApollo(_x8) {\n return _ref6.apply(this, arguments);\n }\n\n return retireApollo;\n }()\n }, {\n key: 'setBaseUploadFee',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(fee) {\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt('return', this.contract.methods.setBaseUploadFee(fee).encodeABI());\n\n case 1:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function setBaseUploadFee(_x9) {\n return _ref7.apply(this, arguments);\n }\n\n return setBaseUploadFee;\n }()\n }, {\n key: 'transferOwnershipForValidatorSet',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(address) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n return _context8.abrupt('return', this.contract.methods.transferOwnershipForValidatorSet(address).encodeABI());\n\n case 1:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function transferOwnershipForValidatorSet(_x10) {\n return _ref8.apply(this, arguments);\n }\n\n return transferOwnershipForValidatorSet;\n }()\n }, {\n key: 'transferOwnershipForBlockRewards',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(address) {\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n return _context9.abrupt('return', this.contract.methods.transferOwnershipForBlockRewards(address).encodeABI());\n\n case 1:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function transferOwnershipForBlockRewards(_x11) {\n return _ref9.apply(this, arguments);\n }\n\n return transferOwnershipForBlockRewards;\n }()\n }, {\n key: 'setBaseReward',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(newBaseReward) {\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n return _context10.abrupt('return', this.contract.methods.setBaseReward(newBaseReward).encodeABI());\n\n case 1:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function setBaseReward(_x12) {\n return _ref10.apply(this, arguments);\n }\n\n return setBaseReward;\n }()\n }, {\n key: 'setDeveloper',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(developer) {\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n return _context11.abrupt('return', this.contract.methods.setDeveloper(developer).encodeABI());\n\n case 1:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function setDeveloper(_x13) {\n return _ref11.apply(this, arguments);\n }\n\n return setDeveloper;\n }()\n }, {\n key: 'setDeveloperFee',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(developerFee) {\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n return _context12.abrupt('return', this.contract.methods.setDeveloperFee(developerFee).encodeABI());\n\n case 1:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function setDeveloperFee(_x14) {\n return _ref12.apply(this, arguments);\n }\n\n return setDeveloperFee;\n }()\n }, {\n key: 'setSupportFee',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(support, fee) {\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt('return', this.contract.methods.setSupportFee(support, fee).encodeABI());\n\n case 1:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function setSupportFee(_x15, _x16) {\n return _ref13.apply(this, arguments);\n }\n\n return setSupportFee;\n }()\n }, {\n key: 'addAdmin',\n value: function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(admin) {\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n return _context14.abrupt('return', this.contract.methods.addAdmin(admin).encodeABI());\n\n case 1:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function addAdmin(_x17) {\n return _ref14.apply(this, arguments);\n }\n\n return addAdmin;\n }()\n }, {\n key: 'removeAdmin',\n value: function () {\n var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(admin) {\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n return _context15.abrupt('return', this.contract.methods.removeAdmin(admin).encodeABI());\n\n case 1:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function removeAdmin(_x18) {\n return _ref15.apply(this, arguments);\n }\n\n return removeAdmin;\n }()\n }, {\n key: 'addPool',\n value: function () {\n var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(pool) {\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt('return', this.contract.methods.addPool(pool).encodeABI());\n\n case 1:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function addPool(_x19) {\n return _ref16.apply(this, arguments);\n }\n\n return addPool;\n }()\n }, {\n key: 'removePool',\n value: function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(pool) {\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n return _context17.abrupt('return', this.contract.methods.removePool(pool).encodeABI());\n\n case 1:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function removePool(_x20) {\n return _ref17.apply(this, arguments);\n }\n\n return removePool;\n }()\n }, {\n key: 'setUserRoles',\n value: function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(roleHexes, userAddress) {\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n return _context18.abrupt('return', this.contract.methods.setUserRoles(userAddress, roleHexes).encodeABI());\n\n case 1:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function setUserRoles(_x21, _x22) {\n return _ref18.apply(this, arguments);\n }\n\n return setUserRoles;\n }()\n }, {\n key: 'setRole',\n value: function () {\n var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19(roleName, trueSelectors, falseSelectors) {\n return _regenerator2.default.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n return _context19.abrupt('return', this.contract.methods.setRole(roleName, trueSelectors, falseSelectors).encodeABI());\n\n case 1:\n case 'end':\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function setRole(_x23, _x24, _x25) {\n return _ref19.apply(this, arguments);\n }\n\n return setRole;\n }()\n }]);\n return MultiplexerWrapper;\n}(_genesis_contract_wrapper2.default);\n\nexports.default = MultiplexerWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _contract_wrapper = require('./contract_wrapper');\n\nvar _contract_wrapper2 = _interopRequireDefault(_contract_wrapper);\n\nvar _web3_tools = require('../utils/web3_tools');\n\nvar _contract_jsons = require('../contract_jsons');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MultisigWrapper = function (_ContractWrapper) {\n (0, _inherits3.default)(MultisigWrapper, _ContractWrapper);\n\n function MultisigWrapper(contractAddress, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, MultisigWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MultisigWrapper.__proto__ || Object.getPrototypeOf(MultisigWrapper)).call(this, web3, defaultAddress));\n\n _this.address = contractAddress;\n _this.contract = (0, _web3_tools.loadContract)(web3, _contract_jsons.multisig.abi, contractAddress);\n return _this;\n }\n\n (0, _createClass3.default)(MultisigWrapper, [{\n key: 'getPendingTransaction',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var count;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract.methods.getTransactionCount(true, false).call();\n\n case 2:\n count = _context.sent;\n return _context.abrupt('return', this.contract.methods.getTransactionIds(0, count, true, false).call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getPendingTransaction() {\n return _ref.apply(this, arguments);\n }\n\n return getPendingTransaction;\n }()\n }, {\n key: 'getConfirmations',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(transactionId) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', this.contract.methods.getConfirmations(transactionId).call());\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getConfirmations(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return getConfirmations;\n }()\n }, {\n key: 'getConfirmationCount',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(transactionId) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', this.contract.methods.getConfirmationCount(transactionId).call());\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getConfirmationCount(_x2) {\n return _ref3.apply(this, arguments);\n }\n\n return getConfirmationCount;\n }()\n }, {\n key: 'confirmationsRequired',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', this.contract.methods.required().call());\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function confirmationsRequired() {\n return _ref4.apply(this, arguments);\n }\n\n return confirmationsRequired;\n }()\n }, {\n key: 'submitTransaction',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(destination, value, data) {\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt('return', this.processTransaction(this.contract.methods.submitTransaction(destination, value, data)));\n\n case 1:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function submitTransaction(_x3, _x4, _x5) {\n return _ref5.apply(this, arguments);\n }\n\n return submitTransaction;\n }()\n }, {\n key: 'confirmTransaction',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(transactionId) {\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt('return', this.processTransaction(this.contract.methods.confirmTransaction(transactionId)));\n\n case 1:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function confirmTransaction(_x6) {\n return _ref6.apply(this, arguments);\n }\n\n return confirmTransaction;\n }()\n }, {\n key: 'revokeConfirmation',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(transactionId) {\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt('return', this.processTransaction(this.contract.methods.revokeConfirmation(transactionId)));\n\n case 1:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function revokeConfirmation(_x7) {\n return _ref7.apply(this, arguments);\n }\n\n return revokeConfirmation;\n }()\n }, {\n key: 'getTransaction',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(transactionId) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n return _context8.abrupt('return', this.contract.methods.transactions(transactionId).call());\n\n case 1:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function getTransaction(_x8) {\n return _ref8.apply(this, arguments);\n }\n\n return getTransaction;\n }()\n }, {\n key: 'addOwner',\n value: function addOwner(ownerAddress) {\n return this.contract.methods.addOwner(ownerAddress).encodeABI();\n }\n }, {\n key: 'removeOwner',\n value: function removeOwner(ownerAddress) {\n return this.contract.methods.removeOwner(ownerAddress).encodeABI();\n }\n }, {\n key: 'changeRequirement',\n value: function changeRequirement(newRequiredConfirmationsCount) {\n return this.contract.methods.changeRequirement(newRequiredConfirmationsCount).encodeABI();\n }\n }, {\n key: 'getOwners',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n return _context9.abrupt('return', this.contract.methods.getOwners().call());\n\n case 1:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getOwners() {\n return _ref9.apply(this, arguments);\n }\n\n return getOwners;\n }()\n }, {\n key: 'setRolesPrivilagesStore',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(storeAddress) {\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n return _context10.abrupt('return', this.processTransaction(this.contract.methods.setRolesPrivilagesStore(storeAddress)));\n\n case 1:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function setRolesPrivilagesStore(_x9) {\n return _ref10.apply(this, arguments);\n }\n\n return setRolesPrivilagesStore;\n }()\n }]);\n return MultisigWrapper;\n}(_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = MultisigWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NodeAddressesStoreWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(NodeAddressesStoreWrapper, _ManagedContractWrapp);\n\n function NodeAddressesStoreWrapper() {\n (0, _classCallCheck3.default)(this, NodeAddressesStoreWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (NodeAddressesStoreWrapper.__proto__ || Object.getPrototypeOf(NodeAddressesStoreWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NodeAddressesStoreWrapper, [{\n key: 'nodeAddressesAdded',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('NodeAddressesAdded', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function nodeAddressesAdded(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return nodeAddressesAdded;\n }()\n }, {\n key: 'nodeAddressesRemoved',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('NodeAddressesRemoved', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function nodeAddressesRemoved(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return nodeAddressesRemoved;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'nodeAddressesStore';\n }\n }]);\n return NodeAddressesStoreWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = NodeAddressesStoreWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PayoutsWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(PayoutsWrapper, _ManagedContractWrapp);\n\n function PayoutsWrapper() {\n (0, _classCallCheck3.default)(this, PayoutsWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (PayoutsWrapper.__proto__ || Object.getPrototypeOf(PayoutsWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PayoutsWrapper, [{\n key: 'availablePayoutAmountInPeriod',\n\n\n // Resolves in AMB * 10^(-18) units\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(payoutPeriod) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.available(payoutPeriod).call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function availablePayoutAmountInPeriod(_x) {\n return _ref.apply(this, arguments);\n }\n\n return availablePayoutAmountInPeriod;\n }()\n\n // Resolves in AMB * 10^(-18) units\n\n }, {\n key: 'availablePayoutAmountInPeriodForAddress',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(target, payoutPeriod) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.availableForAddress(target, payoutPeriod).call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function availablePayoutAmountInPeriodForAddress(_x2, _x3) {\n return _ref2.apply(this, arguments);\n }\n\n return availablePayoutAmountInPeriodForAddress;\n }()\n }, {\n key: 'withdraw',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', this.processTransaction(contract.methods.withdraw(this.defaultAddress)));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function withdraw() {\n return _ref3.apply(this, arguments);\n }\n\n return withdraw;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'payouts';\n }\n }]);\n return PayoutsWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = PayoutsWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PoolEventsEmitterWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(PoolEventsEmitterWrapper, _ManagedContractWrapp);\n\n function PoolEventsEmitterWrapper() {\n (0, _classCallCheck3.default)(this, PoolEventsEmitterWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (PoolEventsEmitterWrapper.__proto__ || Object.getPrototypeOf(PoolEventsEmitterWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PoolEventsEmitterWrapper, [{\n key: 'poolStakeChangings',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('PoolStakeChanged', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function poolStakeChangings(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return poolStakeChangings;\n }()\n }, {\n key: 'poolRewards',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('PoolReward', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function poolRewards(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return poolRewards;\n }()\n }, {\n key: 'addNodeRequests',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.getPastEvents('AddNodeRequest', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function addNodeRequests(_x5, _x6) {\n return _ref3.apply(this, arguments);\n }\n\n return addNodeRequests;\n }()\n }, {\n key: 'addNodeRequestsResolved',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.getPastEvents('AddNodeRequestResolved', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function addNodeRequestsResolved(_x7, _x8) {\n return _ref4.apply(this, arguments);\n }\n\n return addNodeRequestsResolved;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'poolEventsEmitter';\n }\n }]);\n return PoolEventsEmitterWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = PoolEventsEmitterWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_ownable_contract_wrapper = require('./managed_ownable_contract_wrapper');\n\nvar _managed_ownable_contract_wrapper2 = _interopRequireDefault(_managed_ownable_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PoolsNodesManagerWrapper = function (_ManagedOwnableContra) {\n (0, _inherits3.default)(PoolsNodesManagerWrapper, _ManagedOwnableContra);\n\n function PoolsNodesManagerWrapper() {\n (0, _classCallCheck3.default)(this, PoolsNodesManagerWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (PoolsNodesManagerWrapper.__proto__ || Object.getPrototypeOf(PoolsNodesManagerWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PoolsNodesManagerWrapper, [{\n key: 'getContractName',\n get: function get() {\n return 'poolsNodesManager';\n }\n }]);\n return PoolsNodesManagerWrapper;\n}(_managed_ownable_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = PoolsNodesManagerWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PoolsStoreWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(PoolsStoreWrapper, _ManagedContractWrapp);\n\n function PoolsStoreWrapper() {\n (0, _classCallCheck3.default)(this, PoolsStoreWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (PoolsStoreWrapper.__proto__ || Object.getPrototypeOf(PoolsStoreWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PoolsStoreWrapper, [{\n key: 'poolsAdded',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('PoolAdded', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function poolsAdded(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return poolsAdded;\n }()\n }, {\n key: 'poolsRemoved',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('PoolRemoved', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function poolsRemoved(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return poolsRemoved;\n }()\n }, {\n key: 'getPoolsCount',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.getPoolsCount().call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getPoolsCount() {\n return _ref3.apply(this, arguments);\n }\n\n return getPoolsCount;\n }()\n }, {\n key: 'getPool',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(idx) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.pools(idx).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getPool(_x5) {\n return _ref4.apply(this, arguments);\n }\n\n return getPool;\n }()\n }, {\n key: 'getPools',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(from, to) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.getPools(from, to).call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getPools(_x6, _x7) {\n return _ref5.apply(this, arguments);\n }\n\n return getPools;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'poolsStore';\n }\n }]);\n return PoolsStoreWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = PoolsStoreWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RewardsEventEmitterWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(RewardsEventEmitterWrapper, _ManagedContractWrapp);\n\n function RewardsEventEmitterWrapper() {\n (0, _classCallCheck3.default)(this, RewardsEventEmitterWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (RewardsEventEmitterWrapper.__proto__ || Object.getPrototypeOf(RewardsEventEmitterWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RewardsEventEmitterWrapper, [{\n key: 'atlasPayoutWithdrawals',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('AtlasPayoutWithdrawal', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function atlasPayoutWithdrawals(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return atlasPayoutWithdrawals;\n }()\n }, {\n key: 'apolloBundleReward',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('ApolloBundleReward', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function apolloBundleReward(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return apolloBundleReward;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'rewardsEventEmitter';\n }\n }]);\n return RewardsEventEmitterWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = RewardsEventEmitterWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RolesEventEmitterWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(RolesEventEmitterWrapper, _ManagedContractWrapp);\n\n function RolesEventEmitterWrapper() {\n (0, _classCallCheck3.default)(this, RolesEventEmitterWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (RolesEventEmitterWrapper.__proto__ || Object.getPrototypeOf(RolesEventEmitterWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RolesEventEmitterWrapper, [{\n key: 'nodeOnboardings',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('NodeOnboarded', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function nodeOnboardings(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return nodeOnboardings;\n }()\n }, {\n key: 'nodeRetirements',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('NodeRetired', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function nodeRetirements(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return nodeRetirements;\n }()\n }, {\n key: 'nodeUrlChanges',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.getPastEvents('NodeUrlChanged', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function nodeUrlChanges(_x5, _x6) {\n return _ref3.apply(this, arguments);\n }\n\n return nodeUrlChanges;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'rolesEventEmitter';\n }\n }]);\n return RolesEventEmitterWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = RolesEventEmitterWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RolesPrivilagesStoreWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(RolesPrivilagesStoreWrapper, _ManagedContractWrapp);\n\n function RolesPrivilagesStoreWrapper() {\n (0, _classCallCheck3.default)(this, RolesPrivilagesStoreWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (RolesPrivilagesStoreWrapper.__proto__ || Object.getPrototypeOf(RolesPrivilagesStoreWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RolesPrivilagesStoreWrapper, [{\n key: 'getAllMultiplexerSelectors',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var selectors;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n selectors = {};\n _context.next = 3;\n return this.web3.eth.abi.encodeFunctionSignature('addToWhitelist(address,Consts.NodeType,uint256)');\n\n case 3:\n selectors.addToWhitelist = _context.sent;\n _context.next = 6;\n return this.web3.eth.abi.encodeFunctionSignature('removeFromWhitelist(address)');\n\n case 6:\n selectors.removeFromWhitelist = _context.sent;\n _context.next = 9;\n return this.web3.eth.abi.encodeFunctionSignature('setBaseUploadFee(uint256)');\n\n case 9:\n selectors.setBaseUploadFee = _context.sent;\n _context.next = 12;\n return this.web3.eth.abi.encodeFunctionSignature('setBaseReward(uint256)');\n\n case 12:\n selectors.setBaseReward = _context.sent;\n _context.next = 15;\n return this.web3.eth.abi.encodeFunctionSignature('retireApollo(address)');\n\n case 15:\n selectors.retireApollo = _context.sent;\n _context.next = 18;\n return this.web3.eth.abi.encodeFunctionSignature('setDeveloperFee(uint256)');\n\n case 18:\n selectors.setDeveloperFee = _context.sent;\n _context.next = 21;\n return this.web3.eth.abi.encodeFunctionSignature('setDeveloper(address)');\n\n case 21:\n selectors.setDeveloper = _context.sent;\n _context.next = 24;\n return this.web3.eth.abi.encodeFunctionSignature('setSupportFee(address,uint256)');\n\n case 24:\n selectors.setSupportFee = _context.sent;\n _context.next = 27;\n return this.web3.eth.abi.encodeFunctionSignature('addAdmin(address)');\n\n case 27:\n selectors.addAdmin = _context.sent;\n _context.next = 30;\n return this.web3.eth.abi.encodeFunctionSignature('removeAdmin(address)');\n\n case 30:\n selectors.removeAdmin = _context.sent;\n _context.next = 33;\n return this.web3.eth.abi.encodeFunctionSignature('addPool(address)');\n\n case 33:\n selectors.addPool = _context.sent;\n _context.next = 36;\n return this.web3.eth.abi.encodeFunctionSignature('removePool(address)');\n\n case 36:\n selectors.removePool = _context.sent;\n _context.next = 39;\n return this.web3.eth.abi.encodeFunctionSignature('setRole(string,bytes4[],bytes4[]))');\n\n case 39:\n selectors.setRole = _context.sent;\n _context.next = 42;\n return this.web3.eth.abi.encodeFunctionSignature('setRoles(address,bytes32[]))');\n\n case 42:\n selectors.setRoles = _context.sent;\n return _context.abrupt('return', selectors);\n\n case 44:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAllMultiplexerSelectors() {\n return _ref.apply(this, arguments);\n }\n\n return getAllMultiplexerSelectors;\n }()\n }, {\n key: 'hasPrivilage',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(user, selector) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.hasPrivilage(user, selector).call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function hasPrivilage(_x, _x2) {\n return _ref2.apply(this, arguments);\n }\n\n return hasPrivilage;\n }()\n }, {\n key: 'hasRolePrivilage',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(roleHex, selector) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.hasRolePrivilage(roleHex, selector).call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function hasRolePrivilage(_x3, _x4) {\n return _ref3.apply(this, arguments);\n }\n\n return hasRolePrivilage;\n }()\n }, {\n key: 'getRoleNameByHex',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(roleHex) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.getRoleNameByHex(roleHex).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getRoleNameByHex(_x5) {\n return _ref4.apply(this, arguments);\n }\n\n return getRoleNameByHex;\n }()\n }, {\n key: 'getRoleHexByName',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(roleName) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.getRoleHexByName(roleName).call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getRoleHexByName(_x6) {\n return _ref5.apply(this, arguments);\n }\n\n return getRoleHexByName;\n }()\n }, {\n key: 'getRoleHexes',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', contract.methods.getRoleHexes().call());\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getRoleHexes() {\n return _ref6.apply(this, arguments);\n }\n\n return getRoleHexes;\n }()\n }, {\n key: 'getRoles',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(account) {\n var contract;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.contract();\n\n case 2:\n contract = _context7.sent;\n return _context7.abrupt('return', contract.methods.getRoles(account).call());\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getRoles(_x7) {\n return _ref7.apply(this, arguments);\n }\n\n return getRoles;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'rolesPrivilagesStore';\n }\n }]);\n return RolesPrivilagesStoreWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = RolesPrivilagesStoreWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_ownable_contract_wrapper = require('./managed_ownable_contract_wrapper');\n\nvar _managed_ownable_contract_wrapper2 = _interopRequireDefault(_managed_ownable_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RolesWrapper = function (_ManagedOwnableContra) {\n (0, _inherits3.default)(RolesWrapper, _ManagedOwnableContra);\n\n function RolesWrapper() {\n (0, _classCallCheck3.default)(this, RolesWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (RolesWrapper.__proto__ || Object.getPrototypeOf(RolesWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RolesWrapper, [{\n key: 'onboardedRole',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(address) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.getOnboardedRole(address).call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onboardedRole(_x) {\n return _ref.apply(this, arguments);\n }\n\n return onboardedRole;\n }()\n }, {\n key: 'nodeUrl',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(address) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.getUrl(address).call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function nodeUrl(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return nodeUrl;\n }()\n }, {\n key: 'setNodeUrl',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(address, url) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', this.processTransaction(contract.methods.setUrl(url), {\n from: address\n }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function setNodeUrl(_x3, _x4) {\n return _ref3.apply(this, arguments);\n }\n\n return setNodeUrl;\n }()\n }, {\n key: 'onboardAsApollo',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(address, deposit) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', this.processTransaction(contract.methods.onboardAsApollo(), {\n from: address,\n value: deposit\n }));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function onboardAsApollo(_x5, _x6) {\n return _ref4.apply(this, arguments);\n }\n\n return onboardAsApollo;\n }()\n }, {\n key: 'onboardAsApolloSafe',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(staking, address, deposit) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', this.processTransaction(contract.methods.onboardAsApolloSafe(address), {\n from: staking,\n value: deposit\n }));\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function onboardAsApolloSafe(_x7, _x8, _x9) {\n return _ref5.apply(this, arguments);\n }\n\n return onboardAsApolloSafe;\n }()\n }, {\n key: 'onboardAsAtlas',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(address, stake, url) {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', this.processTransaction(contract.methods.onboardAsAtlas(url), {\n from: address,\n value: stake\n }));\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function onboardAsAtlas(_x10, _x11, _x12) {\n return _ref6.apply(this, arguments);\n }\n\n return onboardAsAtlas;\n }()\n }, {\n key: 'onboardAsAtlasSafe',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(staking, address, stake, url) {\n var contract;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.contract();\n\n case 2:\n contract = _context7.sent;\n return _context7.abrupt('return', this.processTransaction(contract.methods.onboardAsAtlasSafe(address, url), {\n from: staking,\n value: stake\n }));\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function onboardAsAtlasSafe(_x13, _x14, _x15, _x16) {\n return _ref7.apply(this, arguments);\n }\n\n return onboardAsAtlasSafe;\n }()\n }, {\n key: 'onboardAsHermes',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(address, url) {\n var contract;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.contract();\n\n case 2:\n contract = _context8.sent;\n return _context8.abrupt('return', this.processTransaction(contract.methods.onboardAsHermes(url), {\n from: address\n }));\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function onboardAsHermes(_x17, _x18) {\n return _ref8.apply(this, arguments);\n }\n\n return onboardAsHermes;\n }()\n }, {\n key: 'retireAtlas',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n var contract;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.contract();\n\n case 2:\n contract = _context9.sent;\n return _context9.abrupt('return', this.processTransaction(contract.methods.retireAtlas()));\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function retireAtlas() {\n return _ref9.apply(this, arguments);\n }\n\n return retireAtlas;\n }()\n }, {\n key: 'retireApollo',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() {\n var contract;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.contract();\n\n case 2:\n contract = _context10.sent;\n return _context10.abrupt('return', this.processTransaction(contract.methods.retireApollo()));\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function retireApollo() {\n return _ref10.apply(this, arguments);\n }\n\n return retireApollo;\n }()\n }, {\n key: 'retireHermes',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {\n var contract;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.contract();\n\n case 2:\n contract = _context11.sent;\n return _context11.abrupt('return', this.processTransaction(contract.methods.retireHermes()));\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function retireHermes() {\n return _ref11.apply(this, arguments);\n }\n\n return retireHermes;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'roles';\n }\n }]);\n return RolesWrapper;\n}(_managed_ownable_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = RolesWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ShelteringTransfersWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ShelteringTransfersWrapper, _ManagedContractWrapp);\n\n function ShelteringTransfersWrapper() {\n (0, _classCallCheck3.default)(this, ShelteringTransfersWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ShelteringTransfersWrapper.__proto__ || Object.getPrototypeOf(ShelteringTransfersWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ShelteringTransfersWrapper, [{\n key: 'resolve',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', this.processTransaction(contract.methods.resolve(transferId)));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function resolve(_x) {\n return _ref.apply(this, arguments);\n }\n\n return resolve;\n }()\n }, {\n key: 'start',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', this.processTransaction(contract.methods.start(bundleId)));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function start(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: 'cancel',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', this.processTransaction(contract.methods.cancel(transferId)));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function cancel(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return cancel;\n }()\n }, {\n key: 'getTransferId',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(sheltererId, bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.getTransferId(sheltererId, bundleId).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getTransferId(_x4, _x5) {\n return _ref4.apply(this, arguments);\n }\n\n return getTransferId;\n }()\n }, {\n key: 'getDonor',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n return _context5.abrupt('return', contract.methods.getDonor(transferId).call());\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getDonor(_x6) {\n return _ref5.apply(this, arguments);\n }\n\n return getDonor;\n }()\n }, {\n key: 'getTransferredBundle',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', contract.methods.getBundle(transferId).call());\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getTransferredBundle(_x7) {\n return _ref6.apply(this, arguments);\n }\n\n return getTransferredBundle;\n }()\n }, {\n key: 'isInProgress',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.contract();\n\n case 2:\n contract = _context7.sent;\n return _context7.abrupt('return', contract.methods.isInProgress(transferId).call());\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function isInProgress(_x8) {\n return _ref7.apply(this, arguments);\n }\n\n return isInProgress;\n }()\n }, {\n key: 'canResolve',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.contract();\n\n case 2:\n contract = _context8.sent;\n return _context8.abrupt('return', contract.methods.canResolve(this.defaultAddress, transferId).call());\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function canResolve(_x9) {\n return _ref8.apply(this, arguments);\n }\n\n return canResolve;\n }()\n }, {\n key: 'getTransferCreationTime',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.contract();\n\n case 2:\n contract = _context9.sent;\n return _context9.abrupt('return', contract.methods.getCreationTime(transferId).call());\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getTransferCreationTime(_x10) {\n return _ref9.apply(this, arguments);\n }\n\n return getTransferCreationTime;\n }()\n }, {\n key: 'getTransferDesignatedShelterer',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(transferId) {\n var contract;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.contract();\n\n case 2:\n contract = _context10.sent;\n return _context10.abrupt('return', contract.methods.getDesignatedShelterer(transferId).call());\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function getTransferDesignatedShelterer(_x11) {\n return _ref10.apply(this, arguments);\n }\n\n return getTransferDesignatedShelterer;\n }()\n }, {\n key: 'force',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(shelterer, bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.contract();\n\n case 2:\n contract = _context11.sent;\n return _context11.abrupt('return', this.processTransaction(contract.methods.startForce(shelterer, bundleId)));\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function force(_x12, _x13) {\n return _ref11.apply(this, arguments);\n }\n\n return force;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'shelteringTransfers';\n }\n }]);\n return ShelteringTransfersWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ShelteringTransfersWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ShelteringWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(ShelteringWrapper, _ManagedContractWrapp);\n\n function ShelteringWrapper() {\n (0, _classCallCheck3.default)(this, ShelteringWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ShelteringWrapper.__proto__ || Object.getPrototypeOf(ShelteringWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ShelteringWrapper, [{\n key: 'isSheltering',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(bundleId) {\n var shelterer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.defaultAddress;\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.isSheltering(bundleId, shelterer).call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function isSheltering(_x) {\n return _ref.apply(this, arguments);\n }\n\n return isSheltering;\n }()\n }, {\n key: 'addSheltererReward',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(sheltererId, bundleId, reward) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', this.processTransaction(contract.methods.addSheltererReward(sheltererId, bundleId), { value: reward }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function addSheltererReward(_x3, _x4, _x5) {\n return _ref2.apply(this, arguments);\n }\n\n return addSheltererReward;\n }()\n }, {\n key: 'shelteringExpirationDate',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.methods.getShelteringExpirationDate(bundleId, this.defaultAddress).call());\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function shelteringExpirationDate(_x6) {\n return _ref3.apply(this, arguments);\n }\n\n return shelteringExpirationDate;\n }()\n }, {\n key: 'bundleStoragePeriods',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.getBundleStoragePeriodsCount(bundleId).call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function bundleStoragePeriods(_x7) {\n return _ref4.apply(this, arguments);\n }\n\n return bundleStoragePeriods;\n }()\n }, {\n key: 'getBundleUploadBlockNumber',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(bundleId) {\n var contract, uploadBlockNumber;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.contract();\n\n case 2:\n contract = _context5.sent;\n _context5.next = 5;\n return contract.methods.getBundleUploadBlockNumber(bundleId).call();\n\n case 5:\n uploadBlockNumber = _context5.sent;\n return _context5.abrupt('return', uploadBlockNumber === '0' ? null : parseInt(uploadBlockNumber, 10));\n\n case 7:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getBundleUploadBlockNumber(_x8) {\n return _ref5.apply(this, arguments);\n }\n\n return getBundleUploadBlockNumber;\n }()\n }, {\n key: 'getBundleUploader',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(bundleId) {\n var contract;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.contract();\n\n case 2:\n contract = _context6.sent;\n return _context6.abrupt('return', contract.methods.getBundleUploader(bundleId).call());\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getBundleUploader(_x9) {\n return _ref6.apply(this, arguments);\n }\n\n return getBundleUploader;\n }()\n }, {\n key: 'removeExpiredBundle',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(bundleId) {\n var shelterer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.defaultAddress;\n var contract;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.contract();\n\n case 2:\n contract = _context7.sent;\n return _context7.abrupt('return', contract.methods.removeExpiredBundle(bundleId, shelterer).send({ from: this.defaultAddress }));\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function removeExpiredBundle(_x10) {\n return _ref7.apply(this, arguments);\n }\n\n return removeExpiredBundle;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'sheltering';\n }\n }]);\n return ShelteringWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ShelteringWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TimeWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(TimeWrapper, _ManagedContractWrapp);\n\n function TimeWrapper() {\n (0, _classCallCheck3.default)(this, TimeWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (TimeWrapper.__proto__ || Object.getPrototypeOf(TimeWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(TimeWrapper, [{\n key: 'currentPayoutPeriod',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.methods.currentPayoutPeriod().call());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function currentPayoutPeriod() {\n return _ref.apply(this, arguments);\n }\n\n return currentPayoutPeriod;\n }()\n }, {\n key: 'payoutPeriodStart',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(payoutPeriod) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.methods.payoutPeriodStart(payoutPeriod).call());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function payoutPeriodStart(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return payoutPeriodStart;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'time';\n }\n }]);\n return TimeWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = TimeWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TransfersEventEmitterWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(TransfersEventEmitterWrapper, _ManagedContractWrapp);\n\n function TransfersEventEmitterWrapper() {\n (0, _classCallCheck3.default)(this, TransfersEventEmitterWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (TransfersEventEmitterWrapper.__proto__ || Object.getPrototypeOf(TransfersEventEmitterWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(TransfersEventEmitterWrapper, [{\n key: 'transfers',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', contract.getPastEvents('TransferStarted', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function transfers(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return transfers;\n }()\n }, {\n key: 'resolvedTransfers',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', contract.getPastEvents('TransferResolved', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function resolvedTransfers(_x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return resolvedTransfers;\n }()\n }, {\n key: 'cancelledTransfers',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(fromBlock, toBlock) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', contract.getPastEvents('TransferCancelled', { fromBlock: fromBlock, toBlock: toBlock }));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function cancelledTransfers(_x5, _x6) {\n return _ref3.apply(this, arguments);\n }\n\n return cancelledTransfers;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'transfersEventEmitter';\n }\n }]);\n return TransfersEventEmitterWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = TransfersEventEmitterWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_contract_wrapper = require('./managed_contract_wrapper');\n\nvar _managed_contract_wrapper2 = _interopRequireDefault(_managed_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar UploadsWrapper = function (_ManagedContractWrapp) {\n (0, _inherits3.default)(UploadsWrapper, _ManagedContractWrapp);\n\n function UploadsWrapper() {\n (0, _classCallCheck3.default)(this, UploadsWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (UploadsWrapper.__proto__ || Object.getPrototypeOf(UploadsWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(UploadsWrapper, [{\n key: 'registerBundle',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(bundleId, fee, storagePeriods) {\n var contract, _ref2, blockNumber, transactionHash;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n _context.next = 5;\n return contract.methods.registerBundle(bundleId, storagePeriods).send({ from: this.defaultAddress, value: fee });\n\n case 5:\n _ref2 = _context.sent;\n blockNumber = _ref2.blockNumber;\n transactionHash = _ref2.transactionHash;\n return _context.abrupt('return', { blockNumber: blockNumber, transactionHash: transactionHash });\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function registerBundle(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return registerBundle;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'uploads';\n }\n }]);\n return UploadsWrapper;\n}(_managed_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = UploadsWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _managed_ownable_contract_wrapper = require('./managed_ownable_contract_wrapper');\n\nvar _managed_ownable_contract_wrapper2 = _interopRequireDefault(_managed_ownable_contract_wrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ValidatorProxyWrapper = function (_ManagedOwnableContra) {\n (0, _inherits3.default)(ValidatorProxyWrapper, _ManagedOwnableContra);\n\n function ValidatorProxyWrapper() {\n (0, _classCallCheck3.default)(this, ValidatorProxyWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ValidatorProxyWrapper.__proto__ || Object.getPrototypeOf(ValidatorProxyWrapper)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ValidatorProxyWrapper, [{\n key: 'transferOwnershipForValidatorSet',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(newOwner) {\n var contract;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.contract();\n\n case 2:\n contract = _context.sent;\n return _context.abrupt('return', this.processTransaction(contract.methods.transferOwnershipForValidatorSet(newOwner)));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function transferOwnershipForValidatorSet(_x) {\n return _ref.apply(this, arguments);\n }\n\n return transferOwnershipForValidatorSet;\n }()\n }, {\n key: 'transferOwnershipForBlockRewards',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(newOwner) {\n var contract;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.contract();\n\n case 2:\n contract = _context2.sent;\n return _context2.abrupt('return', this.processTransaction(contract.methods.transferOwnershipForBlockRewards(newOwner)));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function transferOwnershipForBlockRewards(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return transferOwnershipForBlockRewards;\n }()\n }, {\n key: 'setBaseReward',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(newBaseReward) {\n var contract;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.contract();\n\n case 2:\n contract = _context3.sent;\n return _context3.abrupt('return', this.processTransaction(contract.methods.setBaseReward(newBaseReward)));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function setBaseReward(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return setBaseReward;\n }()\n }, {\n key: 'getBlockRewardsContractAddress',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var contract;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.contract();\n\n case 2:\n contract = _context4.sent;\n return _context4.abrupt('return', contract.methods.blockRewards().call());\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getBlockRewardsContractAddress() {\n return _ref4.apply(this, arguments);\n }\n\n return getBlockRewardsContractAddress;\n }()\n }, {\n key: 'getContractName',\n get: function get() {\n return 'validatorProxy';\n }\n }]);\n return ValidatorProxyWrapper;\n}(_managed_ownable_contract_wrapper2.default); /*\n Copyright: Ambrosus Inc.\n Email: tech@ambrosus.io\n \n This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n \n This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n */\n\nexports.default = ValidatorProxyWrapper;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _genesis_contract_wrapper = require('./genesis_contract_wrapper');\n\nvar _genesis_contract_wrapper2 = _interopRequireDefault(_genesis_contract_wrapper);\n\nvar _contract_jsons = require('../contract_jsons');\n\nvar _contract_jsons2 = _interopRequireDefault(_contract_jsons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright: Ambrosus Inc.\nEmail: tech@ambrosus.io\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nThis Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.\n*/\n\nvar ValidatorSetWrapper = function (_GenesisContractWrapp) {\n (0, _inherits3.default)(ValidatorSetWrapper, _GenesisContractWrapp);\n\n function ValidatorSetWrapper(validatorSetContractAddress, web3, defaultAddress) {\n (0, _classCallCheck3.default)(this, ValidatorSetWrapper);\n return (0, _possibleConstructorReturn3.default)(this, (ValidatorSetWrapper.__proto__ || Object.getPrototypeOf(ValidatorSetWrapper)).call(this, validatorSetContractAddress, _contract_jsons2.default.validatorSet, web3, defaultAddress));\n }\n\n (0, _createClass3.default)(ValidatorSetWrapper, [{\n key: 'getValidators',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', this.contract.methods.getValidators().call());\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getValidators() {\n return _ref.apply(this, arguments);\n }\n\n return getValidators;\n }()\n }]);\n return ValidatorSetWrapper;\n}(_genesis_contract_wrapper2.default);\n\nexports.default = ValidatorSetWrapper;","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","module.exports = require(\"regenerator-runtime\");\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * @license Complex.js v2.1.1 12/05/2020\n *\n * Copyright (c) 2020, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n/**\n *\n * This class allows the manipulation of complex numbers.\n * You can pass a complex number in different formats. Either as object, double, string or two integer parameters.\n *\n * Object form\n * { re: , im: }\n * { arg: , abs: }\n * { phi: , r: }\n *\n * Array / Vector form\n * [ real, imaginary ]\n *\n * Double form\n * 99.3 - Single double value\n *\n * String form\n * '23.1337' - Simple real number\n * '15+3i' - a simple complex number\n * '3-i' - a simple complex number\n *\n * Example:\n *\n * var c = new Complex('99.3+8i');\n * c.mul({r: 3, i: 9}).div(4.9).sub(3, 2);\n *\n */\n\n(function(root) {\n\n 'use strict';\n\n var cosh = Math.cosh || function(x) {\n return Math.abs(x) < 1e-9 ? 1 - x : (Math.exp(x) + Math.exp(-x)) * 0.5;\n };\n\n var sinh = Math.sinh || function(x) {\n return Math.abs(x) < 1e-9 ? x : (Math.exp(x) - Math.exp(-x)) * 0.5;\n };\n\n /**\n * Calculates cos(x) - 1 using Taylor series if x is small (-¼π ≤ x ≤ ¼π).\n *\n * @param {number} x\n * @returns {number} cos(x) - 1\n */\n var cosm1 = function(x) {\n\n var b = Math.PI / 4;\n if (-b > x || x > b) {\n return Math.cos(x) - 1.0;\n }\n\n /* Calculate horner form of polynomial of taylor series in Q\n var fac = 1, alt = 1, pol = {};\n for (var i = 0; i <= 16; i++) {\n fac*= i || 1;\n if (i % 2 == 0) {\n pol[i] = new Fraction(1, alt * fac);\n alt = -alt;\n }\n }\n console.log(new Polynomial(pol).toHorner()); // (((((((1/20922789888000x^2-1/87178291200)x^2+1/479001600)x^2-1/3628800)x^2+1/40320)x^2-1/720)x^2+1/24)x^2-1/2)x^2+1\n */\n\n var xx = x * x;\n return xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx / 20922789888000\n - 1 / 87178291200)\n + 1 / 479001600)\n - 1 / 3628800)\n + 1 / 40320)\n - 1 / 720)\n + 1 / 24)\n - 1 / 2);\n };\n\n var hypot = function(x, y) {\n\n var a = Math.abs(x);\n var b = Math.abs(y);\n\n if (a < 3000 && b < 3000) {\n return Math.sqrt(a * a + b * b);\n }\n\n if (a < b) {\n a = b;\n b = x / y;\n } else {\n b = y / x;\n }\n return a * Math.sqrt(1 + b * b);\n };\n\n var parser_exit = function() {\n throw SyntaxError('Invalid Param');\n };\n\n /**\n * Calculates log(sqrt(a^2+b^2)) in a way to avoid overflows\n *\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\n function logHypot(a, b) {\n\n var _a = Math.abs(a);\n var _b = Math.abs(b);\n\n if (a === 0) {\n return Math.log(_b);\n }\n\n if (b === 0) {\n return Math.log(_a);\n }\n\n if (_a < 3000 && _b < 3000) {\n return Math.log(a * a + b * b) * 0.5;\n }\n\n /* I got 4 ideas to compute this property without overflow:\n *\n * Testing 1000000 times with random samples for a,b ∈ [1, 1000000000] against a big decimal library to get an error estimate\n *\n * 1. Only eliminate the square root: (OVERALL ERROR: 3.9122483030951116e-11)\n\n Math.log(a * a + b * b) / 2\n\n *\n *\n * 2. Try to use the non-overflowing pythagoras: (OVERALL ERROR: 8.889760039210159e-10)\n\n var fn = function(a, b) {\n a = Math.abs(a);\n b = Math.abs(b);\n var t = Math.min(a, b);\n a = Math.max(a, b);\n t = t / a;\n\n return Math.log(a) + Math.log(1 + t * t) / 2;\n };\n\n * 3. Abuse the identity cos(atan(y/x) = x / sqrt(x^2+y^2): (OVERALL ERROR: 3.4780178737037204e-10)\n\n Math.log(a / Math.cos(Math.atan2(b, a)))\n\n * 4. Use 3. and apply log rules: (OVERALL ERROR: 1.2014087502620896e-9)\n\n Math.log(a) - Math.log(Math.cos(Math.atan2(b, a)))\n\n */\n\n a = a / 2;\n b = b / 2;\n\n return 0.5 * Math.log(a * a + b * b) + Math.LN2;\n }\n\n var parse = function(a, b) {\n\n var z = { 're': 0, 'im': 0 };\n\n if (a === undefined || a === null) {\n z['re'] =\n z['im'] = 0;\n } else if (b !== undefined) {\n z['re'] = a;\n z['im'] = b;\n } else\n switch (typeof a) {\n\n case 'object':\n\n if ('im' in a && 're' in a) {\n z['re'] = a['re'];\n z['im'] = a['im'];\n } else if ('abs' in a && 'arg' in a) {\n if (!Number.isFinite(a['abs']) && Number.isFinite(a['arg'])) {\n return Complex['INFINITY'];\n }\n z['re'] = a['abs'] * Math.cos(a['arg']);\n z['im'] = a['abs'] * Math.sin(a['arg']);\n } else if ('r' in a && 'phi' in a) {\n if (!Number.isFinite(a['r']) && Number.isFinite(a['phi'])) {\n return Complex['INFINITY'];\n }\n z['re'] = a['r'] * Math.cos(a['phi']);\n z['im'] = a['r'] * Math.sin(a['phi']);\n } else if (a.length === 2) { // Quick array check\n z['re'] = a[0];\n z['im'] = a[1];\n } else {\n parser_exit();\n }\n break;\n\n case 'string':\n\n z['im'] = /* void */\n z['re'] = 0;\n\n var tokens = a.match(/\\d+\\.?\\d*e[+-]?\\d+|\\d+\\.?\\d*|\\.\\d+|./g);\n var plus = 1;\n var minus = 0;\n\n if (tokens === null) {\n parser_exit();\n }\n\n for (var i = 0; i < tokens.length; i++) {\n\n var c = tokens[i];\n\n if (c === ' ' || c === '\\t' || c === '\\n') {\n /* void */\n } else if (c === '+') {\n plus++;\n } else if (c === '-') {\n minus++;\n } else if (c === 'i' || c === 'I') {\n\n if (plus + minus === 0) {\n parser_exit();\n }\n\n if (tokens[i + 1] !== ' ' && !isNaN(tokens[i + 1])) {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + tokens[i + 1]);\n i++;\n } else {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + '1');\n }\n plus = minus = 0;\n\n } else {\n\n if (plus + minus === 0 || isNaN(c)) {\n parser_exit();\n }\n\n if (tokens[i + 1] === 'i' || tokens[i + 1] === 'I') {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + c);\n i++;\n } else {\n z['re'] += parseFloat((minus % 2 ? '-' : '') + c);\n }\n plus = minus = 0;\n }\n }\n\n // Still something on the stack\n if (plus + minus > 0) {\n parser_exit();\n }\n break;\n\n case 'number':\n z['im'] = 0;\n z['re'] = a;\n break;\n\n default:\n parser_exit();\n }\n\n if (isNaN(z['re']) || isNaN(z['im'])) {\n // If a calculation is NaN, we treat it as NaN and don't throw\n //parser_exit();\n }\n\n return z;\n };\n\n /**\n * @constructor\n * @returns {Complex}\n */\n function Complex(a, b) {\n\n if (!(this instanceof Complex)) {\n return new Complex(a, b);\n }\n\n var z = parse(a, b);\n\n this['re'] = z['re'];\n this['im'] = z['im'];\n }\n\n Complex.prototype = {\n\n 're': 0,\n 'im': 0,\n\n /**\n * Calculates the sign of a complex number, which is a normalized complex\n *\n * @returns {Complex}\n */\n 'sign': function() {\n\n var abs = this['abs']();\n\n return new Complex(\n this['re'] / abs,\n this['im'] / abs);\n },\n\n /**\n * Adds two complex numbers\n *\n * @returns {Complex}\n */\n 'add': function(a, b) {\n\n var z = new Complex(a, b);\n\n // Infinity + Infinity = NaN\n if (this['isInfinite']() && z['isInfinite']()) {\n return Complex['NAN'];\n }\n\n // Infinity + z = Infinity { where z != Infinity }\n if (this['isInfinite']() || z['isInfinite']()) {\n return Complex['INFINITY'];\n }\n\n return new Complex(\n this['re'] + z['re'],\n this['im'] + z['im']);\n },\n\n /**\n * Subtracts two complex numbers\n *\n * @returns {Complex}\n */\n 'sub': function(a, b) {\n\n var z = new Complex(a, b);\n\n // Infinity - Infinity = NaN\n if (this['isInfinite']() && z['isInfinite']()) {\n return Complex['NAN'];\n }\n\n // Infinity - z = Infinity { where z != Infinity }\n if (this['isInfinite']() || z['isInfinite']()) {\n return Complex['INFINITY'];\n }\n\n return new Complex(\n this['re'] - z['re'],\n this['im'] - z['im']);\n },\n\n /**\n * Multiplies two complex numbers\n *\n * @returns {Complex}\n */\n 'mul': function(a, b) {\n\n var z = new Complex(a, b);\n\n // Infinity * 0 = NaN\n if ((this['isInfinite']() && z['isZero']()) || (this['isZero']() && z['isInfinite']())) {\n return Complex['NAN'];\n }\n\n // Infinity * z = Infinity { where z != 0 }\n if (this['isInfinite']() || z['isInfinite']()) {\n return Complex['INFINITY'];\n }\n\n // Short circuit for real values\n if (z['im'] === 0 && this['im'] === 0) {\n return new Complex(this['re'] * z['re'], 0);\n }\n\n return new Complex(\n this['re'] * z['re'] - this['im'] * z['im'],\n this['re'] * z['im'] + this['im'] * z['re']);\n },\n\n /**\n * Divides two complex numbers\n *\n * @returns {Complex}\n */\n 'div': function(a, b) {\n\n var z = new Complex(a, b);\n\n // 0 / 0 = NaN and Infinity / Infinity = NaN\n if ((this['isZero']() && z['isZero']()) || (this['isInfinite']() && z['isInfinite']())) {\n return Complex['NAN'];\n }\n\n // Infinity / 0 = Infinity\n if (this['isInfinite']() || z['isZero']()) {\n return Complex['INFINITY'];\n }\n\n // 0 / Infinity = 0\n if (this['isZero']() || z['isInfinite']()) {\n return Complex['ZERO'];\n }\n\n a = this['re'];\n b = this['im'];\n\n var c = z['re'];\n var d = z['im'];\n var t, x;\n\n if (0 === d) {\n // Divisor is real\n return new Complex(a / c, b / c);\n }\n\n if (Math.abs(c) < Math.abs(d)) {\n\n x = c / d;\n t = c * x + d;\n\n return new Complex(\n (a * x + b) / t,\n (b * x - a) / t);\n\n } else {\n\n x = d / c;\n t = d * x + c;\n\n return new Complex(\n (a + b * x) / t,\n (b - a * x) / t);\n }\n },\n\n /**\n * Calculate the power of two complex numbers\n *\n * @returns {Complex}\n */\n 'pow': function(a, b) {\n\n var z = new Complex(a, b);\n\n a = this['re'];\n b = this['im'];\n\n if (z['isZero']()) {\n return Complex['ONE'];\n }\n\n // If the exponent is real\n if (z['im'] === 0) {\n\n if (b === 0 && a > 0) {\n\n return new Complex(Math.pow(a, z['re']), 0);\n\n } else if (a === 0) { // If base is fully imaginary\n\n switch ((z['re'] % 4 + 4) % 4) {\n case 0:\n return new Complex(Math.pow(b, z['re']), 0);\n case 1:\n return new Complex(0, Math.pow(b, z['re']));\n case 2:\n return new Complex(-Math.pow(b, z['re']), 0);\n case 3:\n return new Complex(0, -Math.pow(b, z['re']));\n }\n }\n }\n\n /* I couldn't find a good formula, so here is a derivation and optimization\n *\n * z_1^z_2 = (a + bi)^(c + di)\n * = exp((c + di) * log(a + bi)\n * = pow(a^2 + b^2, (c + di) / 2) * exp(i(c + di)atan2(b, a))\n * =>...\n * Re = (pow(a^2 + b^2, c / 2) * exp(-d * atan2(b, a))) * cos(d * log(a^2 + b^2) / 2 + c * atan2(b, a))\n * Im = (pow(a^2 + b^2, c / 2) * exp(-d * atan2(b, a))) * sin(d * log(a^2 + b^2) / 2 + c * atan2(b, a))\n *\n * =>...\n * Re = exp(c * log(sqrt(a^2 + b^2)) - d * atan2(b, a)) * cos(d * log(sqrt(a^2 + b^2)) + c * atan2(b, a))\n * Im = exp(c * log(sqrt(a^2 + b^2)) - d * atan2(b, a)) * sin(d * log(sqrt(a^2 + b^2)) + c * atan2(b, a))\n *\n * =>\n * Re = exp(c * logsq2 - d * arg(z_1)) * cos(d * logsq2 + c * arg(z_1))\n * Im = exp(c * logsq2 - d * arg(z_1)) * sin(d * logsq2 + c * arg(z_1))\n *\n */\n\n if (a === 0 && b === 0 && z['re'] > 0 && z['im'] >= 0) {\n return Complex['ZERO'];\n }\n\n var arg = Math.atan2(b, a);\n var loh = logHypot(a, b);\n\n a = Math.exp(z['re'] * loh - z['im'] * arg);\n b = z['im'] * loh + z['re'] * arg;\n return new Complex(\n a * Math.cos(b),\n a * Math.sin(b));\n },\n\n /**\n * Calculate the complex square root\n *\n * @returns {Complex}\n */\n 'sqrt': function() {\n\n var a = this['re'];\n var b = this['im'];\n var r = this['abs']();\n\n var re, im;\n\n if (a >= 0) {\n\n if (b === 0) {\n return new Complex(Math.sqrt(a), 0);\n }\n\n re = 0.5 * Math.sqrt(2.0 * (r + a));\n } else {\n re = Math.abs(b) / Math.sqrt(2 * (r - a));\n }\n\n if (a <= 0) {\n im = 0.5 * Math.sqrt(2.0 * (r - a));\n } else {\n im = Math.abs(b) / Math.sqrt(2 * (r + a));\n }\n\n return new Complex(re, b < 0 ? -im : im);\n },\n\n /**\n * Calculate the complex exponent\n *\n * @returns {Complex}\n */\n 'exp': function() {\n\n var tmp = Math.exp(this['re']);\n\n if (this['im'] === 0) {\n //return new Complex(tmp, 0);\n }\n return new Complex(\n tmp * Math.cos(this['im']),\n tmp * Math.sin(this['im']));\n },\n\n /**\n * Calculate the complex exponent and subtracts one.\n *\n * This may be more accurate than `Complex(x).exp().sub(1)` if\n * `x` is small.\n *\n * @returns {Complex}\n */\n 'expm1': function() {\n\n /**\n * exp(a + i*b) - 1\n = exp(a) * (cos(b) + j*sin(b)) - 1\n = expm1(a)*cos(b) + cosm1(b) + j*exp(a)*sin(b)\n */\n\n var a = this['re'];\n var b = this['im'];\n\n return new Complex(\n Math.expm1(a) * Math.cos(b) + cosm1(b),\n Math.exp(a) * Math.sin(b));\n },\n\n /**\n * Calculate the natural log\n *\n * @returns {Complex}\n */\n 'log': function() {\n\n var a = this['re'];\n var b = this['im'];\n\n if (b === 0 && a > 0) {\n //return new Complex(Math.log(a), 0);\n }\n\n return new Complex(\n logHypot(a, b),\n Math.atan2(b, a));\n },\n\n /**\n * Calculate the magnitude of the complex number\n *\n * @returns {number}\n */\n 'abs': function() {\n\n return hypot(this['re'], this['im']);\n },\n\n /**\n * Calculate the angle of the complex number\n *\n * @returns {number}\n */\n 'arg': function() {\n\n return Math.atan2(this['im'], this['re']);\n },\n\n /**\n * Calculate the sine of the complex number\n *\n * @returns {Complex}\n */\n 'sin': function() {\n\n // sin(z) = ( e^iz - e^-iz ) / 2i \n // = sin(a)cosh(b) + i cos(a)sinh(b)\n\n var a = this['re'];\n var b = this['im'];\n\n return new Complex(\n Math.sin(a) * cosh(b),\n Math.cos(a) * sinh(b));\n },\n\n /**\n * Calculate the cosine\n *\n * @returns {Complex}\n */\n 'cos': function() {\n\n // cos(z) = ( e^iz + e^-iz ) / 2 \n // = cos(a)cosh(b) - i sin(a)sinh(b)\n\n var a = this['re'];\n var b = this['im'];\n\n return new Complex(\n Math.cos(a) * cosh(b),\n -Math.sin(a) * sinh(b));\n },\n\n /**\n * Calculate the tangent\n *\n * @returns {Complex}\n */\n 'tan': function() {\n\n // tan(z) = sin(z) / cos(z) \n // = ( e^iz - e^-iz ) / ( i( e^iz + e^-iz ) )\n // = ( e^2iz - 1 ) / i( e^2iz + 1 )\n // = ( sin(2a) + i sinh(2b) ) / ( cos(2a) + cosh(2b) )\n\n var a = 2 * this['re'];\n var b = 2 * this['im'];\n var d = Math.cos(a) + cosh(b);\n\n return new Complex(\n Math.sin(a) / d,\n sinh(b) / d);\n },\n\n /**\n * Calculate the cotangent\n *\n * @returns {Complex}\n */\n 'cot': function() {\n\n // cot(c) = i(e^(ci) + e^(-ci)) / (e^(ci) - e^(-ci))\n\n var a = 2 * this['re'];\n var b = 2 * this['im'];\n var d = Math.cos(a) - cosh(b);\n\n return new Complex(\n -Math.sin(a) / d,\n sinh(b) / d);\n },\n\n /**\n * Calculate the secant\n *\n * @returns {Complex}\n */\n 'sec': function() {\n\n // sec(c) = 2 / (e^(ci) + e^(-ci))\n\n var a = this['re'];\n var b = this['im'];\n var d = 0.5 * cosh(2 * b) + 0.5 * Math.cos(2 * a);\n\n return new Complex(\n Math.cos(a) * cosh(b) / d,\n Math.sin(a) * sinh(b) / d);\n },\n\n /**\n * Calculate the cosecans\n *\n * @returns {Complex}\n */\n 'csc': function() {\n\n // csc(c) = 2i / (e^(ci) - e^(-ci))\n\n var a = this['re'];\n var b = this['im'];\n var d = 0.5 * cosh(2 * b) - 0.5 * Math.cos(2 * a);\n\n return new Complex(\n Math.sin(a) * cosh(b) / d,\n -Math.cos(a) * sinh(b) / d);\n },\n\n /**\n * Calculate the complex arcus sinus\n *\n * @returns {Complex}\n */\n 'asin': function() {\n\n // asin(c) = -i * log(ci + sqrt(1 - c^2))\n\n var a = this['re'];\n var b = this['im'];\n\n var t1 = new Complex(\n b * b - a * a + 1,\n -2 * a * b)['sqrt']();\n\n var t2 = new Complex(\n t1['re'] - b,\n t1['im'] + a)['log']();\n\n return new Complex(t2['im'], -t2['re']);\n },\n\n /**\n * Calculate the complex arcus cosinus\n *\n * @returns {Complex}\n */\n 'acos': function() {\n\n // acos(c) = i * log(c - i * sqrt(1 - c^2))\n\n var a = this['re'];\n var b = this['im'];\n\n var t1 = new Complex(\n b * b - a * a + 1,\n -2 * a * b)['sqrt']();\n\n var t2 = new Complex(\n t1['re'] - b,\n t1['im'] + a)['log']();\n\n return new Complex(Math.PI / 2 - t2['im'], t2['re']);\n },\n\n /**\n * Calculate the complex arcus tangent\n *\n * @returns {Complex}\n */\n 'atan': function() {\n\n // atan(c) = i / 2 log((i + x) / (i - x))\n\n var a = this['re'];\n var b = this['im'];\n\n if (a === 0) {\n\n if (b === 1) {\n return new Complex(0, Infinity);\n }\n\n if (b === -1) {\n return new Complex(0, -Infinity);\n }\n }\n\n var d = a * a + (1.0 - b) * (1.0 - b);\n\n var t1 = new Complex(\n (1 - b * b - a * a) / d,\n -2 * a / d).log();\n\n return new Complex(-0.5 * t1['im'], 0.5 * t1['re']);\n },\n\n /**\n * Calculate the complex arcus cotangent\n *\n * @returns {Complex}\n */\n 'acot': function() {\n\n // acot(c) = i / 2 log((c - i) / (c + i))\n\n var a = this['re'];\n var b = this['im'];\n\n if (b === 0) {\n return new Complex(Math.atan2(1, a), 0);\n }\n\n var d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).atan()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).atan();\n },\n\n /**\n * Calculate the complex arcus secant\n *\n * @returns {Complex}\n */\n 'asec': function() {\n\n // asec(c) = -i * log(1 / c + sqrt(1 - i / c^2))\n\n var a = this['re'];\n var b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(0, Infinity);\n }\n\n var d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).acos()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).acos();\n },\n\n /**\n * Calculate the complex arcus cosecans\n *\n * @returns {Complex}\n */\n 'acsc': function() {\n\n // acsc(c) = -i * log(i / c + sqrt(1 - 1 / c^2))\n\n var a = this['re'];\n var b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(Math.PI / 2, Infinity);\n }\n\n var d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).asin()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).asin();\n },\n\n /**\n * Calculate the complex sinh\n *\n * @returns {Complex}\n */\n 'sinh': function() {\n\n // sinh(c) = (e^c - e^-c) / 2\n\n var a = this['re'];\n var b = this['im'];\n\n return new Complex(\n sinh(a) * Math.cos(b),\n cosh(a) * Math.sin(b));\n },\n\n /**\n * Calculate the complex cosh\n *\n * @returns {Complex}\n */\n 'cosh': function() {\n\n // cosh(c) = (e^c + e^-c) / 2\n\n var a = this['re'];\n var b = this['im'];\n\n return new Complex(\n cosh(a) * Math.cos(b),\n sinh(a) * Math.sin(b));\n },\n\n /**\n * Calculate the complex tanh\n *\n * @returns {Complex}\n */\n 'tanh': function() {\n\n // tanh(c) = (e^c - e^-c) / (e^c + e^-c)\n\n var a = 2 * this['re'];\n var b = 2 * this['im'];\n var d = cosh(a) + Math.cos(b);\n\n return new Complex(\n sinh(a) / d,\n Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex coth\n *\n * @returns {Complex}\n */\n 'coth': function() {\n\n // coth(c) = (e^c + e^-c) / (e^c - e^-c)\n\n var a = 2 * this['re'];\n var b = 2 * this['im'];\n var d = cosh(a) - Math.cos(b);\n\n return new Complex(\n sinh(a) / d,\n -Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex coth\n *\n * @returns {Complex}\n */\n 'csch': function() {\n\n // csch(c) = 2 / (e^c - e^-c)\n\n var a = this['re'];\n var b = this['im'];\n var d = Math.cos(2 * b) - cosh(2 * a);\n\n return new Complex(\n -2 * sinh(a) * Math.cos(b) / d,\n 2 * cosh(a) * Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex sech\n *\n * @returns {Complex}\n */\n 'sech': function() {\n\n // sech(c) = 2 / (e^c + e^-c)\n\n var a = this['re'];\n var b = this['im'];\n var d = Math.cos(2 * b) + cosh(2 * a);\n\n return new Complex(\n 2 * cosh(a) * Math.cos(b) / d,\n -2 * sinh(a) * Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex asinh\n *\n * @returns {Complex}\n */\n 'asinh': function() {\n\n // asinh(c) = log(c + sqrt(c^2 + 1))\n\n var tmp = this['im'];\n this['im'] = -this['re'];\n this['re'] = tmp;\n var res = this['asin']();\n\n this['re'] = -this['im'];\n this['im'] = tmp;\n tmp = res['re'];\n\n res['re'] = -res['im'];\n res['im'] = tmp;\n return res;\n },\n\n /**\n * Calculate the complex acosh\n *\n * @returns {Complex}\n */\n 'acosh': function() {\n\n // acosh(c) = log(c + sqrt(c^2 - 1))\n\n var res = this['acos']();\n if (res['im'] <= 0) {\n var tmp = res['re'];\n res['re'] = -res['im'];\n res['im'] = tmp;\n } else {\n var tmp = res['im'];\n res['im'] = -res['re'];\n res['re'] = tmp;\n }\n return res;\n },\n\n /**\n * Calculate the complex atanh\n *\n * @returns {Complex}\n */\n 'atanh': function() {\n\n // atanh(c) = log((1+c) / (1-c)) / 2\n\n var a = this['re'];\n var b = this['im'];\n\n var noIM = a > 1 && b === 0;\n var oneMinus = 1 - a;\n var onePlus = 1 + a;\n var d = oneMinus * oneMinus + b * b;\n\n var x = (d !== 0)\n ? new Complex(\n (onePlus * oneMinus - b * b) / d,\n (b * oneMinus + onePlus * b) / d)\n : new Complex(\n (a !== -1) ? (a / 0) : 0,\n (b !== 0) ? (b / 0) : 0);\n\n var temp = x['re'];\n x['re'] = logHypot(x['re'], x['im']) / 2;\n x['im'] = Math.atan2(x['im'], temp) / 2;\n if (noIM) {\n x['im'] = -x['im'];\n }\n return x;\n },\n\n /**\n * Calculate the complex acoth\n *\n * @returns {Complex}\n */\n 'acoth': function() {\n\n // acoth(c) = log((c+1) / (c-1)) / 2\n\n var a = this['re'];\n var b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(0, Math.PI / 2);\n }\n\n var d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).atanh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).atanh();\n },\n\n /**\n * Calculate the complex acsch\n *\n * @returns {Complex}\n */\n 'acsch': function() {\n\n // acsch(c) = log((1+sqrt(1+c^2))/c)\n\n var a = this['re'];\n var b = this['im'];\n\n if (b === 0) {\n\n return new Complex(\n (a !== 0)\n ? Math.log(a + Math.sqrt(a * a + 1))\n : Infinity, 0);\n }\n\n var d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).asinh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).asinh();\n },\n\n /**\n * Calculate the complex asech\n *\n * @returns {Complex}\n */\n 'asech': function() {\n\n // asech(c) = log((1+sqrt(1-c^2))/c)\n\n var a = this['re'];\n var b = this['im'];\n\n if (this['isZero']()) {\n return Complex['INFINITY'];\n }\n\n var d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).acosh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).acosh();\n },\n\n /**\n * Calculate the complex inverse 1/z\n *\n * @returns {Complex}\n */\n 'inverse': function() {\n\n // 1 / 0 = Infinity and 1 / Infinity = 0\n if (this['isZero']()) {\n return Complex['INFINITY'];\n }\n\n if (this['isInfinite']()) {\n return Complex['ZERO'];\n }\n\n var a = this['re'];\n var b = this['im'];\n\n var d = a * a + b * b;\n\n return new Complex(a / d, -b / d);\n },\n\n /**\n * Returns the complex conjugate\n *\n * @returns {Complex}\n */\n 'conjugate': function() {\n\n return new Complex(this['re'], -this['im']);\n },\n\n /**\n * Gets the negated complex number\n *\n * @returns {Complex}\n */\n 'neg': function() {\n\n return new Complex(-this['re'], -this['im']);\n },\n\n /**\n * Ceils the actual complex number\n *\n * @returns {Complex}\n */\n 'ceil': function(places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.ceil(this['re'] * places) / places,\n Math.ceil(this['im'] * places) / places);\n },\n\n /**\n * Floors the actual complex number\n *\n * @returns {Complex}\n */\n 'floor': function(places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.floor(this['re'] * places) / places,\n Math.floor(this['im'] * places) / places);\n },\n\n /**\n * Ceils the actual complex number\n *\n * @returns {Complex}\n */\n 'round': function(places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.round(this['re'] * places) / places,\n Math.round(this['im'] * places) / places);\n },\n\n /**\n * Compares two complex numbers\n *\n * **Note:** new Complex(Infinity).equals(Infinity) === false\n *\n * @returns {boolean}\n */\n 'equals': function(a, b) {\n\n var z = new Complex(a, b);\n\n return Math.abs(z['re'] - this['re']) <= Complex['EPSILON'] &&\n Math.abs(z['im'] - this['im']) <= Complex['EPSILON'];\n },\n\n /**\n * Clones the actual object\n *\n * @returns {Complex}\n */\n 'clone': function() {\n\n return new Complex(this['re'], this['im']);\n },\n\n /**\n * Gets a string of the actual complex number\n *\n * @returns {string}\n */\n 'toString': function() {\n\n var a = this['re'];\n var b = this['im'];\n var ret = \"\";\n\n if (this['isNaN']()) {\n return 'NaN';\n }\n\n if (this['isInfinite']()) {\n return 'Infinity';\n }\n\n if (Math.abs(a) < Complex['EPSILON']) {\n a = 0;\n }\n\n if (Math.abs(b) < Complex['EPSILON']) {\n b = 0;\n }\n\n // If is real number\n if (b === 0) {\n return ret + a;\n }\n\n if (a !== 0) {\n ret += a;\n ret += \" \";\n if (b < 0) {\n b = -b;\n ret += \"-\";\n } else {\n ret += \"+\";\n }\n ret += \" \";\n } else if (b < 0) {\n b = -b;\n ret += \"-\";\n }\n\n if (1 !== b) { // b is the absolute imaginary part\n ret += b;\n }\n return ret + \"i\";\n },\n\n /**\n * Returns the actual number as a vector\n *\n * @returns {Array}\n */\n 'toVector': function() {\n\n return [this['re'], this['im']];\n },\n\n /**\n * Returns the actual real value of the current object\n *\n * @returns {number|null}\n */\n 'valueOf': function() {\n\n if (this['im'] === 0) {\n return this['re'];\n }\n return null;\n },\n\n /**\n * Determines whether a complex number is not on the Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isNaN': function() {\n return isNaN(this['re']) || isNaN(this['im']);\n },\n\n /**\n * Determines whether or not a complex number is at the zero pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isZero': function() {\n return this['im'] === 0 && this['re'] === 0;\n },\n\n /**\n * Determines whether a complex number is not at the infinity pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isFinite': function() {\n return isFinite(this['re']) && isFinite(this['im']);\n },\n\n /**\n * Determines whether or not a complex number is at the infinity pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isInfinite': function() {\n return !(this['isNaN']() || this['isFinite']());\n }\n };\n\n Complex['ZERO'] = new Complex(0, 0);\n Complex['ONE'] = new Complex(1, 0);\n Complex['I'] = new Complex(0, 1);\n Complex['PI'] = new Complex(Math.PI, 0);\n Complex['E'] = new Complex(Math.E, 0);\n Complex['INFINITY'] = new Complex(Infinity, Infinity);\n Complex['NAN'] = new Complex(NaN, NaN);\n Complex['EPSILON'] = 1e-15;\n\n if (typeof define === 'function' && define['amd']) {\n define([], function() {\n return Complex;\n });\n } else if (typeof exports === 'object') {\n Object.defineProperty(Complex, \"__esModule\", { 'value': true });\n Complex['default'] = Complex;\n Complex['Complex'] = Complex;\n module['exports'] = Complex;\n } else {\n root['Complex'] = Complex;\n }\n\n})(this);\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function () { /* empty */ };\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = require('./_hide');\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","\"use strict\";\n\n// Map the characters to escape to their escaped values. The list is derived\n// from http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaultEscapes = {\n \"{\": \"\\\\{\",\n \"}\": \"\\\\}\",\n \"\\\\\": \"\\\\textbackslash{}\",\n \"#\": \"\\\\#\",\n $: \"\\\\$\",\n \"%\": \"\\\\%\",\n \"&\": \"\\\\&\",\n \"^\": \"\\\\textasciicircum{}\",\n _: \"\\\\_\",\n \"~\": \"\\\\textasciitilde{}\"\n};\nvar formatEscapes = {\n \"\\u2013\": \"\\\\--\",\n \"\\u2014\": \"\\\\---\",\n \" \": \"~\",\n \"\\t\": \"\\\\qquad{}\",\n \"\\r\\n\": \"\\\\newline{}\",\n \"\\n\": \"\\\\newline{}\"\n};\n\nvar defaultEscapeMapFn = function defaultEscapeMapFn(defaultEscapes, formatEscapes) {\n return _extends({}, defaultEscapes, formatEscapes);\n};\n\n/**\n * Escape a string to be used in LaTeX documents.\n * @param {string} str the string to be escaped.\n * @param {boolean} params.preserveFormatting whether formatting escapes should\n * be performed (default: false).\n * @param {function} params.escapeMapFn the function to modify the escape maps.\n * @return {string} the escaped string, ready to be used in LaTeX.\n */\nmodule.exports = function (str) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$preserveFormatti = _ref.preserveFormatting,\n preserveFormatting = _ref$preserveFormatti === undefined ? false : _ref$preserveFormatti,\n _ref$escapeMapFn = _ref.escapeMapFn,\n escapeMapFn = _ref$escapeMapFn === undefined ? defaultEscapeMapFn : _ref$escapeMapFn;\n\n var runningStr = String(str);\n var result = \"\";\n\n var escapes = escapeMapFn(_extends({}, defaultEscapes), preserveFormatting ? _extends({}, formatEscapes) : {});\n var escapeKeys = Object.keys(escapes); // as it is reused later on\n\n // Algorithm: Go through the string character by character, if it matches\n // with one of the special characters then we'll replace it with the escaped\n // version.\n\n var _loop = function _loop() {\n var specialCharFound = false;\n escapeKeys.forEach(function (key, index) {\n if (specialCharFound) {\n return;\n }\n if (runningStr.length >= key.length && runningStr.slice(0, key.length) === key) {\n result += escapes[escapeKeys[index]];\n runningStr = runningStr.slice(key.length, runningStr.length);\n specialCharFound = true;\n }\n });\n if (!specialCharFound) {\n result += runningStr.slice(0, 1);\n runningStr = runningStr.slice(1, runningStr.length);\n }\n };\n\n while (runningStr) {\n _loop();\n }\n return result;\n};","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n","// A port of an algorithm by Johannes Baagøe , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","/**\n * typed-function\n *\n * Type checking for JavaScript functions\n *\n * https://github.com/josdejong/typed-function\n */\n'use strict';\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // OldNode. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like OldNode.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.typed = factory();\n }\n}(this, function () {\n\n function ok () {\n return true;\n }\n\n function notOk () {\n return false;\n }\n\n function undef () {\n return undefined;\n }\n\n /**\n * @typedef {{\n * params: Param[],\n * fn: function\n * }} Signature\n *\n * @typedef {{\n * types: Type[],\n * restParam: boolean\n * }} Param\n *\n * @typedef {{\n * name: string,\n * typeIndex: number,\n * test: function,\n * conversion?: ConversionDef,\n * conversionIndex: number,\n * }} Type\n *\n * @typedef {{\n * from: string,\n * to: string,\n * convert: function (*) : *\n * }} ConversionDef\n *\n * @typedef {{\n * name: string,\n * test: function(*) : boolean\n * }} TypeDef\n */\n\n // create a new instance of typed-function\n function create () {\n // data type tests\n var _types = [\n { name: 'number', test: function (x) { return typeof x === 'number' } },\n { name: 'string', test: function (x) { return typeof x === 'string' } },\n { name: 'boolean', test: function (x) { return typeof x === 'boolean' } },\n { name: 'Function', test: function (x) { return typeof x === 'function'} },\n { name: 'Array', test: Array.isArray },\n { name: 'Date', test: function (x) { return x instanceof Date } },\n { name: 'RegExp', test: function (x) { return x instanceof RegExp } },\n { name: 'Object', test: function (x) {\n return typeof x === 'object' && x !== null && x.constructor === Object\n }},\n { name: 'null', test: function (x) { return x === null } },\n { name: 'undefined', test: function (x) { return x === undefined } }\n ];\n\n var anyType = {\n name: 'any',\n test: ok\n }\n\n // types which need to be ignored\n var _ignore = [];\n\n // type conversions\n var _conversions = [];\n\n // This is a temporary object, will be replaced with a typed function at the end\n var typed = {\n types: _types,\n conversions: _conversions,\n ignore: _ignore\n };\n\n /**\n * Find the test function for a type\n * @param {String} typeName\n * @return {TypeDef} Returns the type definition when found,\n * Throws a TypeError otherwise\n */\n function findTypeByName (typeName) {\n var entry = findInArray(typed.types, function (entry) {\n return entry.name === typeName;\n });\n\n if (entry) {\n return entry;\n }\n\n if (typeName === 'any') { // special baked-in case 'any'\n return anyType;\n }\n\n var hint = findInArray(typed.types, function (entry) {\n return entry.name.toLowerCase() === typeName.toLowerCase();\n });\n\n throw new TypeError('Unknown type \"' + typeName + '\"' +\n (hint ? ('. Did you mean \"' + hint.name + '\"?') : ''));\n }\n\n /**\n * Find the index of a type definition. Handles special case 'any'\n * @param {TypeDef} type\n * @return {number}\n */\n function findTypeIndex(type) {\n if (type === anyType) {\n return 999;\n }\n\n return typed.types.indexOf(type);\n }\n\n /**\n * Find a type that matches a value.\n * @param {*} value\n * @return {string} Returns the name of the first type for which\n * the type test matches the value.\n */\n function findTypeName(value) {\n var entry = findInArray(typed.types, function (entry) {\n return entry.test(value);\n });\n\n if (entry) {\n return entry.name;\n }\n\n throw new TypeError('Value has unknown type. Value: ' + value);\n }\n\n /**\n * Find a specific signature from a (composed) typed function, for example:\n *\n * typed.find(fn, ['number', 'string'])\n * typed.find(fn, 'number, string')\n *\n * Function find only only works for exact matches.\n *\n * @param {Function} fn A typed-function\n * @param {string | string[]} signature Signature to be found, can be\n * an array or a comma separated string.\n * @return {Function} Returns the matching signature, or\n * throws an error when no signature\n * is found.\n */\n function find (fn, signature) {\n if (!fn.signatures) {\n throw new TypeError('Function is no typed-function');\n }\n\n // normalize input\n var arr;\n if (typeof signature === 'string') {\n arr = signature.split(',');\n for (var i = 0; i < arr.length; i++) {\n arr[i] = arr[i].trim();\n }\n }\n else if (Array.isArray(signature)) {\n arr = signature;\n }\n else {\n throw new TypeError('String array or a comma separated string expected');\n }\n\n var str = arr.join(',');\n\n // find an exact match\n var match = fn.signatures[str];\n if (match) {\n return match;\n }\n\n // TODO: extend find to match non-exact signatures\n\n throw new TypeError('Signature not found (signature: ' + (fn.name || 'unnamed') + '(' + arr.join(', ') + '))');\n }\n\n /**\n * Convert a given value to another data type.\n * @param {*} value\n * @param {string} type\n */\n function convert (value, type) {\n var from = findTypeName(value);\n\n // check conversion is needed\n if (type === from) {\n return value;\n }\n\n for (var i = 0; i < typed.conversions.length; i++) {\n var conversion = typed.conversions[i];\n if (conversion.from === from && conversion.to === type) {\n return conversion.convert(value);\n }\n }\n\n throw new Error('Cannot convert from ' + from + ' to ' + type);\n }\n \n /**\n * Stringify parameters in a normalized way\n * @param {Param[]} params\n * @return {string}\n */\n function stringifyParams (params) {\n return params\n .map(function (param) {\n var typeNames = param.types.map(getTypeName);\n\n return (param.restParam ? '...' : '') + typeNames.join('|');\n })\n .join(',');\n }\n\n /**\n * Parse a parameter, like \"...number | boolean\"\n * @param {string} param\n * @param {ConversionDef[]} conversions\n * @return {Param} param\n */\n function parseParam (param, conversions) {\n var restParam = param.indexOf('...') === 0;\n var types = (!restParam)\n ? param\n : (param.length > 3)\n ? param.slice(3)\n : 'any';\n\n var typeNames = types.split('|').map(trim)\n .filter(notEmpty)\n .filter(notIgnore);\n\n var matchingConversions = filterConversions(conversions, typeNames);\n\n var exactTypes = typeNames.map(function (typeName) {\n var type = findTypeByName(typeName);\n\n return {\n name: typeName,\n typeIndex: findTypeIndex(type),\n test: type.test,\n conversion: null,\n conversionIndex: -1\n };\n });\n\n var convertibleTypes = matchingConversions.map(function (conversion) {\n var type = findTypeByName(conversion.from);\n\n return {\n name: conversion.from,\n typeIndex: findTypeIndex(type),\n test: type.test,\n conversion: conversion,\n conversionIndex: conversions.indexOf(conversion)\n };\n });\n\n return {\n types: exactTypes.concat(convertibleTypes),\n restParam: restParam\n };\n }\n\n /**\n * Parse a signature with comma separated parameters,\n * like \"number | boolean, ...string\"\n * @param {string} signature\n * @param {function} fn\n * @param {ConversionDef[]} conversions\n * @return {Signature | null} signature\n */\n function parseSignature (signature, fn, conversions) {\n var params = [];\n\n if (signature.trim() !== '') {\n params = signature\n .split(',')\n .map(trim)\n .map(function (param, index, array) {\n var parsedParam = parseParam(param, conversions);\n\n if (parsedParam.restParam && (index !== array.length - 1)) {\n throw new SyntaxError('Unexpected rest parameter \"' + param + '\": ' +\n 'only allowed for the last parameter');\n }\n\n return parsedParam;\n });\n }\n\n if (params.some(isInvalidParam)) {\n // invalid signature: at least one parameter has no types\n // (they may have been filtered)\n return null;\n }\n\n return {\n params: params,\n fn: fn\n };\n }\n\n /**\n * Test whether a set of params contains a restParam\n * @param {Param[]} params\n * @return {boolean} Returns true when the last parameter is a restParam\n */\n function hasRestParam(params) {\n var param = last(params)\n return param ? param.restParam : false;\n }\n\n /**\n * Test whether a parameter contains conversions\n * @param {Param} param\n * @return {boolean} Returns true when at least one of the parameters\n * contains a conversion.\n */\n function hasConversions(param) {\n return param.types.some(function (type) {\n return type.conversion != null;\n });\n }\n\n /**\n * Create a type test for a single parameter, which can have one or multiple\n * types.\n * @param {Param} param\n * @return {function(x: *) : boolean} Returns a test function\n */\n function compileTest(param) {\n if (!param || param.types.length === 0) {\n // nothing to do\n return ok;\n }\n else if (param.types.length === 1) {\n return findTypeByName(param.types[0].name).test;\n }\n else if (param.types.length === 2) {\n var test0 = findTypeByName(param.types[0].name).test;\n var test1 = findTypeByName(param.types[1].name).test;\n return function or(x) {\n return test0(x) || test1(x);\n }\n }\n else { // param.types.length > 2\n var tests = param.types.map(function (type) {\n return findTypeByName(type.name).test;\n })\n return function or(x) {\n for (var i = 0; i < tests.length; i++) {\n if (tests[i](x)) {\n return true;\n }\n }\n return false;\n }\n }\n }\n\n /**\n * Create a test for all parameters of a signature\n * @param {Param[]} params\n * @return {function(args: Array<*>) : boolean}\n */\n function compileTests(params) {\n var tests, test0, test1;\n\n if (hasRestParam(params)) {\n // variable arguments like '...number'\n tests = initial(params).map(compileTest);\n var varIndex = tests.length;\n var lastTest = compileTest(last(params));\n var testRestParam = function (args) {\n for (var i = varIndex; i < args.length; i++) {\n if (!lastTest(args[i])) {\n return false;\n }\n }\n return true;\n }\n\n return function testArgs(args) {\n for (var i = 0; i < tests.length; i++) {\n if (!tests[i](args[i])) {\n return false;\n }\n }\n return testRestParam(args) && (args.length >= varIndex + 1);\n };\n }\n else {\n // no variable arguments\n if (params.length === 0) {\n return function testArgs(args) {\n return args.length === 0;\n };\n }\n else if (params.length === 1) {\n test0 = compileTest(params[0]);\n return function testArgs(args) {\n return test0(args[0]) && args.length === 1;\n };\n }\n else if (params.length === 2) {\n test0 = compileTest(params[0]);\n test1 = compileTest(params[1]);\n return function testArgs(args) {\n return test0(args[0]) && test1(args[1]) && args.length === 2;\n };\n }\n else { // arguments.length > 2\n tests = params.map(compileTest);\n return function testArgs(args) {\n for (var i = 0; i < tests.length; i++) {\n if (!tests[i](args[i])) {\n return false;\n }\n }\n return args.length === tests.length;\n };\n }\n }\n }\n\n /**\n * Find the parameter at a specific index of a signature.\n * Handles rest parameters.\n * @param {Signature} signature\n * @param {number} index\n * @return {Param | null} Returns the matching parameter when found,\n * null otherwise.\n */\n function getParamAtIndex(signature, index) {\n return index < signature.params.length\n ? signature.params[index]\n : hasRestParam(signature.params)\n ? last(signature.params)\n : null\n }\n\n /**\n * Get all type names of a parameter\n * @param {Signature} signature\n * @param {number} index\n * @param {boolean} excludeConversions\n * @return {string[]} Returns an array with type names\n */\n function getExpectedTypeNames (signature, index, excludeConversions) {\n var param = getParamAtIndex(signature, index);\n var types = param\n ? excludeConversions\n ? param.types.filter(isExactType)\n : param.types\n : [];\n\n return types.map(getTypeName);\n }\n\n /**\n * Returns the name of a type\n * @param {Type} type\n * @return {string} Returns the type name\n */\n function getTypeName(type) {\n return type.name;\n }\n\n /**\n * Test whether a type is an exact type or conversion\n * @param {Type} type\n * @return {boolean} Returns true when\n */\n function isExactType(type) {\n return type.conversion === null || type.conversion === undefined;\n }\n\n /**\n * Helper function for creating error messages: create an array with\n * all available types on a specific argument index.\n * @param {Signature[]} signatures\n * @param {number} index\n * @return {string[]} Returns an array with available types\n */\n function mergeExpectedParams(signatures, index) {\n var typeNames = uniq(flatMap(signatures, function (signature) {\n return getExpectedTypeNames(signature, index, false);\n }));\n\n return (typeNames.indexOf('any') !== -1) ? ['any'] : typeNames;\n }\n\n /**\n * Create\n * @param {string} name The name of the function\n * @param {array.<*>} args The actual arguments passed to the function\n * @param {Signature[]} signatures A list with available signatures\n * @return {TypeError} Returns a type error with additional data\n * attached to it in the property `data`\n */\n function createError(name, args, signatures) {\n var err, expected;\n var _name = name || 'unnamed';\n\n // test for wrong type at some index\n var matchingSignatures = signatures;\n var index;\n for (index = 0; index < args.length; index++) {\n var nextMatchingDefs = matchingSignatures.filter(function (signature) {\n var test = compileTest(getParamAtIndex(signature, index));\n return (index < signature.params.length || hasRestParam(signature.params)) &&\n test(args[index]);\n });\n\n if (nextMatchingDefs.length === 0) {\n // no matching signatures anymore, throw error \"wrong type\"\n expected = mergeExpectedParams(matchingSignatures, index);\n if (expected.length > 0) {\n var actualType = findTypeName(args[index]);\n\n err = new TypeError('Unexpected type of argument in function ' + _name +\n ' (expected: ' + expected.join(' or ') +\n ', actual: ' + actualType + ', index: ' + index + ')');\n err.data = {\n category: 'wrongType',\n fn: _name,\n index: index,\n actual: actualType,\n expected: expected\n }\n return err;\n }\n }\n else {\n matchingSignatures = nextMatchingDefs;\n }\n }\n\n // test for too few arguments\n var lengths = matchingSignatures.map(function (signature) {\n return hasRestParam(signature.params) ? Infinity : signature.params.length;\n });\n if (args.length < Math.min.apply(null, lengths)) {\n expected = mergeExpectedParams(matchingSignatures, index);\n err = new TypeError('Too few arguments in function ' + _name +\n ' (expected: ' + expected.join(' or ') +\n ', index: ' + args.length + ')');\n err.data = {\n category: 'tooFewArgs',\n fn: _name,\n index: args.length,\n expected: expected\n }\n return err;\n }\n\n // test for too many arguments\n var maxLength = Math.max.apply(null, lengths);\n if (args.length > maxLength) {\n err = new TypeError('Too many arguments in function ' + _name +\n ' (expected: ' + maxLength + ', actual: ' + args.length + ')');\n err.data = {\n category: 'tooManyArgs',\n fn: _name,\n index: args.length,\n expectedLength: maxLength\n }\n return err;\n }\n\n err = new TypeError('Arguments of type \"' + args.join(', ') +\n '\" do not match any of the defined signatures of function ' + _name + '.');\n err.data = {\n category: 'mismatch',\n actual: args.map(findTypeName)\n }\n return err;\n }\n\n /**\n * Find the lowest index of all exact types of a parameter (no conversions)\n * @param {Param} param\n * @return {number} Returns the index of the lowest type in typed.types\n */\n function getLowestTypeIndex (param) {\n var min = 999;\n\n for (var i = 0; i < param.types.length; i++) {\n if (isExactType(param.types[i])) {\n min = Math.min(min, param.types[i].typeIndex);\n }\n }\n\n return min;\n }\n\n /**\n * Find the lowest index of the conversion of all types of the parameter\n * having a conversion\n * @param {Param} param\n * @return {number} Returns the lowest index of the conversions of this type\n */\n function getLowestConversionIndex (param) {\n var min = 999;\n\n for (var i = 0; i < param.types.length; i++) {\n if (!isExactType(param.types[i])) {\n min = Math.min(min, param.types[i].conversionIndex);\n }\n }\n\n return min;\n }\n\n /**\n * Compare two params\n * @param {Param} param1\n * @param {Param} param2\n * @return {number} returns a negative number when param1 must get a lower\n * index than param2, a positive number when the opposite,\n * or zero when both are equal\n */\n function compareParams (param1, param2) {\n var c;\n\n // compare having a rest parameter or not\n c = param1.restParam - param2.restParam;\n if (c !== 0) {\n return c;\n }\n\n // compare having conversions or not\n c = hasConversions(param1) - hasConversions(param2);\n if (c !== 0) {\n return c;\n }\n\n // compare the index of the types\n c = getLowestTypeIndex(param1) - getLowestTypeIndex(param2);\n if (c !== 0) {\n return c;\n }\n\n // compare the index of any conversion\n return getLowestConversionIndex(param1) - getLowestConversionIndex(param2);\n }\n\n /**\n * Compare two signatures\n * @param {Signature} signature1\n * @param {Signature} signature2\n * @return {number} returns a negative number when param1 must get a lower\n * index than param2, a positive number when the opposite,\n * or zero when both are equal\n */\n function compareSignatures (signature1, signature2) {\n var len = Math.min(signature1.params.length, signature2.params.length);\n var i;\n var c;\n\n // compare whether the params have conversions at all or not\n c = signature1.params.some(hasConversions) - signature2.params.some(hasConversions)\n if (c !== 0) {\n return c;\n }\n\n // next compare whether the params have conversions one by one\n for (i = 0; i < len; i++) {\n c = hasConversions(signature1.params[i]) - hasConversions(signature2.params[i]);\n if (c !== 0) {\n return c;\n }\n }\n\n // compare the types of the params one by one\n for (i = 0; i < len; i++) {\n c = compareParams(signature1.params[i], signature2.params[i]);\n if (c !== 0) {\n return c;\n }\n }\n\n // compare the number of params\n return signature1.params.length - signature2.params.length;\n }\n\n /**\n * Get params containing all types that can be converted to the defined types.\n *\n * @param {ConversionDef[]} conversions\n * @param {string[]} typeNames\n * @return {ConversionDef[]} Returns the conversions that are available\n * for every type (if any)\n */\n function filterConversions(conversions, typeNames) {\n var matches = {};\n\n conversions.forEach(function (conversion) {\n if (typeNames.indexOf(conversion.from) === -1 &&\n typeNames.indexOf(conversion.to) !== -1 &&\n !matches[conversion.from]) {\n matches[conversion.from] = conversion;\n }\n });\n\n return Object.keys(matches).map(function (from) {\n return matches[from];\n });\n }\n\n /**\n * Preprocess arguments before calling the original function:\n * - if needed convert the parameters\n * - in case of rest parameters, move the rest parameters into an Array\n * @param {Param[]} params\n * @param {function} fn\n * @return {function} Returns a wrapped function\n */\n function compileArgsPreprocessing(params, fn) {\n var fnConvert = fn;\n\n // TODO: can we make this wrapper function smarter/simpler?\n\n if (params.some(hasConversions)) {\n var restParam = hasRestParam(params);\n var compiledConversions = params.map(compileArgConversion)\n\n fnConvert = function convertArgs() {\n var args = [];\n var last = restParam ? arguments.length - 1 : arguments.length;\n for (var i = 0; i < last; i++) {\n args[i] = compiledConversions[i](arguments[i]);\n }\n if (restParam) {\n args[last] = arguments[last].map(compiledConversions[last]);\n }\n\n return fn.apply(this, args);\n }\n }\n\n var fnPreprocess = fnConvert;\n if (hasRestParam(params)) {\n var offset = params.length - 1;\n\n fnPreprocess = function preprocessRestParams () {\n return fnConvert.apply(this,\n slice(arguments, 0, offset).concat([slice(arguments, offset)]));\n }\n }\n\n return fnPreprocess;\n }\n\n /**\n * Compile conversion for a parameter to the right type\n * @param {Param} param\n * @return {function} Returns the wrapped function that will convert arguments\n *\n */\n function compileArgConversion(param) {\n var test0, test1, conversion0, conversion1;\n var tests = [];\n var conversions = [];\n\n param.types.forEach(function (type) {\n if (type.conversion) {\n tests.push(findTypeByName(type.conversion.from).test);\n conversions.push(type.conversion.convert);\n }\n });\n\n // create optimized conversion functions depending on the number of conversions\n switch (conversions.length) {\n case 0:\n return function convertArg(arg) {\n return arg;\n }\n\n case 1:\n test0 = tests[0]\n conversion0 = conversions[0];\n return function convertArg(arg) {\n if (test0(arg)) {\n return conversion0(arg)\n }\n return arg;\n }\n\n case 2:\n test0 = tests[0]\n test1 = tests[1]\n conversion0 = conversions[0];\n conversion1 = conversions[1];\n return function convertArg(arg) {\n if (test0(arg)) {\n return conversion0(arg)\n }\n if (test1(arg)) {\n return conversion1(arg)\n }\n return arg;\n }\n\n default:\n return function convertArg(arg) {\n for (var i = 0; i < conversions.length; i++) {\n if (tests[i](arg)) {\n return conversions[i](arg);\n }\n }\n return arg;\n }\n }\n }\n\n /**\n * Convert an array with signatures into a map with signatures,\n * where signatures with union types are split into separate signatures\n *\n * Throws an error when there are conflicting types\n *\n * @param {Signature[]} signatures\n * @return {Object.} Returns a map with signatures\n * as key and the original function\n * of this signature as value.\n */\n function createSignaturesMap(signatures) {\n var signaturesMap = {};\n signatures.forEach(function (signature) {\n if (!signature.params.some(hasConversions)) {\n splitParams(signature.params, true).forEach(function (params) {\n signaturesMap[stringifyParams(params)] = signature.fn;\n });\n }\n });\n\n return signaturesMap;\n }\n\n /**\n * Split params with union types in to separate params.\n *\n * For example:\n *\n * splitParams([['Array', 'Object'], ['string', 'RegExp'])\n * // returns:\n * // [\n * // ['Array', 'string'],\n * // ['Array', 'RegExp'],\n * // ['Object', 'string'],\n * // ['Object', 'RegExp']\n * // ]\n *\n * @param {Param[]} params\n * @param {boolean} ignoreConversionTypes\n * @return {Param[]}\n */\n function splitParams(params, ignoreConversionTypes) {\n function _splitParams(params, index, types) {\n if (index < params.length) {\n var param = params[index]\n var filteredTypes = ignoreConversionTypes\n ? param.types.filter(isExactType)\n : param.types;\n var typeGroups\n\n if (param.restParam) {\n // split the types of a rest parameter in two:\n // one with only exact types, and one with exact types and conversions\n var exactTypes = filteredTypes.filter(isExactType)\n typeGroups = exactTypes.length < filteredTypes.length\n ? [exactTypes, filteredTypes]\n : [filteredTypes]\n\n }\n else {\n // split all the types of a regular parameter into one type per group\n typeGroups = filteredTypes.map(function (type) {\n return [type]\n })\n }\n\n // recurse over the groups with types\n return flatMap(typeGroups, function (typeGroup) {\n return _splitParams(params, index + 1, types.concat([typeGroup]));\n });\n\n }\n else {\n // we've reached the end of the parameters. Now build a new Param\n var splittedParams = types.map(function (type, typeIndex) {\n return {\n types: type,\n restParam: (typeIndex === params.length - 1) && hasRestParam(params)\n }\n });\n\n return [splittedParams];\n }\n }\n\n return _splitParams(params, 0, []);\n }\n\n /**\n * Test whether two signatures have a conflicting signature\n * @param {Signature} signature1\n * @param {Signature} signature2\n * @return {boolean} Returns true when the signatures conflict, false otherwise.\n */\n function hasConflictingParams(signature1, signature2) {\n var ii = Math.max(signature1.params.length, signature2.params.length);\n\n for (var i = 0; i < ii; i++) {\n var typesNames1 = getExpectedTypeNames(signature1, i, true);\n var typesNames2 = getExpectedTypeNames(signature2, i, true);\n\n if (!hasOverlap(typesNames1, typesNames2)) {\n return false;\n }\n }\n\n var len1 = signature1.params.length;\n var len2 = signature2.params.length;\n var restParam1 = hasRestParam(signature1.params);\n var restParam2 = hasRestParam(signature2.params);\n\n return restParam1\n ? restParam2 ? (len1 === len2) : (len2 >= len1)\n : restParam2 ? (len1 >= len2) : (len1 === len2)\n }\n\n /**\n * Create a typed function\n * @param {String} name The name for the typed function\n * @param {Object.} signaturesMap\n * An object with one or\n * multiple signatures as key, and the\n * function corresponding to the\n * signature as value.\n * @return {function} Returns the created typed function.\n */\n function createTypedFunction(name, signaturesMap) {\n if (Object.keys(signaturesMap).length === 0) {\n throw new SyntaxError('No signatures provided');\n }\n\n // parse the signatures, and check for conflicts\n var parsedSignatures = [];\n Object.keys(signaturesMap)\n .map(function (signature) {\n return parseSignature(signature, signaturesMap[signature], typed.conversions);\n })\n .filter(notNull)\n .forEach(function (parsedSignature) {\n // check whether this parameter conflicts with already parsed signatures\n var conflictingSignature = findInArray(parsedSignatures, function (s) {\n return hasConflictingParams(s, parsedSignature)\n });\n if (conflictingSignature) {\n throw new TypeError('Conflicting signatures \"' +\n stringifyParams(conflictingSignature.params) + '\" and \"' +\n stringifyParams(parsedSignature.params) + '\".');\n }\n\n parsedSignatures.push(parsedSignature);\n });\n\n // split and filter the types of the signatures, and then order them\n var signatures = flatMap(parsedSignatures, function (parsedSignature) {\n var params = parsedSignature ? splitParams(parsedSignature.params, false) : []\n\n return params.map(function (params) {\n return {\n params: params,\n fn: parsedSignature.fn\n };\n });\n }).filter(notNull);\n\n signatures.sort(compareSignatures);\n\n // we create a highly optimized checks for the first couple of signatures with max 2 arguments\n var ok0 = signatures[0] && signatures[0].params.length <= 2 && !hasRestParam(signatures[0].params);\n var ok1 = signatures[1] && signatures[1].params.length <= 2 && !hasRestParam(signatures[1].params);\n var ok2 = signatures[2] && signatures[2].params.length <= 2 && !hasRestParam(signatures[2].params);\n var ok3 = signatures[3] && signatures[3].params.length <= 2 && !hasRestParam(signatures[3].params);\n var ok4 = signatures[4] && signatures[4].params.length <= 2 && !hasRestParam(signatures[4].params);\n var ok5 = signatures[5] && signatures[5].params.length <= 2 && !hasRestParam(signatures[5].params);\n var allOk = ok0 && ok1 && ok2 && ok3 && ok4 && ok5;\n\n // compile the tests\n var tests = signatures.map(function (signature) {\n return compileTests(signature.params);\n });\n\n var test00 = ok0 ? compileTest(signatures[0].params[0]) : notOk;\n var test10 = ok1 ? compileTest(signatures[1].params[0]) : notOk;\n var test20 = ok2 ? compileTest(signatures[2].params[0]) : notOk;\n var test30 = ok3 ? compileTest(signatures[3].params[0]) : notOk;\n var test40 = ok4 ? compileTest(signatures[4].params[0]) : notOk;\n var test50 = ok5 ? compileTest(signatures[5].params[0]) : notOk;\n\n var test01 = ok0 ? compileTest(signatures[0].params[1]) : notOk;\n var test11 = ok1 ? compileTest(signatures[1].params[1]) : notOk;\n var test21 = ok2 ? compileTest(signatures[2].params[1]) : notOk;\n var test31 = ok3 ? compileTest(signatures[3].params[1]) : notOk;\n var test41 = ok4 ? compileTest(signatures[4].params[1]) : notOk;\n var test51 = ok5 ? compileTest(signatures[5].params[1]) : notOk;\n\n // compile the functions\n var fns = signatures.map(function(signature) {\n return compileArgsPreprocessing(signature.params, signature.fn);\n });\n\n var fn0 = ok0 ? fns[0] : undef;\n var fn1 = ok1 ? fns[1] : undef;\n var fn2 = ok2 ? fns[2] : undef;\n var fn3 = ok3 ? fns[3] : undef;\n var fn4 = ok4 ? fns[4] : undef;\n var fn5 = ok5 ? fns[5] : undef;\n\n var len0 = ok0 ? signatures[0].params.length : -1;\n var len1 = ok1 ? signatures[1].params.length : -1;\n var len2 = ok2 ? signatures[2].params.length : -1;\n var len3 = ok3 ? signatures[3].params.length : -1;\n var len4 = ok4 ? signatures[4].params.length : -1;\n var len5 = ok5 ? signatures[5].params.length : -1;\n\n // simple and generic, but also slow\n var iStart = allOk ? 6 : 0;\n var iEnd = signatures.length;\n var generic = function generic() {\n 'use strict';\n\n for (var i = iStart; i < iEnd; i++) {\n if (tests[i](arguments)) {\n return fns[i].apply(this, arguments);\n }\n }\n\n return typed.onMismatch(name, arguments, signatures);\n }\n\n // create the typed function\n // fast, specialized version. Falls back to the slower, generic one if needed\n var fn = function fn(arg0, arg1) {\n 'use strict';\n\n if (arguments.length === len0 && test00(arg0) && test01(arg1)) { return fn0.apply(fn, arguments); }\n if (arguments.length === len1 && test10(arg0) && test11(arg1)) { return fn1.apply(fn, arguments); }\n if (arguments.length === len2 && test20(arg0) && test21(arg1)) { return fn2.apply(fn, arguments); }\n if (arguments.length === len3 && test30(arg0) && test31(arg1)) { return fn3.apply(fn, arguments); }\n if (arguments.length === len4 && test40(arg0) && test41(arg1)) { return fn4.apply(fn, arguments); }\n if (arguments.length === len5 && test50(arg0) && test51(arg1)) { return fn5.apply(fn, arguments); }\n\n return generic.apply(fn, arguments);\n }\n\n // attach name the typed function\n try {\n Object.defineProperty(fn, 'name', {value: name});\n }\n catch (err) {\n // old browsers do not support Object.defineProperty and some don't support setting the name property\n // the function name is not essential for the functioning, it's mostly useful for debugging,\n // so it's fine to have unnamed functions.\n }\n\n // attach signatures to the function\n fn.signatures = createSignaturesMap(signatures);\n\n return fn;\n }\n\n /**\n * Action to take on mismatch\n * @param {string} name Name of function that was attempted to be called\n * @param {Array} args Actual arguments to the call\n * @param {Array} signatures Known signatures of the named typed-function\n */\n function _onMismatch(name, args, signatures) {\n throw createError(name, args, signatures);\n }\n\n /**\n * Test whether a type should be NOT be ignored\n * @param {string} typeName\n * @return {boolean}\n */\n function notIgnore(typeName) {\n return typed.ignore.indexOf(typeName) === -1;\n }\n\n /**\n * trim a string\n * @param {string} str\n * @return {string}\n */\n function trim(str) {\n return str.trim();\n }\n\n /**\n * Test whether a string is not empty\n * @param {string} str\n * @return {boolean}\n */\n function notEmpty(str) {\n return !!str;\n }\n\n /**\n * test whether a value is not strict equal to null\n * @param {*} value\n * @return {boolean}\n */\n function notNull(value) {\n return value !== null;\n }\n\n /**\n * Test whether a parameter has no types defined\n * @param {Param} param\n * @return {boolean}\n */\n function isInvalidParam (param) {\n return param.types.length === 0;\n }\n\n /**\n * Return all but the last items of an array\n * @param {Array} arr\n * @return {Array}\n */\n function initial(arr) {\n return arr.slice(0, arr.length - 1);\n }\n\n /**\n * return the last item of an array\n * @param {Array} arr\n * @return {*}\n */\n function last(arr) {\n return arr[arr.length - 1];\n }\n\n /**\n * Slice an array or function Arguments\n * @param {Array | Arguments | IArguments} arr\n * @param {number} start\n * @param {number} [end]\n * @return {Array}\n */\n function slice(arr, start, end) {\n return Array.prototype.slice.call(arr, start, end);\n }\n\n /**\n * Test whether an array contains some item\n * @param {Array} array\n * @param {*} item\n * @return {boolean} Returns true if array contains item, false if not.\n */\n function contains(array, item) {\n return array.indexOf(item) !== -1;\n }\n\n /**\n * Test whether two arrays have overlapping items\n * @param {Array} array1\n * @param {Array} array2\n * @return {boolean} Returns true when at least one item exists in both arrays\n */\n function hasOverlap(array1, array2) {\n for (var i = 0; i < array1.length; i++) {\n if (contains(array2, array1[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Return the first item from an array for which test(arr[i]) returns true\n * @param {Array} arr\n * @param {function} test\n * @return {* | undefined} Returns the first matching item\n * or undefined when there is no match\n */\n function findInArray(arr, test) {\n for (var i = 0; i < arr.length; i++) {\n if (test(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n }\n\n /**\n * Filter unique items of an array with strings\n * @param {string[]} arr\n * @return {string[]}\n */\n function uniq(arr) {\n var entries = {}\n for (var i = 0; i < arr.length; i++) {\n entries[arr[i]] = true;\n }\n return Object.keys(entries);\n }\n\n /**\n * Flat map the result invoking a callback for every item in an array.\n * https://gist.github.com/samgiles/762ee337dff48623e729\n * @param {Array} arr\n * @param {function} callback\n * @return {Array}\n */\n function flatMap(arr, callback) {\n return Array.prototype.concat.apply([], arr.map(callback));\n }\n\n /**\n * Retrieve the function name from a set of typed functions,\n * and check whether the name of all functions match (if given)\n * @param {function[]} fns\n */\n function getName (fns) {\n var name = '';\n\n for (var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n\n // check whether the names are the same when defined\n if ((typeof fn.signatures === 'object' || typeof fn.signature === 'string') && fn.name !== '') {\n if (name === '') {\n name = fn.name;\n }\n else if (name !== fn.name) {\n var err = new Error('Function names do not match (expected: ' + name + ', actual: ' + fn.name + ')');\n err.data = {\n actual: fn.name,\n expected: name\n };\n throw err;\n }\n }\n }\n\n return name;\n }\n\n // extract and merge all signatures of a list with typed functions\n function extractSignatures(fns) {\n var err;\n var signaturesMap = {};\n\n function validateUnique(_signature, _fn) {\n if (signaturesMap.hasOwnProperty(_signature) && _fn !== signaturesMap[_signature]) {\n err = new Error('Signature \"' + _signature + '\" is defined twice');\n err.data = {signature: _signature};\n throw err;\n // else: both signatures point to the same function, that's fine\n }\n }\n\n for (var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n\n // test whether this is a typed-function\n if (typeof fn.signatures === 'object') {\n // merge the signatures\n for (var signature in fn.signatures) {\n if (fn.signatures.hasOwnProperty(signature)) {\n validateUnique(signature, fn.signatures[signature]);\n signaturesMap[signature] = fn.signatures[signature];\n }\n }\n }\n else if (typeof fn.signature === 'string') {\n validateUnique(fn.signature, fn);\n signaturesMap[fn.signature] = fn;\n }\n else {\n err = new TypeError('Function is no typed-function (index: ' + i + ')');\n err.data = {index: i};\n throw err;\n }\n }\n\n return signaturesMap;\n }\n\n typed = createTypedFunction('typed', {\n 'string, Object': createTypedFunction,\n 'Object': function (signaturesMap) {\n // find existing name\n var fns = [];\n for (var signature in signaturesMap) {\n if (signaturesMap.hasOwnProperty(signature)) {\n fns.push(signaturesMap[signature]);\n }\n }\n var name = getName(fns);\n return createTypedFunction(name, signaturesMap);\n },\n '...Function': function (fns) {\n return createTypedFunction(getName(fns), extractSignatures(fns));\n },\n 'string, ...Function': function (name, fns) {\n return createTypedFunction(name, extractSignatures(fns));\n }\n });\n\n typed.create = create;\n typed.types = _types;\n typed.conversions = _conversions;\n typed.ignore = _ignore;\n typed.onMismatch = _onMismatch;\n typed.throwMismatchError = _onMismatch;\n typed.createError = createError;\n typed.convert = convert;\n typed.find = find;\n\n /**\n * add a type\n * @param {{name: string, test: function}} type\n * @param {boolean} [beforeObjectTest=true]\n * If true, the new test will be inserted before\n * the test with name 'Object' (if any), since\n * tests for Object match Array and classes too.\n */\n typed.addType = function (type, beforeObjectTest) {\n if (!type || typeof type.name !== 'string' || typeof type.test !== 'function') {\n throw new TypeError('Object with properties {name: string, test: function} expected');\n }\n\n if (beforeObjectTest !== false) {\n for (var i = 0; i < typed.types.length; i++) {\n if (typed.types[i].name === 'Object') {\n typed.types.splice(i, 0, type);\n return\n }\n }\n }\n\n typed.types.push(type);\n };\n\n // add a conversion\n typed.addConversion = function (conversion) {\n if (!conversion\n || typeof conversion.from !== 'string'\n || typeof conversion.to !== 'string'\n || typeof conversion.convert !== 'function') {\n throw new TypeError('Object with properties {from: string, to: string, convert: function} expected');\n }\n\n typed.conversions.push(conversion);\n };\n\n return typed;\n }\n\n return create();\n}));\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Web3\"] = factory();\n\telse\n\t\troot[\"Web3\"] = factory();\n})(self, () => {\nreturn ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n})((function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n Object.defineProperty(this, 'listeners', {\n value: {},\n writable: true,\n configurable: true\n });\n }\n\n _createClass(Emitter, [{\n key: \"addEventListener\",\n value: function addEventListener(type, callback, options) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push({\n callback: callback,\n options: options\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i].callback === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[event.type];\n var stackToCall = stack.slice();\n\n for (var i = 0, l = stackToCall.length; i < l; i++) {\n var listener = stackToCall[i];\n\n try {\n listener.callback.call(this, event);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n\n if (listener.options && listener.options.once) {\n this.removeEventListener(event.type, listener.callback);\n }\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return Emitter;\n }();\n\n var AbortSignal = /*#__PURE__*/function (_Emitter) {\n _inherits(AbortSignal, _Emitter);\n\n var _super = _createSuper(AbortSignal);\n\n function AbortSignal() {\n var _this;\n\n _classCallCheck(this, AbortSignal);\n\n _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n // the parent constructor directly instead as a workaround. For general details, see babel bug:\n // https://github.com/babel/babel/issues/3041\n // This hack was added as a fix for the issue described here:\n // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n\n if (!_this.listeners) {\n Emitter.call(_assertThisInitialized(_this));\n } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'aborted', {\n value: false,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'onabort', {\n value: null,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'reason', {\n value: undefined,\n writable: true,\n configurable: true\n });\n return _this;\n }\n\n _createClass(AbortSignal, [{\n key: \"toString\",\n value: function toString() {\n return '[object AbortSignal]';\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (event.type === 'abort') {\n this.aborted = true;\n\n if (typeof this.onabort === 'function') {\n this.onabort.call(this, event);\n }\n }\n\n _get(_getPrototypeOf(AbortSignal.prototype), \"dispatchEvent\", this).call(this, event);\n }\n }]);\n\n return AbortSignal;\n }(Emitter);\n var AbortController = /*#__PURE__*/function () {\n function AbortController() {\n _classCallCheck(this, AbortController);\n\n // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n Object.defineProperty(this, 'signal', {\n value: new AbortSignal(),\n writable: true,\n configurable: true\n });\n }\n\n _createClass(AbortController, [{\n key: \"abort\",\n value: function abort(reason) {\n var event;\n\n try {\n event = new Event('abort');\n } catch (e) {\n if (typeof document !== 'undefined') {\n if (!document.createEvent) {\n // For Internet Explorer 8:\n event = document.createEventObject();\n event.type = 'abort';\n } else {\n // For Internet Explorer 11:\n event = document.createEvent('Event');\n event.initEvent('abort', false, false);\n }\n } else {\n // Fallback where document isn't available:\n event = {\n type: 'abort',\n bubbles: false,\n cancelable: false\n };\n }\n }\n\n var signalReason = reason;\n\n if (signalReason === undefined) {\n if (typeof document === 'undefined') {\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n } else {\n try {\n signalReason = new DOMException('signal is aborted without reason');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n }\n }\n }\n\n this.signal.reason = signalReason;\n this.signal.dispatchEvent(event);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object AbortController]';\n }\n }]);\n\n return AbortController;\n }();\n\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n // These are necessary to make sure that we get correct output for:\n // Object.prototype.toString.call(new AbortController())\n AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n }\n\n function polyfillNeeded(self) {\n if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n return true;\n } // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // so the below feature detection needs the !self.AbortController part.\n // The Request.prototype check is also needed because Safari versions 11.1.2\n // up to and including 12.1.x has a window.AbortController present but still\n // does NOT correctly implement abortable fetch:\n // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n\n\n return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n }\n\n /**\n * Note: the \"fetch.Request\" default value is available for fetch imported from\n * the \"node-fetch\" package and not in browsers. This is OK since browsers\n * will be importing umd-polyfill.js from that path \"self\" is passed the\n * decorator so the default value will not be used (because browsers that define\n * fetch also has Request). One quirky setup where self.fetch exists but\n * self.Request does not is when the \"unfetch\" minimal fetch polyfill is used\n * on top of IE11; for this case the browser will try to use the fetch.Request\n * default value which in turn will be undefined but then then \"if (Request)\"\n * will ensure that you get a patched fetch but still no Request (as expected).\n * @param {fetch, Request = fetch.Request}\n * @returns {fetch: abortableFetch, Request: AbortableRequest}\n */\n\n function abortableFetchDecorator(patchTargets) {\n if ('function' === typeof patchTargets) {\n patchTargets = {\n fetch: patchTargets\n };\n }\n\n var _patchTargets = patchTargets,\n fetch = _patchTargets.fetch,\n _patchTargets$Request = _patchTargets.Request,\n NativeRequest = _patchTargets$Request === void 0 ? fetch.Request : _patchTargets$Request,\n NativeAbortController = _patchTargets.AbortController,\n _patchTargets$__FORCE = _patchTargets.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,\n __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL = _patchTargets$__FORCE === void 0 ? false : _patchTargets$__FORCE;\n\n if (!polyfillNeeded({\n fetch: fetch,\n Request: NativeRequest,\n AbortController: NativeAbortController,\n __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL: __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL\n })) {\n return {\n fetch: fetch,\n Request: Request\n };\n }\n\n var Request = NativeRequest; // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // hence we only patch it if it's available. Also we don't patch it if signal\n // is already available on the Request prototype because in this case support\n // is present and the patching below can cause a crash since it assigns to\n // request.signal which is technically a read-only property. This latter error\n // happens when you run the main5.js node-fetch example in the repo\n // \"abortcontroller-polyfill-examples\". The exact error is:\n // request.signal = init.signal;\n // ^\n // TypeError: Cannot set property signal of # which has only a getter\n\n if (Request && !Request.prototype.hasOwnProperty('signal') || __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n Request = function Request(input, init) {\n var signal;\n\n if (init && init.signal) {\n signal = init.signal; // Never pass init.signal to the native Request implementation when the polyfill has\n // been installed because if we're running on top of a browser with a\n // working native AbortController (i.e. the polyfill was installed due to\n // __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL being set), then passing our\n // fake AbortSignal to the native fetch will trigger:\n // TypeError: Failed to construct 'Request': member signal is not of type AbortSignal.\n\n delete init.signal;\n }\n\n var request = new NativeRequest(input, init);\n\n if (signal) {\n Object.defineProperty(request, 'signal', {\n writable: false,\n enumerable: false,\n configurable: true,\n value: signal\n });\n }\n\n return request;\n };\n\n Request.prototype = NativeRequest.prototype;\n }\n\n var realFetch = fetch;\n\n var abortableFetch = function abortableFetch(input, init) {\n var signal = Request && Request.prototype.isPrototypeOf(input) ? input.signal : init ? init.signal : undefined;\n\n if (signal) {\n var abortError;\n\n try {\n abortError = new DOMException('Aborted', 'AbortError');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n abortError = new Error('Aborted');\n abortError.name = 'AbortError';\n } // Return early if already aborted, thus avoiding making an HTTP request\n\n\n if (signal.aborted) {\n return Promise.reject(abortError);\n } // Turn an event into a promise, reject it once `abort` is dispatched\n\n\n var cancellation = new Promise(function (_, reject) {\n signal.addEventListener('abort', function () {\n return reject(abortError);\n }, {\n once: true\n });\n });\n\n if (init && init.signal) {\n // Never pass .signal to the native implementation when the polyfill has\n // been installed because if we're running on top of a browser with a\n // working native AbortController (i.e. the polyfill was installed due to\n // __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL being set), then passing our\n // fake AbortSignal to the native fetch will trigger:\n // TypeError: Failed to execute 'fetch' on 'Window': member signal is not of type AbortSignal.\n delete init.signal;\n } // Return the fastest promise (don't need to wait for request to finish)\n\n\n return Promise.race([cancellation, realFetch(input, init)]);\n }\n\n return realFetch(input, init);\n };\n\n return {\n fetch: abortableFetch,\n Request: Request\n };\n }\n\n (function (self) {\n\n if (!polyfillNeeded(self)) {\n return;\n }\n\n if (!self.fetch) {\n console.warn('fetch() is not available, cannot install abortcontroller-polyfill');\n return;\n }\n\n var _abortableFetch = abortableFetchDecorator(self),\n fetch = _abortableFetch.fetch,\n Request = _abortableFetch.Request;\n\n self.fetch = fetch;\n self.Request = Request;\n Object.defineProperty(self, 'AbortController', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: AbortController\n });\n Object.defineProperty(self, 'AbortSignal', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: AbortSignal\n });\n })(typeof self !== 'undefined' ? self : global);\n\n}));\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\n\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nvar RSA_PKCS1_PADDING = 1;\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong private key type'); }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) { pad.push(0xff); }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) { pad.push(hash[i]); }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }\n\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) { r = [0].concat(r); }\n if (s[0] & 0x80) { s = [0].concat(s); }\n\n var total = r.length + s.length + 4;\n var res = [\n 0x30, total, 0x02, r.length\n ];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return { k: k, v: v };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) { bits.ishrn(shift); }\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong public key type'); }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) { out = 1; }\n\n i = -1;\n while (++i < len) { out |= sig[i] ^ pad[i]; }\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }\n\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }\n if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n","'use strict';\n/* eslint camelcase: \"off\" */\n\nvar assert = require('assert');\n\nvar Zstream = require('pako/lib/zlib/zstream');\nvar zlib_deflate = require('pako/lib/zlib/deflate.js');\nvar zlib_inflate = require('pako/lib/zlib/inflate.js');\nvar constants = require('pako/lib/zlib/constants');\n\nfor (var key in constants) {\n exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n\n this.pending_close = false;\n\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n\n this.mode = exports.NONE;\n\n this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n\n this.write_in_progress = true;\n\n assert.equal(false, flush === undefined, 'must provide flush value');\n\n this.write_in_progress = true;\n\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n\n if (!async) {\n // sync version\n this._process();\n\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n process.nextTick(function () {\n self._process();\n self._after();\n });\n\n return this;\n};\n\nZlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n};\n\nZlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n\n return true;\n};\n\nZlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n\n this.flush = exports.Z_NO_FLUSH;\n\n this.err = exports.Z_OK;\n\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n\n this.strm = new Zstream();\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n\n this.dictionary = dictionary;\n\n this.write_in_progress = false;\n this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n};\n\nZlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n};\n\nexports.Zlib = Zlib;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar binding = require('./binding');\nvar util = require('util');\nvar assert = require('assert').ok;\nvar kMaxLength = require('buffer').kMaxLength;\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low. Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true, value: binding[bkey], writable: false\n });\n }\n}\n\n// translation table for return codes.\nvar codes = {\n Z_OK: binding.Z_OK,\n Z_STREAM_END: binding.Z_STREAM_END,\n Z_NEED_DICT: binding.Z_NEED_DICT,\n Z_ERRNO: binding.Z_ERRNO,\n Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding.Z_DATA_ERROR,\n Z_MEM_ERROR: binding.Z_MEM_ERROR,\n Z_BUF_ERROR: binding.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, 'codes', {\n enumerable: true, value: Object.freeze(codes), writable: false\n});\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n\n engine.on('error', onError);\n engine.on('end', onEnd);\n\n engine.end(buffer);\n flow();\n\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n\n function onEnd() {\n var buf;\n var err = null;\n\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n var flushFlag = engine._finishFlushFlag;\n\n return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n var _this = this;\n\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n Transform.call(this, opts);\n\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n\n this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n\n this._handle = new binding.Zlib(mode);\n\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n\n this.once('end', this.close);\n\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n process.nextTick(callback);\n }\n};\n\nZlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n\n var ws = this._writableState;\n\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding.Z_FULL_FLUSH;\n }\n\n if (ws.ended) {\n if (callback) process.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n};\n\nZlib.prototype.close = function (callback) {\n _close(this, callback);\n process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n if (callback) process.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n\n engine._handle.close();\n engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n }\n }\n\n this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n\n var self = this;\n\n var async = typeof cb === 'function';\n\n if (!async) {\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function (er) {\n error = er;\n });\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n }\n\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n\n if (self._hadError) return;\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n if (!async) return true;\n\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","'use strict'\nconst varint = require('varint')\nconst { Buffer } = require('buffer')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","'use strict'\n\nconst baseTable = require('./base-table.json')\nconst varintEncode = require('./util').varintEncode\n\n// map for codecName -> codeVarintBuffer\nconst varintTable = {}\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n varintTable[encodingName] = varintEncode(code)\n}\n\nmodule.exports = Object.freeze(varintTable)\n","'use strict'\n\nconst mh = require('multihashes')\nconst { Buffer } = require('buffer')\nvar CIDUtil = {\n /**\n * Test if the given input is a valid CID object.\n * Returns an error message if it is not.\n * Returns undefined if it is a valid CID.\n *\n * @param {any} other\n * @returns {string}\n */\n checkCIDComponents: function (other) {\n if (other == null) {\n return 'null values are not valid CIDs'\n }\n\n if (!(other.version === 0 || other.version === 1)) {\n return 'Invalid version, must be a number equal to 1 or 0'\n }\n\n if (typeof other.codec !== 'string') {\n return 'codec must be string'\n }\n\n if (other.version === 0) {\n if (other.codec !== 'dag-pb') {\n return \"codec must be 'dag-pb' for CIDv0\"\n }\n if (other.multibaseName !== 'base58btc') {\n return \"multibaseName must be 'base58btc' for CIDv0\"\n }\n }\n\n if (!Buffer.isBuffer(other.multihash)) {\n return 'multihash must be a Buffer'\n }\n\n try {\n mh.validate(other.multihash)\n } catch (err) {\n let errorMsg = err.message\n if (!errorMsg) { // Just in case mh.validate() throws an error with empty error message\n errorMsg = 'Multihash validation failed'\n }\n return errorMsg\n }\n }\n}\n\nmodule.exports = CIDUtil\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst mh = require('multihashes')\nconst multibase = require('multibase')\nconst multicodec = require('multicodec')\nconst codecs = require('multicodec/src/base-table.json')\nconst CIDUtil = require('./cid-util')\nconst withIs = require('class-is')\n\n/**\n * @typedef {Object} SerializedCID\n * @param {string} codec\n * @param {number} version\n * @param {Buffer} multihash\n */\n\n/**\n * Test if the given input is a CID.\n * @function isCID\n * @memberof CID\n * @static\n * @param {any} other\n * @returns {bool}\n */\n\n/**\n * Class representing a CID ``\n * , as defined in [ipld/cid](https://github.com/multiformats/cid).\n * @class CID\n */\nclass CID {\n /**\n * Create a new CID.\n *\n * The algorithm for argument input is roughly:\n * ```\n * if (cid)\n * -> create a copy\n * else if (str)\n * if (1st char is on multibase table) -> CID String\n * else -> bs58 encoded multihash\n * else if (Buffer)\n * if (1st byte is 0 or 1) -> CID\n * else -> multihash\n * else if (Number)\n * -> construct CID by parts\n * ```\n *\n * @param {string|Buffer|CID} version\n * @param {string} [codec]\n * @param {Buffer} [multihash]\n * @param {string} [multibaseName]\n *\n * @example\n * new CID(, , , )\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n */\n constructor (version, codec, multihash, multibaseName) {\n if (_CID.isCID(version)) {\n // version is an exising CID instance\n const cid = version\n this.version = cid.version\n this.codec = cid.codec\n this.multihash = Buffer.from(cid.multihash)\n // Default guard for when a CID < 0.7 is passed with no multibaseName\n this.multibaseName = cid.multibaseName || (cid.version === 0 ? 'base58btc' : 'base32')\n return\n }\n\n if (typeof version === 'string') {\n // e.g. 'base32' or false\n const baseName = multibase.isEncoded(version)\n if (baseName) {\n // version is a CID String encoded with multibase, so v1\n const cid = multibase.decode(version)\n this.version = parseInt(cid.slice(0, 1).toString('hex'), 16)\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = baseName\n } else {\n // version is a base58btc string multihash, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = mh.fromB58String(version)\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n Object.defineProperty(this, 'string', { value: version })\n return\n }\n\n if (Buffer.isBuffer(version)) {\n const firstByte = version.slice(0, 1)\n const v = parseInt(firstByte.toString('hex'), 16)\n if (v === 1) {\n // version is a CID buffer\n const cid = version\n this.version = v\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = 'base32'\n } else {\n // version is a raw multihash buffer, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = version\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n return\n }\n\n // otherwise, assemble the CID from the parameters\n\n /**\n * @type {number}\n */\n this.version = version\n\n /**\n * @type {string}\n */\n this.codec = codec\n\n /**\n * @type {Buffer}\n */\n this.multihash = multihash\n\n /**\n * @type {string}\n */\n this.multibaseName = multibaseName || (version === 0 ? 'base58btc' : 'base32')\n\n CID.validateCID(this)\n }\n\n /**\n * The CID as a `Buffer`\n *\n * @return {Buffer}\n * @readonly\n *\n * @memberOf CID\n */\n get buffer () {\n let buffer = this._buffer\n\n if (!buffer) {\n if (this.version === 0) {\n buffer = this.multihash\n } else if (this.version === 1) {\n buffer = Buffer.concat([\n Buffer.from('01', 'hex'),\n multicodec.getCodeVarint(this.codec),\n this.multihash\n ])\n } else {\n throw new Error('unsupported version')\n }\n\n // Cache this buffer so it doesn't have to be recreated\n Object.defineProperty(this, '_buffer', { value: buffer })\n }\n\n return buffer\n }\n\n /**\n * Get the prefix of the CID.\n *\n * @returns {Buffer}\n * @readonly\n */\n get prefix () {\n return Buffer.concat([\n Buffer.from(`0${this.version}`, 'hex'),\n multicodec.getCodeVarint(this.codec),\n mh.prefix(this.multihash)\n ])\n }\n\n /**\n * Convert to a CID of version `0`.\n *\n * @returns {CID}\n */\n toV0 () {\n if (this.codec !== 'dag-pb') {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n const { name, length } = mh.decode(this.multihash)\n\n if (name !== 'sha2-256') {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n if (length !== 32) {\n throw new Error('Cannot convert non 32 byte multihash CID to CIDv0')\n }\n\n return new _CID(0, this.codec, this.multihash)\n }\n\n /**\n * Convert to a CID of version `1`.\n *\n * @returns {CID}\n */\n toV1 () {\n return new _CID(1, this.codec, this.multihash)\n }\n\n /**\n * Encode the CID into a string.\n *\n * @param {string} [base=this.multibaseName] - Base encoding to use.\n * @returns {string}\n */\n toBaseEncodedString (base = this.multibaseName) {\n if (this.string && base === this.multibaseName) {\n return this.string\n }\n let str = null\n if (this.version === 0) {\n if (base !== 'base58btc') {\n throw new Error('not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()')\n }\n str = mh.toB58String(this.multihash)\n } else if (this.version === 1) {\n str = multibase.encode(base, this.buffer).toString()\n } else {\n throw new Error('unsupported version')\n }\n if (base === this.multibaseName) {\n // cache the string value\n Object.defineProperty(this, 'string', { value: str })\n }\n return str\n }\n\n /**\n * CID(QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n)\n *\n * @returns {String}\n */\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return 'CID(' + this.toString() + ')'\n }\n\n toString (base) {\n return this.toBaseEncodedString(base)\n }\n\n /**\n * Serialize to a plain object.\n *\n * @returns {SerializedCID}\n */\n toJSON () {\n return {\n codec: this.codec,\n version: this.version,\n hash: this.multihash\n }\n }\n\n /**\n * Compare equality with another CID.\n *\n * @param {CID} other\n * @returns {bool}\n */\n equals (other) {\n return this.codec === other.codec &&\n this.version === other.version &&\n this.multihash.equals(other.multihash)\n }\n\n /**\n * Test if the given input is a valid CID object.\n * Throws if it is not.\n *\n * @param {any} other\n * @returns {void}\n */\n static validateCID (other) {\n const errorMsg = CIDUtil.checkCIDComponents(other)\n if (errorMsg) {\n throw new Error(errorMsg)\n }\n }\n}\n\nconst _CID = withIs(CID, {\n className: 'CID',\n symbolName: '@ipld/js-cid/CID'\n})\n\n_CID.codecs = codecs\n\nmodule.exports = _CID\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict';\n\nfunction withIs(Class, { className, symbolName }) {\n const symbol = Symbol.for(symbolName);\n\n const ClassIsWrapper = {\n // The code below assigns the class wrapper to an object to trick\n // JavaScript engines to show the name of the extended class when\n // logging an instances.\n // We are assigning an anonymous class (class wrapper) to the object\n // with key `className` to keep the correct name.\n // If this is not supported it falls back to logging `ClassIsWrapper`.\n [className]: class extends Class {\n constructor(...args) {\n super(...args);\n Object.defineProperty(this, symbol, { value: true });\n }\n\n get [Symbol.toStringTag]() {\n return className;\n }\n },\n }[className];\n\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\n\n return ClassIsWrapper;\n}\n\nfunction withIsProto(Class, { className, symbolName, withoutNew }) {\n const symbol = Symbol.for(symbolName);\n\n /* eslint-disable object-shorthand */\n const ClassIsWrapper = {\n [className]: function (...args) {\n if (withoutNew && !(this instanceof ClassIsWrapper)) {\n return new ClassIsWrapper(...args);\n }\n\n const _this = Class.call(this, ...args) || this;\n\n if (_this && !_this[symbol]) {\n Object.defineProperty(_this, symbol, { value: true });\n }\n\n return _this;\n },\n }[className];\n /* eslint-enable object-shorthand */\n\n ClassIsWrapper.prototype = Object.create(Class.prototype);\n ClassIsWrapper.prototype.constructor = ClassIsWrapper;\n\n Object.defineProperty(ClassIsWrapper.prototype, Symbol.toStringTag, {\n get() {\n return className;\n },\n });\n\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\n\n return ClassIsWrapper;\n}\n\nmodule.exports = withIs;\nmodule.exports.proto = withIsProto;\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst CID = require('cids');\r\n\r\n/**\r\n * Take any ipfsHash and convert it to a CID v1 encoded in base32.\r\n * @param {string} ipfsHash a regular ipfs hash either a cid v0 or v1 (v1 will remain unchanged)\r\n * @return {string} the resulting ipfs hash as a cid v1\r\n */\r\nconst cidV0ToV1Base32 = (ipfsHash) => {\r\n\tlet cid = new CID(ipfsHash);\r\n\tif (cid.version === 0) {\r\n\t\tcid = cid.toV1();\r\n\t}\r\n\treturn cid.toString('base32');\r\n}\r\n\r\nexports.cidV0ToV1Base32 = cidV0ToV1Base32;\r\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst multiC = require('multicodec');\r\n\r\nconst { hexStringToBuffer, profiles } = require('./profiles');\r\nconst { cidV0ToV1Base32 } = require('./helpers');\r\n\r\nmodule.exports = {\r\n\r\n\t//export some helpers functions\r\n\thelpers: {\r\n\t\tcidV0ToV1Base32,\r\n\t},\r\n\r\n\t/**\r\n\t* Decode a Content Hash.\r\n\t* @param {string} hash an hex string containing a content hash\r\n\t* @return {string} the decoded content\r\n\t*/\r\n\tdecode: function (contentHash) {\r\n\t\tconst buffer = hexStringToBuffer(contentHash);\r\n\t\tconst codec = multiC.getCodec(buffer);\r\n\t\tconst value = multiC.rmPrefix(buffer);\r\n\t\tlet profile = profiles[codec];\r\n\t\tif (!profile) profile = profiles['default'];\r\n\t\treturn profile.decode(value);\r\n\t},\r\n\r\n\t/**\r\n\t* Encode an IPFS address into a content hash\r\n\t* @param {string} ipfsHash string containing an IPFS address\r\n\t* @return {string} the resulting content hash\r\n\t*/\r\n\tfromIpfs: function (ipfsHash) {\r\n\t\treturn this.encode('ipfs-ns', ipfsHash);\r\n\t},\r\n\r\n\t/**\r\n\t* Encode a Swarm address into a content hash\r\n\t* @param {string} swarmHash string containing a Swarm address\r\n\t* @return {string} the resulting content hash\r\n\t*/\r\n\tfromSwarm: function (swarmHash) {\r\n\t\treturn this.encode('swarm-ns', swarmHash);\r\n\t},\r\n\r\n\t/**\r\n\t* General purpose encoding function\r\n * @param {string} codec \r\n * @param {string} value \r\n */\r\n\tencode: function (codec, value) {\r\n\t\tlet profile = profiles[codec];\r\n\t\tif (!profile) profile = profiles['default'];\r\n\t\tconst encodedValue = profile.encode(value);\r\n\t\treturn multiC.addPrefix(codec, encodedValue).toString('hex');\r\n\t},\r\n\r\n\t/**\r\n\t* Extract the codec of a content hash\r\n\t* @param {string} hash hex string containing a content hash\r\n\t* @return {string} the extracted codec\r\n\t*/\r\n\tgetCodec: function (hash) {\r\n\t\tlet buffer = hexStringToBuffer(hash);\r\n\t\treturn multiC.getCodec(buffer);\r\n\t},\r\n}\r\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst CID = require('cids');\r\nconst multiH = require('multihashes');\r\n\r\n/**\r\n * Convert an hexadecimal string to a Buffer, the string can start with or without '0x'\r\n * @param {string} hex an hexadecimal value\r\n * @return {Buffer} the resulting Buffer\r\n */\r\nconst hexStringToBuffer = (hex) => {\r\n\tlet prefix = hex.slice(0, 2);\r\n\tlet value = hex.slice(2);\r\n\tlet res = '';\r\n\tif (prefix === '0x') res = value;\r\n\telse res = hex;\r\n\treturn multiH.fromHexString(res);\r\n}\r\n\r\n/**\r\n* list of known encoding,\r\n* encoding should be a function that takes a `string` input,\r\n* and return a `Buffer` result\r\n*/\r\nconst encodes = {\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n swarm: (value) => {\r\n const multihash = multiH.encode(hexStringToBuffer(value), 'keccak-256');\r\n\t\treturn new CID(1, 'swarm-manifest', multihash).buffer;\r\n },\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n ipfs: (value) => {\r\n const multihash = multiH.fromB58String(value);\r\n return new CID(1, 'dag-pb', multihash).buffer;\r\n },\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n utf8: (value) => {\r\n return Buffer.from(value, 'utf8');\r\n },\r\n};\r\n\r\n/** \r\n* list of known decoding,\r\n* decoding should be a function that takes a `Buffer` input,\r\n* and return a `string` result\r\n*/\r\nconst decodes = {\r\n /**\r\n * @param {Buffer} value \r\n */\r\n hexMultiHash: (value) => {\r\n const cid = new CID(value);\r\n return multiH.decode(cid.multihash).digest.toString('hex');\r\n },\r\n /**\r\n * @param {Buffer} value \r\n */\r\n b58MultiHash: (value) => {\r\n const cid = new CID(value);\r\n return multiH.toB58String(cid.multihash);\r\n },\r\n /**\r\n * @param {Buffer} value \r\n */\r\n utf8: (value) => {\r\n return value.toString('utf8');\r\n },\r\n};\r\n\r\n/**\r\n* list of known encoding/decoding for a given codec,\r\n* `encode` should be chosen among the `encodes` functions\r\n* `decode` should be chosen among the `decodes` functions\r\n*/\r\nconst profiles = {\r\n 'swarm-ns': {\r\n encode: encodes.swarm,\r\n decode: decodes.hexMultiHash,\r\n },\r\n 'ipfs-ns': {\r\n encode: encodes.ipfs,\r\n decode: decodes.b58MultiHash,\r\n },\r\n 'ipns-ns': {\r\n encode: encodes.ipfs,\r\n decode: decodes.b58MultiHash,\r\n },\r\n 'default': {\r\n encode: encodes.utf8,\r\n decode: decodes.utf8,\r\n },\r\n};\r\n\r\nexports.hexStringToBuffer = hexStringToBuffer;\r\nexports.profiles = profiles;","/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32;\n(function (factory) {\n\t/*jshint ignore:start */\n\t/*eslint-disable */\n\tif(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n\t\tif('object' === typeof exports) {\n\t\t\tfactory(exports);\n\t\t} else if ('function' === typeof define && define.amd) {\n\t\t\tdefine(function () {\n\t\t\t\tvar module = {};\n\t\t\t\tfactory(module);\n\t\t\t\treturn module;\n\t\t\t});\n\t\t} else {\n\t\t\tfactory(CRC32 = {});\n\t\t}\n\t} else {\n\t\tfactory(CRC32 = {});\n\t}\n\t/*eslint-enable */\n\t/*jshint ignore:end */\n}(function(CRC32) {\nCRC32.version = '1.2.2';\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B, seed) {\n\tvar C = seed ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\n// $FlowIgnore\nCRC32.bstr = crc32_bstr;\n// $FlowIgnore\nCRC32.buf = crc32_buf;\n// $FlowIgnore\nCRC32.str = crc32_str;\n}));\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then = void 0;\n try {\n then = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","var sha3 = require('js-sha3').keccak_256\nvar uts46 = require('idna-uts46-hx')\n\nfunction namehash (inputName) {\n // Reject empty names:\n var node = ''\n for (var i = 0; i < 32; i++) {\n node += '00'\n }\n\n name = normalize(inputName)\n\n if (name) {\n var labels = name.split('.')\n\n for(var i = labels.length - 1; i >= 0; i--) {\n var labelSha = sha3(labels[i])\n node = sha3(new Buffer(node + labelSha, 'hex'))\n }\n }\n\n return '0x' + node\n}\n\nfunction normalize(name) {\n return name ? uts46.toUnicode(name, {useStd3ASCII: true, transitional: false}) : name\n}\n\nexports.hash = namehash\nexports.normalize = normalize\n","const Bytes = require(\"./bytes\");\nconst Nat = require(\"./nat\");\nconst elliptic = require(\"elliptic\");\nconst rlp = require(\"./rlp\");\nconst secp256k1 = new elliptic.ec(\"secp256k1\"); // eslint-disable-line\nconst { keccak256, keccak256s } = require(\"./hash\");\n\nconst create = entropy => {\n const innerHex = keccak256(Bytes.concat(Bytes.random(32), entropy || Bytes.random(32)));\n const middleHex = Bytes.concat(Bytes.concat(Bytes.random(32), innerHex), Bytes.random(32));\n const outerHex = keccak256(middleHex);\n return fromPrivate(outerHex);\n};\n\nconst toChecksum = address => {\n const addressHash = keccak256s(address.slice(2));\n let checksumAddress = \"0x\";\n for (let i = 0; i < 40; i++) checksumAddress += parseInt(addressHash[i + 2], 16) > 7 ? address[i + 2].toUpperCase() : address[i + 2];\n return checksumAddress;\n};\n\nconst fromPrivate = privateKey => {\n const buffer = new Buffer(privateKey.slice(2), \"hex\");\n const ecKey = secp256k1.keyFromPrivate(buffer);\n const publicKey = \"0x\" + ecKey.getPublic(false, 'hex').slice(2);\n const publicHash = keccak256(publicKey);\n const address = toChecksum(\"0x\" + publicHash.slice(-40));\n return {\n address: address,\n privateKey: privateKey\n };\n};\n\nconst encodeSignature = ([v, r, s]) => Bytes.flatten([r, s, v]);\n\nconst decodeSignature = hex => [Bytes.slice(64, Bytes.length(hex), hex), Bytes.slice(0, 32, hex), Bytes.slice(32, 64, hex)];\n\nconst makeSigner = addToV => (hash, privateKey) => {\n const signature = secp256k1.keyFromPrivate(new Buffer(privateKey.slice(2), \"hex\")).sign(new Buffer(hash.slice(2), \"hex\"), { canonical: true });\n return encodeSignature([Nat.fromString(Bytes.fromNumber(addToV + signature.recoveryParam)), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.r.toString(16))), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.s.toString(16)))]);\n};\n\nconst sign = makeSigner(27); // v=27|28 instead of 0|1...\n\nconst recover = (hash, signature) => {\n const vals = decodeSignature(signature);\n const vrs = { v: Bytes.toNumber(vals[0]), r: vals[1].slice(2), s: vals[2].slice(2) };\n const ecPublicKey = secp256k1.recoverPubKey(new Buffer(hash.slice(2), \"hex\"), vrs, vrs.v < 2 ? vrs.v : 1 - vrs.v % 2); // because odd vals mean v=0... sadly that means v=0 means v=1... I hate that\n const publicKey = \"0x\" + ecPublicKey.encode(\"hex\", false).slice(2);\n const publicHash = keccak256(publicKey);\n const address = toChecksum(\"0x\" + publicHash.slice(-40));\n return address;\n};\n\nmodule.exports = {\n create,\n toChecksum,\n fromPrivate,\n sign,\n makeSigner,\n recover,\n encodeSignature,\n decodeSignature\n};","const generate = (num, fn) => {\n let a = [];\n for (var i = 0; i < num; ++i) a.push(fn(i));\n return a;\n};\n\nconst replicate = (num, val) => generate(num, () => val);\n\nconst concat = (a, b) => a.concat(b);\n\nconst flatten = a => {\n let r = [];\n for (let j = 0, J = a.length; j < J; ++j) for (let i = 0, I = a[j].length; i < I; ++i) r.push(a[j][i]);\n return r;\n};\n\nconst chunksOf = (n, a) => {\n let b = [];\n for (let i = 0, l = a.length; i < l; i += n) b.push(a.slice(i, i + n));\n return b;\n};\n\nmodule.exports = {\n generate,\n replicate,\n concat,\n flatten,\n chunksOf\n};","const A = require(\"./array.js\");\n\nconst at = (bytes, index) => parseInt(bytes.slice(index * 2 + 2, index * 2 + 4), 16);\n\nconst random = bytes => {\n let rnd;\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.getRandomValues) rnd = window.crypto.getRandomValues(new Uint8Array(bytes));else if (typeof require !== \"undefined\") rnd = require(\"c\" + \"rypto\").randomBytes(bytes);else throw \"Safe random numbers not available.\";\n let hex = \"0x\";\n for (let i = 0; i < bytes; ++i) hex += (\"00\" + rnd[i].toString(16)).slice(-2);\n return hex;\n};\n\nconst length = a => (a.length - 2) / 2;\n\nconst flatten = a => \"0x\" + a.reduce((r, s) => r + s.slice(2), \"\");\n\nconst slice = (i, j, bs) => \"0x\" + bs.slice(i * 2 + 2, j * 2 + 2);\n\nconst reverse = hex => {\n let rev = \"0x\";\n for (let i = 0, l = length(hex); i < l; ++i) {\n rev += hex.slice((l - i) * 2, (l - i + 1) * 2);\n }\n return rev;\n};\n\nconst pad = (l, hex) => hex.length === l * 2 + 2 ? hex : pad(l, \"0x\" + \"0\" + hex.slice(2));\n\nconst padRight = (l, hex) => hex.length === l * 2 + 2 ? hex : padRight(l, hex + \"0\");\n\nconst toArray = hex => {\n let arr = [];\n for (let i = 2, l = hex.length; i < l; i += 2) arr.push(parseInt(hex.slice(i, i + 2), 16));\n return arr;\n};\n\nconst fromArray = arr => {\n let hex = \"0x\";\n for (let i = 0, l = arr.length; i < l; ++i) {\n let b = arr[i];\n hex += (b < 16 ? \"0\" : \"\") + b.toString(16);\n }\n return hex;\n};\n\nconst toUint8Array = hex => new Uint8Array(toArray(hex));\n\nconst fromUint8Array = arr => fromArray([].slice.call(arr, 0));\n\nconst fromNumber = num => {\n let hex = num.toString(16);\n return hex.length % 2 === 0 ? \"0x\" + hex : \"0x0\" + hex;\n};\n\nconst toNumber = hex => parseInt(hex.slice(2), 16);\n\nconst concat = (a, b) => a.concat(b.slice(2));\n\nconst fromNat = bn => bn === \"0x0\" ? \"0x\" : bn.length % 2 === 0 ? bn : \"0x0\" + bn.slice(2);\n\nconst toNat = bn => bn[2] === \"0\" ? \"0x\" + bn.slice(3) : bn;\n\nconst fromAscii = ascii => {\n let hex = \"0x\";\n for (let i = 0; i < ascii.length; ++i) hex += (\"00\" + ascii.charCodeAt(i).toString(16)).slice(-2);\n return hex;\n};\n\nconst toAscii = hex => {\n let ascii = \"\";\n for (let i = 2; i < hex.length; i += 2) ascii += String.fromCharCode(parseInt(hex.slice(i, i + 2), 16));\n return ascii;\n};\n\n// From https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330\nconst fromString = s => {\n const makeByte = uint8 => {\n const b = uint8.toString(16);\n return b.length < 2 ? \"0\" + b : b;\n };\n let bytes = \"0x\";\n for (let ci = 0; ci != s.length; ci++) {\n let c = s.charCodeAt(ci);\n if (c < 128) {\n bytes += makeByte(c);\n continue;\n }\n if (c < 2048) {\n bytes += makeByte(c >> 6 | 192);\n } else {\n if (c > 0xd7ff && c < 0xdc00) {\n if (++ci == s.length) return null;\n let c2 = s.charCodeAt(ci);\n if (c2 < 0xdc00 || c2 > 0xdfff) return null;\n c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n bytes += makeByte(c >> 18 | 240);\n bytes += makeByte(c >> 12 & 63 | 128);\n } else {\n // c <= 0xffff\n bytes += makeByte(c >> 12 | 224);\n }\n bytes += makeByte(c >> 6 & 63 | 128);\n }\n bytes += makeByte(c & 63 | 128);\n }\n return bytes;\n};\n\nconst toString = bytes => {\n let s = '';\n let i = 0;\n let l = length(bytes);\n while (i < l) {\n let c = at(bytes, i++);\n if (c > 127) {\n if (c > 191 && c < 224) {\n if (i >= l) return null;\n c = (c & 31) << 6 | at(bytes, i) & 63;\n } else if (c > 223 && c < 240) {\n if (i + 1 >= l) return null;\n c = (c & 15) << 12 | (at(bytes, i) & 63) << 6 | at(bytes, ++i) & 63;\n } else if (c > 239 && c < 248) {\n if (i + 2 >= l) return null;\n c = (c & 7) << 18 | (at(bytes, i) & 63) << 12 | (at(bytes, ++i) & 63) << 6 | at(bytes, ++i) & 63;\n } else return null;\n ++i;\n }\n if (c <= 0xffff) s += String.fromCharCode(c);else if (c <= 0x10ffff) {\n c -= 0x10000;\n s += String.fromCharCode(c >> 10 | 0xd800);\n s += String.fromCharCode(c & 0x3FF | 0xdc00);\n } else return null;\n }\n return s;\n};\n\nmodule.exports = {\n random,\n length,\n concat,\n flatten,\n slice,\n reverse,\n pad,\n padRight,\n fromAscii,\n toAscii,\n fromString,\n toString,\n fromNumber,\n toNumber,\n fromNat,\n toNat,\n fromArray,\n toArray,\n fromUint8Array,\n toUint8Array\n};","// This was ported from https://github.com/emn178/js-sha3, with some minor\n// modifications and pruning. It is licensed under MIT:\n//\n// Copyright 2015-2016 Chen, Yi-Cyuan\n// \n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n// \n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst HEX_CHARS = '0123456789abcdef'.split('');\nconst KECCAK_PADDING = [1, 256, 65536, 16777216];\nconst SHIFT = [0, 8, 16, 24];\nconst RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n\nconst Keccak = bits => ({\n blocks: [],\n reset: true,\n block: 0,\n start: 0,\n blockCount: 1600 - (bits << 1) >> 5,\n outputBlocks: bits >> 5,\n s: (s => [].concat(s, s, s, s, s))([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n});\n\nconst update = (state, message) => {\n var length = message.length,\n blocks = state.blocks,\n byteCount = state.blockCount << 2,\n blockCount = state.blockCount,\n outputBlocks = state.outputBlocks,\n s = state.s,\n index = 0,\n i,\n code;\n\n // update\n while (index < length) {\n if (state.reset) {\n state.reset = false;\n blocks[0] = state.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (typeof message !== \"string\") {\n for (i = state.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = state.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n state.lastByteIndex = i;\n if (i >= byteCount) {\n state.start = i - byteCount;\n state.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n state.reset = true;\n } else {\n state.start = i;\n }\n }\n\n // finalize\n i = state.lastByteIndex;\n blocks[i >> 2] |= KECCAK_PADDING[i & 3];\n if (state.lastByteIndex === byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n\n // toString\n var hex = '',\n i = 0,\n j = 0,\n block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[block >> 4 & 0x0F] + HEX_CHARS[block & 0x0F] + HEX_CHARS[block >> 12 & 0x0F] + HEX_CHARS[block >> 8 & 0x0F] + HEX_CHARS[block >> 20 & 0x0F] + HEX_CHARS[block >> 16 & 0x0F] + HEX_CHARS[block >> 28 & 0x0F] + HEX_CHARS[block >> 24 & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n return \"0x\" + hex;\n};\n\nconst f = s => {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ (c2 << 1 | c3 >>> 31);\n l = c9 ^ (c3 << 1 | c2 >>> 31);\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ (c4 << 1 | c5 >>> 31);\n l = c1 ^ (c5 << 1 | c4 >>> 31);\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ (c6 << 1 | c7 >>> 31);\n l = c3 ^ (c7 << 1 | c6 >>> 31);\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ (c8 << 1 | c9 >>> 31);\n l = c5 ^ (c9 << 1 | c8 >>> 31);\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ (c0 << 1 | c1 >>> 31);\n l = c7 ^ (c1 << 1 | c0 >>> 31);\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = s[11] << 4 | s[10] >>> 28;\n b33 = s[10] << 4 | s[11] >>> 28;\n b14 = s[20] << 3 | s[21] >>> 29;\n b15 = s[21] << 3 | s[20] >>> 29;\n b46 = s[31] << 9 | s[30] >>> 23;\n b47 = s[30] << 9 | s[31] >>> 23;\n b28 = s[40] << 18 | s[41] >>> 14;\n b29 = s[41] << 18 | s[40] >>> 14;\n b20 = s[2] << 1 | s[3] >>> 31;\n b21 = s[3] << 1 | s[2] >>> 31;\n b2 = s[13] << 12 | s[12] >>> 20;\n b3 = s[12] << 12 | s[13] >>> 20;\n b34 = s[22] << 10 | s[23] >>> 22;\n b35 = s[23] << 10 | s[22] >>> 22;\n b16 = s[33] << 13 | s[32] >>> 19;\n b17 = s[32] << 13 | s[33] >>> 19;\n b48 = s[42] << 2 | s[43] >>> 30;\n b49 = s[43] << 2 | s[42] >>> 30;\n b40 = s[5] << 30 | s[4] >>> 2;\n b41 = s[4] << 30 | s[5] >>> 2;\n b22 = s[14] << 6 | s[15] >>> 26;\n b23 = s[15] << 6 | s[14] >>> 26;\n b4 = s[25] << 11 | s[24] >>> 21;\n b5 = s[24] << 11 | s[25] >>> 21;\n b36 = s[34] << 15 | s[35] >>> 17;\n b37 = s[35] << 15 | s[34] >>> 17;\n b18 = s[45] << 29 | s[44] >>> 3;\n b19 = s[44] << 29 | s[45] >>> 3;\n b10 = s[6] << 28 | s[7] >>> 4;\n b11 = s[7] << 28 | s[6] >>> 4;\n b42 = s[17] << 23 | s[16] >>> 9;\n b43 = s[16] << 23 | s[17] >>> 9;\n b24 = s[26] << 25 | s[27] >>> 7;\n b25 = s[27] << 25 | s[26] >>> 7;\n b6 = s[36] << 21 | s[37] >>> 11;\n b7 = s[37] << 21 | s[36] >>> 11;\n b38 = s[47] << 24 | s[46] >>> 8;\n b39 = s[46] << 24 | s[47] >>> 8;\n b30 = s[8] << 27 | s[9] >>> 5;\n b31 = s[9] << 27 | s[8] >>> 5;\n b12 = s[18] << 20 | s[19] >>> 12;\n b13 = s[19] << 20 | s[18] >>> 12;\n b44 = s[29] << 7 | s[28] >>> 25;\n b45 = s[28] << 7 | s[29] >>> 25;\n b26 = s[38] << 8 | s[39] >>> 24;\n b27 = s[39] << 8 | s[38] >>> 24;\n b8 = s[48] << 14 | s[49] >>> 18;\n b9 = s[49] << 14 | s[48] >>> 18;\n\n s[0] = b0 ^ ~b2 & b4;\n s[1] = b1 ^ ~b3 & b5;\n s[10] = b10 ^ ~b12 & b14;\n s[11] = b11 ^ ~b13 & b15;\n s[20] = b20 ^ ~b22 & b24;\n s[21] = b21 ^ ~b23 & b25;\n s[30] = b30 ^ ~b32 & b34;\n s[31] = b31 ^ ~b33 & b35;\n s[40] = b40 ^ ~b42 & b44;\n s[41] = b41 ^ ~b43 & b45;\n s[2] = b2 ^ ~b4 & b6;\n s[3] = b3 ^ ~b5 & b7;\n s[12] = b12 ^ ~b14 & b16;\n s[13] = b13 ^ ~b15 & b17;\n s[22] = b22 ^ ~b24 & b26;\n s[23] = b23 ^ ~b25 & b27;\n s[32] = b32 ^ ~b34 & b36;\n s[33] = b33 ^ ~b35 & b37;\n s[42] = b42 ^ ~b44 & b46;\n s[43] = b43 ^ ~b45 & b47;\n s[4] = b4 ^ ~b6 & b8;\n s[5] = b5 ^ ~b7 & b9;\n s[14] = b14 ^ ~b16 & b18;\n s[15] = b15 ^ ~b17 & b19;\n s[24] = b24 ^ ~b26 & b28;\n s[25] = b25 ^ ~b27 & b29;\n s[34] = b34 ^ ~b36 & b38;\n s[35] = b35 ^ ~b37 & b39;\n s[44] = b44 ^ ~b46 & b48;\n s[45] = b45 ^ ~b47 & b49;\n s[6] = b6 ^ ~b8 & b0;\n s[7] = b7 ^ ~b9 & b1;\n s[16] = b16 ^ ~b18 & b10;\n s[17] = b17 ^ ~b19 & b11;\n s[26] = b26 ^ ~b28 & b20;\n s[27] = b27 ^ ~b29 & b21;\n s[36] = b36 ^ ~b38 & b30;\n s[37] = b37 ^ ~b39 & b31;\n s[46] = b46 ^ ~b48 & b40;\n s[47] = b47 ^ ~b49 & b41;\n s[8] = b8 ^ ~b0 & b2;\n s[9] = b9 ^ ~b1 & b3;\n s[18] = b18 ^ ~b10 & b12;\n s[19] = b19 ^ ~b11 & b13;\n s[28] = b28 ^ ~b20 & b22;\n s[29] = b29 ^ ~b21 & b23;\n s[38] = b38 ^ ~b30 & b32;\n s[39] = b39 ^ ~b31 & b33;\n s[48] = b48 ^ ~b40 & b42;\n s[49] = b49 ^ ~b41 & b43;\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n};\n\nconst keccak = bits => str => {\n var msg;\n if (str.slice(0, 2) === \"0x\") {\n msg = [];\n for (var i = 2, l = str.length; i < l; i += 2) msg.push(parseInt(str.slice(i, i + 2), 16));\n } else {\n msg = str;\n }\n return update(Keccak(bits, bits), msg);\n};\n\nmodule.exports = {\n keccak256: keccak(256),\n keccak512: keccak(512),\n keccak256s: keccak(256),\n keccak512s: keccak(512)\n};","const BN = require(\"bn.js\");\nconst Bytes = require(\"./bytes\");\n\nconst fromBN = bn => \"0x\" + bn.toString(\"hex\");\n\nconst toBN = str => new BN(str.slice(2), 16);\n\nconst fromString = str => {\n const bn = \"0x\" + (str.slice(0, 2) === \"0x\" ? new BN(str.slice(2), 16) : new BN(str, 10)).toString(\"hex\");\n return bn === \"0x0\" ? \"0x\" : bn;\n};\n\nconst toEther = wei => toNumber(div(wei, fromString(\"10000000000\"))) / 100000000;\n\nconst fromEther = eth => mul(fromNumber(Math.floor(eth * 100000000)), fromString(\"10000000000\"));\n\nconst toString = a => toBN(a).toString(10);\n\nconst fromNumber = a => typeof a === \"string\" ? /^0x/.test(a) ? a : \"0x\" + a : \"0x\" + new BN(a).toString(\"hex\");\n\nconst toNumber = a => toBN(a).toNumber();\n\nconst toUint256 = a => Bytes.pad(32, a);\n\nconst bin = method => (a, b) => fromBN(toBN(a)[method](toBN(b)));\n\nconst add = bin(\"add\");\nconst mul = bin(\"mul\");\nconst div = bin(\"div\");\nconst sub = bin(\"sub\");\n\nmodule.exports = {\n toString,\n fromString,\n toNumber,\n fromNumber,\n toEther,\n fromEther,\n toUint256,\n add,\n mul,\n div,\n sub\n};","// The RLP format\n// Serialization and deserialization for the BytesTree type, under the following grammar:\n// | First byte | Meaning |\n// | ---------- | -------------------------------------------------------------------------- |\n// | 0 to 127 | HEX(leaf) |\n// | 128 to 183 | HEX(length_of_leaf + 128) + HEX(leaf) |\n// | 184 to 191 | HEX(length_of_length_of_leaf + 128 + 55) + HEX(length_of_leaf) + HEX(leaf) |\n// | 192 to 247 | HEX(length_of_node + 192) + HEX(node) |\n// | 248 to 255 | HEX(length_of_length_of_node + 128 + 55) + HEX(length_of_node) + HEX(node) |\n\nconst encode = tree => {\n const padEven = str => str.length % 2 === 0 ? str : \"0\" + str;\n\n const uint = num => padEven(num.toString(16));\n\n const length = (len, add) => len < 56 ? uint(add + len) : uint(add + uint(len).length / 2 + 55) + uint(len);\n\n const dataTree = tree => {\n if (typeof tree === \"string\") {\n const hex = tree.slice(2);\n const pre = hex.length != 2 || hex >= \"80\" ? length(hex.length / 2, 128) : \"\";\n return pre + hex;\n } else {\n const hex = tree.map(dataTree).join(\"\");\n const pre = length(hex.length / 2, 192);\n return pre + hex;\n }\n };\n\n return \"0x\" + dataTree(tree);\n};\n\nconst decode = hex => {\n let i = 2;\n\n const parseTree = () => {\n if (i >= hex.length) throw \"\";\n const head = hex.slice(i, i + 2);\n return head < \"80\" ? (i += 2, \"0x\" + head) : head < \"c0\" ? parseHex() : parseList();\n };\n\n const parseLength = () => {\n const len = parseInt(hex.slice(i, i += 2), 16) % 64;\n return len < 56 ? len : parseInt(hex.slice(i, i += (len - 55) * 2), 16);\n };\n\n const parseHex = () => {\n const len = parseLength();\n return \"0x\" + hex.slice(i, i += len * 2);\n };\n\n const parseList = () => {\n const lim = parseLength() * 2 + i;\n let list = [];\n while (i < lim) list.push(parseTree());\n return list;\n };\n\n try {\n return parseTree();\n } catch (e) {\n return [];\n }\n};\n\nmodule.exports = { encode, decode };","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Returns true if the bloom is a valid bloom\r\n * @param bloom The bloom\r\n */\r\nfunction isBloom(bloom) {\r\n if (typeof bloom !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{512}$/i.test(bloom)) {\r\n return false;\r\n }\r\n if (/^(0x)?[0-9a-f]{512}$/.test(bloom) ||\r\n /^(0x)?[0-9A-F]{512}$/.test(bloom)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isBloom = isBloom;\r\n/**\r\n * Returns true if the value is part of the given bloom\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param value The value\r\n */\r\nfunction isInBloom(bloom, value) {\r\n if (typeof value === 'object' && value.constructor === Uint8Array) {\r\n value = utils_1.bytesToHex(value);\r\n }\r\n const hash = utils_1.keccak256(value).replace('0x', '');\r\n for (let i = 0; i < 12; i += 4) {\r\n // calculate bit position in bloom filter that must be active\r\n const bitpos = ((parseInt(hash.substr(i, 2), 16) << 8) +\r\n parseInt(hash.substr(i + 2, 2), 16)) &\r\n 2047;\r\n // test if bitpos in bloom is active\r\n const code = codePointToInt(bloom.charCodeAt(bloom.length - 1 - Math.floor(bitpos / 4)));\r\n const offset = 1 << bitpos % 4;\r\n if ((code & offset) !== offset) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.isInBloom = isInBloom;\r\n/**\r\n * Code points to int\r\n * @param codePoint The code point\r\n */\r\nfunction codePointToInt(codePoint) {\r\n if (codePoint >= 48 && codePoint <= 57) {\r\n /* ['0'..'9'] -> [0..9] */\r\n return codePoint - 48;\r\n }\r\n if (codePoint >= 65 && codePoint <= 70) {\r\n /* ['A'..'F'] -> [10..15] */\r\n return codePoint - 55;\r\n }\r\n if (codePoint >= 97 && codePoint <= 102) {\r\n /* ['a'..'f'] -> [10..15] */\r\n return codePoint - 87;\r\n }\r\n throw new Error('invalid bloom');\r\n}\r\n/**\r\n * Returns true if the ethereum users address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param address the address to test\r\n */\r\nfunction isUserEthereumAddressInBloom(bloom, ethereumAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(ethereumAddress)) {\r\n throw new Error(`Invalid ethereum address given: \"${ethereumAddress}\"`);\r\n }\r\n // you have to pad the ethereum address to 32 bytes\r\n // else the bloom filter does not work\r\n // this is only if your matching the USERS\r\n // ethereum address. Contract address do not need this\r\n // hence why we have 2 methods\r\n // (0x is not in the 2nd parameter of padleft so 64 chars is fine)\r\n const address = utils_1.padLeft(ethereumAddress, 64);\r\n return isInBloom(bloom, address);\r\n}\r\nexports.isUserEthereumAddressInBloom = isUserEthereumAddressInBloom;\r\n/**\r\n * Returns true if the contract address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param contractAddress the contract address to test\r\n */\r\nfunction isContractAddressInBloom(bloom, contractAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(contractAddress)) {\r\n throw new Error(`Invalid contract address given: \"${contractAddress}\"`);\r\n }\r\n return isInBloom(bloom, contractAddress);\r\n}\r\nexports.isContractAddressInBloom = isContractAddressInBloom;\r\n/**\r\n * Returns true if the topic is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param topic the topic encoded hex\r\n */\r\nfunction isTopicInBloom(bloom, topic) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isTopic(topic)) {\r\n throw new Error('Invalid topic');\r\n }\r\n return isInBloom(bloom, topic);\r\n}\r\nexports.isTopicInBloom = isTopicInBloom;\r\n/**\r\n * Checks if its a valid topic\r\n * @param topic encoded hex topic\r\n */\r\nfunction isTopic(topic) {\r\n if (typeof topic !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{64}$/i.test(topic)) {\r\n return false;\r\n }\r\n else if (/^(0x)?[0-9a-f]{64}$/.test(topic) ||\r\n /^(0x)?[0-9A-F]{64}$/.test(topic)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isTopic = isTopic;\r\n/**\r\n * Is valid address\r\n * @param address The address\r\n */\r\nfunction isAddress(address) {\r\n if (typeof address !== 'string') {\r\n return false;\r\n }\r\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\r\n return true;\r\n }\r\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isAddress = isAddress;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sha3 = require(\"js-sha3\");\r\n/**\r\n * Keccak256 hash\r\n * @param data The data\r\n */\r\nfunction keccak256(data) {\r\n return '0x' + sha3.keccak_256(toByteArray(data));\r\n}\r\nexports.keccak256 = keccak256;\r\n/**\r\n * Adding padding to string on the left\r\n * @param value The value\r\n * @param chars The chars\r\n */\r\nexports.padLeft = (value, chars) => {\r\n const hasPrefix = /^0x/i.test(value) || typeof value === 'number';\r\n value = value.toString().replace(/^0x/i, '');\r\n const padding = chars - value.length + 1 >= 0 ? chars - value.length + 1 : 0;\r\n return (hasPrefix ? '0x' : '') + new Array(padding).join('0') + value;\r\n};\r\n/**\r\n * Convert bytes to hex\r\n * @param bytes The bytes\r\n */\r\nfunction bytesToHex(bytes) {\r\n const hex = [];\r\n for (let i = 0; i < bytes.length; i++) {\r\n hex.push((bytes[i] >>> 4).toString(16));\r\n hex.push((bytes[i] & 0xf).toString(16));\r\n }\r\n return `0x${hex.join('').replace(/^0+/, '')}`;\r\n}\r\nexports.bytesToHex = bytesToHex;\r\n/**\r\n * To byte array\r\n * @param value The value\r\n */\r\nfunction toByteArray(value) {\r\n if (value == null) {\r\n throw new Error('cannot convert null value to array');\r\n }\r\n if (typeof value === 'string') {\r\n const match = value.match(/^(0x)?[0-9a-fA-F]*$/);\r\n if (!match) {\r\n throw new Error('invalid hexidecimal string');\r\n }\r\n if (match[1] !== '0x') {\r\n throw new Error('hex string must have 0x prefix');\r\n }\r\n value = value.substring(2);\r\n if (value.length % 2) {\r\n value = '0' + value;\r\n }\r\n const result = [];\r\n for (let i = 0; i < value.length; i += 2) {\r\n result.push(parseInt(value.substr(i, 2), 16));\r\n }\r\n return addSlice(new Uint8Array(result));\r\n }\r\n if (isByteArray(value)) {\r\n return addSlice(new Uint8Array(value));\r\n }\r\n throw new Error('invalid arrayify value');\r\n}\r\nexports.toByteArray = toByteArray;\r\n/**\r\n * Is byte array\r\n * @param value The value\r\n */\r\nfunction isByteArray(value) {\r\n if (!value ||\r\n // tslint:disable-next-line: radix\r\n parseInt(String(value.length)) != value.length ||\r\n typeof value === 'string') {\r\n return false;\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n const v = value[i];\r\n // tslint:disable-next-line: radix\r\n if (v < 0 || v >= 256 || parseInt(String(v)) != v) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Add slice to array\r\n * @param array The array\r\n */\r\nfunction addSlice(array) {\r\n if (array.slice !== undefined) {\r\n return array;\r\n }\r\n array.slice = () => {\r\n const args = Array.prototype.slice.call(arguments);\r\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\r\n };\r\n return array;\r\n}\r\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.keccak512 = exports.keccak384 = exports.keccak256 = exports.keccak224 = void 0;\nconst sha3_1 = require(\"@noble/hashes/sha3\");\nconst utils_js_1 = require(\"./utils.js\");\nexports.keccak224 = (0, utils_js_1.wrapHash)(sha3_1.keccak_224);\nexports.keccak256 = (() => {\n const k = (0, utils_js_1.wrapHash)(sha3_1.keccak_256);\n k.create = sha3_1.keccak_256.create;\n return k;\n})();\nexports.keccak384 = (0, utils_js_1.wrapHash)(sha3_1.keccak_384);\nexports.keccak512 = (0, utils_js_1.wrapHash)(sha3_1.keccak_512);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.secp256k1 = void 0;\nvar secp256k1_1 = require(\"@noble/curves/secp256k1\");\nObject.defineProperty(exports, \"secp256k1\", { enumerable: true, get: function () { return secp256k1_1.secp256k1; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = exports.wrapHash = exports.equalsBytes = exports.hexToBytes = exports.bytesToUtf8 = exports.utf8ToBytes = exports.createView = exports.concatBytes = exports.toHex = exports.bytesToHex = exports.assertBytes = exports.assertBool = void 0;\nconst _assert_1 = __importDefault(require(\"@noble/hashes/_assert\"));\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst assertBool = _assert_1.default.bool;\nexports.assertBool = assertBool;\nconst assertBytes = _assert_1.default.bytes;\nexports.assertBytes = assertBytes;\nvar utils_2 = require(\"@noble/hashes/utils\");\nObject.defineProperty(exports, \"bytesToHex\", { enumerable: true, get: function () { return utils_2.bytesToHex; } });\nObject.defineProperty(exports, \"toHex\", { enumerable: true, get: function () { return utils_2.bytesToHex; } });\nObject.defineProperty(exports, \"concatBytes\", { enumerable: true, get: function () { return utils_2.concatBytes; } });\nObject.defineProperty(exports, \"createView\", { enumerable: true, get: function () { return utils_2.createView; } });\nObject.defineProperty(exports, \"utf8ToBytes\", { enumerable: true, get: function () { return utils_2.utf8ToBytes; } });\n// buf.toString('utf8') -> bytesToUtf8(buf)\nfunction bytesToUtf8(data) {\n if (!(data instanceof Uint8Array)) {\n throw new TypeError(`bytesToUtf8 expected Uint8Array, got ${typeof data}`);\n }\n return new TextDecoder().decode(data);\n}\nexports.bytesToUtf8 = bytesToUtf8;\nfunction hexToBytes(data) {\n const sliced = data.startsWith(\"0x\") ? data.substring(2) : data;\n return (0, utils_1.hexToBytes)(sliced);\n}\nexports.hexToBytes = hexToBytes;\n// buf.equals(buf2) -> equalsBytes(buf, buf2)\nfunction equalsBytes(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexports.equalsBytes = equalsBytes;\n// Internal utils\nfunction wrapHash(hash) {\n return (msg) => {\n _assert_1.default.bytes(msg);\n return hash(msg);\n };\n}\nexports.wrapHash = wrapHash;\n// TODO(v3): switch away from node crypto, remove this unnecessary variable.\nexports.crypto = (() => {\n const webCrypto = typeof globalThis === \"object\" && \"crypto\" in globalThis ? globalThis.crypto : undefined;\n const nodeRequire = typeof module !== \"undefined\" &&\n typeof module.require === \"function\" &&\n module.require.bind(module);\n return {\n node: nodeRequire && !webCrypto ? nodeRequire(\"crypto\") : undefined,\n web: webCrypto\n };\n})();\n",null,null,null,null,null,null,"'use strict';\n\nvar BN = require('bn.js');\nvar numberToBN = require('number-to-bn');\n\nvar zero = new BN(0);\nvar negative1 = new BN(-1);\n\n// complete ethereum unit map\nvar unitMap = {\n 'noether': '0', // eslint-disable-line\n 'wei': '1', // eslint-disable-line\n 'kwei': '1000', // eslint-disable-line\n 'Kwei': '1000', // eslint-disable-line\n 'babbage': '1000', // eslint-disable-line\n 'femtoether': '1000', // eslint-disable-line\n 'mwei': '1000000', // eslint-disable-line\n 'Mwei': '1000000', // eslint-disable-line\n 'lovelace': '1000000', // eslint-disable-line\n 'picoether': '1000000', // eslint-disable-line\n 'gwei': '1000000000', // eslint-disable-line\n 'Gwei': '1000000000', // eslint-disable-line\n 'shannon': '1000000000', // eslint-disable-line\n 'nanoether': '1000000000', // eslint-disable-line\n 'nano': '1000000000', // eslint-disable-line\n 'szabo': '1000000000000', // eslint-disable-line\n 'microether': '1000000000000', // eslint-disable-line\n 'micro': '1000000000000', // eslint-disable-line\n 'finney': '1000000000000000', // eslint-disable-line\n 'milliether': '1000000000000000', // eslint-disable-line\n 'milli': '1000000000000000', // eslint-disable-line\n 'ether': '1000000000000000000', // eslint-disable-line\n 'kether': '1000000000000000000000', // eslint-disable-line\n 'grand': '1000000000000000000000', // eslint-disable-line\n 'mether': '1000000000000000000000000', // eslint-disable-line\n 'gether': '1000000000000000000000000000', // eslint-disable-line\n 'tether': '1000000000000000000000000000000' };\n\n/**\n * Returns value of unit in Wei\n *\n * @method getValueOfUnit\n * @param {String} unit the unit to convert to, default ether\n * @returns {BigNumber} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nfunction getValueOfUnit(unitInput) {\n var unit = unitInput ? unitInput.toLowerCase() : 'ether';\n var unitValue = unitMap[unit]; // eslint-disable-line\n\n if (typeof unitValue !== 'string') {\n throw new Error('[ethjs-unit] the unit provided ' + unitInput + ' doesn\\'t exists, please use the one of the following units ' + JSON.stringify(unitMap, null, 2));\n }\n\n return new BN(unitValue, 10);\n}\n\nfunction numberToString(arg) {\n if (typeof arg === 'string') {\n if (!arg.match(/^-?[0-9.]+$/)) {\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\', should be a number matching (^-?[0-9.]+).');\n }\n return arg;\n } else if (typeof arg === 'number') {\n return String(arg);\n } else if (typeof arg === 'object' && arg.toString && (arg.toTwos || arg.dividedToIntegerBy)) {\n if (arg.toPrecision) {\n return String(arg.toPrecision());\n } else {\n // eslint-disable-line\n return arg.toString(10);\n }\n }\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\' type ' + typeof arg + '.');\n}\n\nfunction fromWei(weiInput, unit, optionsInput) {\n var wei = numberToBN(weiInput); // eslint-disable-line\n var negative = wei.lt(zero); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n var options = optionsInput || {};\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n var fraction = wei.mod(base).toString(10); // eslint-disable-line\n\n while (fraction.length < baseLength) {\n fraction = '0' + fraction;\n }\n\n if (!options.pad) {\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n }\n\n var whole = wei.div(base).toString(10); // eslint-disable-line\n\n if (options.commify) {\n whole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n var value = '' + whole + (fraction == '0' ? '' : '.' + fraction); // eslint-disable-line\n\n if (negative) {\n value = '-' + value;\n }\n\n return value;\n}\n\nfunction toWei(etherInput, unit) {\n var ether = numberToString(etherInput); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n\n // Is it negative?\n var negative = ether.substring(0, 1) === '-'; // eslint-disable-line\n if (negative) {\n ether = ether.substring(1);\n }\n\n if (ether === '.') {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, invalid value');\n }\n\n // Split it into a whole and fractional part\n var comps = ether.split('.'); // eslint-disable-line\n if (comps.length > 2) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal points');\n }\n\n var whole = comps[0],\n fraction = comps[1]; // eslint-disable-line\n\n if (!whole) {\n whole = '0';\n }\n if (!fraction) {\n fraction = '0';\n }\n if (fraction.length > baseLength) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal places');\n }\n\n while (fraction.length < baseLength) {\n fraction += '0';\n }\n\n whole = new BN(whole);\n fraction = new BN(fraction);\n var wei = whole.mul(base).add(fraction); // eslint-disable-line\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n return new BN(wei.toString(10), 10);\n}\n\nmodule.exports = {\n unitMap: unitMap,\n numberToString: numberToString,\n getValueOfUnit: getValueOfUnit,\n fromWei: fromWei,\n toWei: toWei\n};","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar objectCreate = Object.create || objectCreatePolyfill\nvar objectKeys = Object.keys || objectKeysPolyfill\nvar bind = Function.prototype.bind || functionBindPolyfill\n\nfunction EventEmitter() {\n if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nvar hasDefineProperty;\ntry {\n var o = {};\n if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n hasDefineProperty = o.x === 0;\n} catch (err) { hasDefineProperty = false }\nif (hasDefineProperty) {\n Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n // check whether the input is a positive number (whose value is zero or\n // greater and not a NaN).\n if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n defaultMaxListeners = arg;\n }\n });\n} else {\n EventEmitter.defaultMaxListeners = defaultMaxListeners;\n}\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n if (arguments.length > 1)\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Unhandled \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = objectCreate(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' \"' + String(type) + '\" listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit.');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n if (typeof console === 'object' && console.warn) {\n console.warn('%s: %s', w.name, w.message);\n }\n }\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n switch (arguments.length) {\n case 0:\n return this.listener.call(this.target);\n case 1:\n return this.listener.call(this.target, arguments[0]);\n case 2:\n return this.listener.call(this.target, arguments[0], arguments[1]);\n case 3:\n return this.listener.call(this.target, arguments[0], arguments[1],\n arguments[2]);\n default:\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i)\n args[i] = arguments[i];\n this.listener.apply(this.target, args);\n }\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = bind.call(onceWrapper, state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else\n spliceOne(list, position);\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = objectKeys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = objectCreate(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (!events)\n return [];\n\n var evlistener = events[type];\n if (!evlistener)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction objectCreatePolyfill(proto) {\n var F = function() {};\n F.prototype = proto;\n return new F;\n}\nfunction objectKeysPolyfill(obj) {\n var keys = [];\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n return k;\n}\nfunction functionBindPolyfill(context) {\n var fn = this;\n return function () {\n return fn.apply(context, arguments);\n };\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","/* This file is generated from the Unicode IDNA table, using\n the build-unicode-tables.py script. Please edit that\n script instead of this file. */\n\n/* istanbul ignore next */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], function () { return factory(); });\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.uts46_map = factory();\n }\n}(this, function () {\nvar blocks = [\n new Uint32Array([2157250,2157314,2157378,2157442,2157506,2157570,2157634,0,2157698,2157762,2157826,2157890,2157954,0,2158018,0]),\n new Uint32Array([2179041,6291456,2179073,6291456,2179105,6291456,2179137,6291456,2179169,6291456,2179201,6291456,2179233,6291456,2179265,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([0,2113729,2197345,2197377,2113825,2197409,2197441,2113921,2197473,2114017,2197505,2197537,2197569,2197601,2197633,2197665]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672,23068672,0,0,0,0,23068672]),\n new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064]),\n new Uint32Array([2196001,2196033,2196065,2196097,2196129,2196161,2196193,2196225,2196257,2196289,2196321,2196353,2196385,2196417,2196449,2196481]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,0,0,0,0,0]),\n new Uint32Array([2097281,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([2177025,6291456,2177057,6291456,2177089,6291456,2177121,6291456,2177153,6291456,2177185,6291456,2177217,6291456,2177249,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456]),\n new Uint32Array([2134435,2134531,2134627,2134723,2134723,2134819,2134819,2134915,2134915,2135011,2105987,2135107,2135203,2135299,2131587,2135395]),\n new Uint32Array([0,0,0,0,0,0,0,6291456,2168673,2169249,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354,2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354]),\n new Uint32Array([2125219,2125315,2152834,2152898,2125411,2152962,2153026,2125506,2125507,2125603,2153090,2153154,2153218,2153282,2153346,2105348]),\n new Uint32Array([2203393,6291456,2203425,6291456,2203457,6291456,2203489,6291456,6291456,6291456,6291456,2203521,6291456,2181281,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,6291456,2145538,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,6291456]),\n new Uint32Array([2139426,2160834,2160898,2160962,2134242,2161026,2161090,2161154,2161218,2161282,2161346,2161410,2138658,2161474,2161538,2134722]),\n new Uint32Array([2119939,2124930,2125026,2106658,2125218,2128962,2129058,2129154,2129250,2129346,2129442,2108866,2108770,2150466,2150530,2150594]),\n new Uint32Array([2201601,6291456,2201633,6291456,2201665,6291456,2201697,6291456,2201729,6291456,2201761,6291456,2201793,6291456,2201825,6291456]),\n new Uint32Array([2193537,2193569,2193601,2193633,2193665,2193697,2193729,2193761,2193793,2193825,2193857,2193889,2193921,2193953,2193985,2194017]),\n new Uint32Array([6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2190561,6291456,2190593,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2190625,6291456,2190657,6291456,23068672]),\n new Uint32Array([2215905,2215937,2215969,2216001,2216033,2216065,2216097,2216129,2216161,2216193,2216225,2216257,2105441,2216289,2216321,2216353]),\n new Uint32Array([23068672,18884130,23068672,23068672,23068672,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2191233,2191265,2191297,2191329,2191361,2191393,2191425,2117377,2191457,2191489,2191521,2191553,2191585,2191617,2191649,2117953]),\n new Uint32Array([2132227,2132323,2132419,2132419,2132515,2132515,2132611,2132707,2132707,2132803,2132899,2132899,2132995,2132995,2133091,2133187]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,0,0]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10609889,10610785,10609921,10610817,2222241]),\n new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),\n new Uint32Array([2219969,2157121,2157441,2157505,2157889,2157953,2220001,2158465,2158529,10575617,2156994,2157058,2129923,2130019,2157122,2157186]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2185249,6291456,2185281,6291456,2185313,6291456,2185345,6291456,2185377,6291456,2185409,6291456,2185441,6291456,2185473,6291456]),\n new Uint32Array([0,0,0,0,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,6291456,0]),\n new Uint32Array([2183361,6291456,2183393,6291456,2183425,6291456,2183457,6291456,2183489,6291456,2183521,6291456,2183553,6291456,2183585,6291456]),\n new Uint32Array([2192161,2192193,2192225,2192257,2192289,2192321,2192353,2192385,2192417,2192449,2192481,2192513,2192545,2192577,2192609,2192641]),\n new Uint32Array([2212001,2212033,2212065,2212097,2212129,2212161,2212193,2212225,2212257,2212289,2212321,2212353,2212385,2212417,2212449,2207265]),\n new Uint32Array([2249825,2249857,2249889,2249921,2249954,2250018,2250082,2250145,2250177,2250209,2250241,2250274,2250337,2250370,2250433,2250465]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147905,2147969,2148033,2148097,2148161,2148225,2148289,2148353]),\n new Uint32Array([10485857,6291456,2197217,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2180353,2180385,2144033,2180417,2180449,2180481,2180513,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10610209,10610465,10610241,10610753,10609857]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),\n new Uint32Array([2223842,2223906,2223970,2224034,2224098,2224162,2224226,2224290,2224354,2224418,2224482,2224546,2224610,2224674,2224738,2224802]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([23068672,23068672,23068672,18923650,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,18923714,23068672,23068672]),\n new Uint32Array([2126179,2125538,2126275,2126371,2126467,2125634,2126563,2105603,2105604,2125346,2126659,2126755,2126851,2098179,2098181,2098182]),\n new Uint32Array([2227426,2227490,2227554,2227618,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2192353,2240642,2240642,2240705,2240737,2240737,2240769,2240802,2240866,2240929,2240961,2240993,2241025,2241057,2241089,2241121]),\n new Uint32Array([6291456,2170881,2170913,2170945,6291456,2170977,6291456,2171009,2171041,6291456,6291456,6291456,2171073,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2132226,2132514,2163586,2132610,2160386,2133090,2133186,2160450,2160514,2160578,2133570,2106178,2160642,2133858,2160706,2160770]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10532162,10532226,10532290,10532354,10532418,10532482,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),\n new Uint32Array([2098209,2108353,2108193,2108481,2170241,2111713,2105473,2105569,2105601,2112289,2112481,2098305,2108321,0,0,0]),\n new Uint32Array([2209121,2209153,2209185,2209217,2209249,2209281,2209313,2209345,2209377,2209409,2209441,2209473,2207265,2209505,2209537,2209569]),\n new Uint32Array([2189025,6291456,2189057,6291456,2189089,6291456,2189121,6291456,2189153,6291456,2189185,6291456,2189217,6291456,2189249,6291456]),\n new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2165764,2140004]),\n new Uint32Array([2215105,6291456,2215137,6291456,6291456,2215169,2215201,6291456,6291456,6291456,2215233,2215265,2215297,2215329,2215361,2215393]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,23068672,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([10505091,10505187,10505283,10505379,10505475,10505571,10505667,10505763,10505859,10505955,10506051,10506147,10506243,10506339,10506435,10506531]),\n new Uint32Array([2229730,2229794,2229858,2229922,2229986,2230050,2230114,2230178,2230242,2230306,2230370,2230434,2230498,2230562,2230626,2230690]),\n new Uint32Array([2105505,2098241,2108353,2108417,2105825,0,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),\n new Uint32Array([6291456,6291456,6291456,6291456,10502115,10502178,10502211,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2190305,6291456,2190337,6291456,2190369,6291456,2190401,6291456,2190433,6291456,2190465,6291456,2190497,6291456,2190529,6291456]),\n new Uint32Array([2173793,2173985,2174017,6291456,2173761,2173697,6291456,2174689,6291456,2174017,2174721,6291456,6291456,2174753,2174785,2174817]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609,2100033]),\n new Uint32Array([2132898,2163842,2163906,2133282,2132034,2131938,2137410,2132802,2132706,2164866,2133282,2160578,2165186,2165186,6291456,6291456]),\n new Uint32Array([10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059,10501155,10501251,10501347,10501443]),\n new Uint32Array([2163458,2130978,2131074,2131266,2131362,2163522,2160130,2132066,2131010,2131106,2106018,2131618,2131298,2132034,2131938,2137410]),\n new Uint32Array([2212961,2116993,2212993,2213025,2213057,2213089,2213121,2213153,2213185,2213217,2213249,2209633,2213281,2213313,2213345,2213377]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2113729,2113825,2113921,2114017,2114113,2114209,2114305,2114401,2114497,2114593,2114689,2114785,2114881,2114977,2115073,2115169]),\n new Uint32Array([2238177,2238209,2238241,2238273,2238305,2238337,2238337,2217537,2238369,2238401,2238433,2238465,2215649,2238497,2238529,2238561]),\n new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),\n new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0]),\n new Uint32Array([6291456,0,6291456,2145026,0,6291456,2145090,0,6291456,6291456,0,0,23068672,0,23068672,23068672]),\n new Uint32Array([2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129,2100289]),\n new Uint32Array([6291456,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0]),\n new Uint32Array([2187681,2187713,2187745,2187777,2187809,2187841,2187873,2187905,2187937,2187969,2188001,2188033,2188065,2188097,2188129,2188161]),\n new Uint32Array([0,10554498,10554562,10554626,10554690,10554754,10554818,10554882,10554946,10555010,10555074,6291456,6291456,0,0,0]),\n new Uint32Array([2235170,2235234,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0]),\n new Uint32Array([2181153,6291456,2188897,6291456,6291456,2188929,6291456,6291456,6291456,6291456,6291456,6291456,2111905,2100865,2188961,2188993]),\n new Uint32Array([2100833,2100897,0,0,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,2112289]),\n new Uint32Array([6291456,2172833,6291456,2172865,2172897,2172929,2172961,6291456,2172993,6291456,2173025,6291456,2173057,6291456,2173089,6291456]),\n new Uint32Array([6291456,0,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,2190721]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456]),\n new Uint32Array([2184993,6291456,2185025,6291456,2185057,6291456,2185089,6291456,2185121,6291456,2185153,6291456,2185185,6291456,2185217,6291456]),\n new Uint32Array([2115265,2115361,2115457,2115553,2115649,2115745,2115841,2115937,2116033,2116129,2116225,2116321,2150658,2150722,2200225,6291456]),\n new Uint32Array([2168321,6291456,2168353,6291456,2168385,6291456,2168417,6291456,2168449,6291456,2168481,6291456,2168513,6291456,2168545,6291456]),\n new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,0,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,2186625,0,0,6291456,6291456,2186657,2186689,2186721,2173505,0,10496067,10496163,10496259]),\n new Uint32Array([2178785,6291456,2178817,6291456,2178849,6291456,2178881,6291456,2178913,6291456,2178945,6291456,2178977,6291456,2179009,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2097152,0,0,0,2097152,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,2197857,2197889,2197921,2197953,2197985,2198017,0,0,2198049,2198081,2198113,2198145,2198177,2198209]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2098209,2167297,2111137,6291456]),\n new Uint32Array([2171393,6291456,2171425,6291456,2171457,6291456,2171489,6291456,2171521,6291456,2171553,6291456,2171585,6291456,2171617,6291456]),\n new Uint32Array([2206753,2206785,2195457,2206817,2206849,2206881,2206913,2197153,2197153,2206945,2117857,2206977,2207009,2207041,2207073,2207105]),\n new Uint32Array([0,0,0,0,0,0,0,23068672,0,0,0,0,2144834,2144898,0,2144962]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672]),\n new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,0,2105505,2098241]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,2202049,6291456,2202081,6291456,2202113,6291456,2202145,6291456,2202177,6291456,2202209,6291456,2202241,6291456]),\n new Uint32Array([10501155,10501251,10501347,10501443,10501539,10501635,10501731,10501827,10501923,10502019,2141731,2105505,2098177,2155586,2166530,0]),\n new Uint32Array([2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441]),\n new Uint32Array([2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330,2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([10502307,10502403,10502499,10502595,10502691,10502787,10502883,10502979,10503075,10503171,10503267,10503363,10503459,10503555,10503651,10503747]),\n new Uint32Array([2179937,2179969,2180001,2180033,2156545,2180065,2156577,2180097,2180129,2180161,2180193,2180225,2180257,2180289,2156737,2180321]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,0,0,6291456,0,0,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),\n new Uint32Array([2227682,2227746,2227810,2227874,2227938,2228002,2228066,2228130,2228194,2228258,2228322,2228386,2228450,2228514,2228578,2228642]),\n new Uint32Array([2105601,2169121,2108193,2170049,2181025,2181057,2112481,2108321,2108289,2181089,2170497,2100865,2181121,2173601,2173633,2173665]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180641,6291456,6291456,6291456]),\n new Uint32Array([0,6291456,6291456,6291456,0,6291456,0,6291456,0,0,6291456,6291456,0,6291456,6291456,6291456]),\n new Uint32Array([2178273,6291456,2178305,6291456,2178337,6291456,2178369,6291456,2178401,6291456,2178433,6291456,2178465,6291456,2178497,6291456]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),\n new Uint32Array([2237377,2237409,2236225,2237441,2237473,2217441,2215521,2215553,2217473,2237505,2237537,2209697,2237569,2215585,2237601,2237633]),\n new Uint32Array([2221985,2165601,2165601,2165665,2165665,2222017,2222017,2165729,2165729,2158913,2158913,2158913,2158913,2097281,2097281,2105921]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2149634,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2176897,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2176929,6291456,2176961,6291456,2176993,6291456]),\n new Uint32Array([2172641,6291456,2172673,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2172705,2172737,6291456,2172769,2172801,6291456]),\n new Uint32Array([2099173,2104196,2121667,2099395,2121763,2152258,2152322,2098946,2152386,2121859,2121955,2099333,2122051,2104324,2099493,2122147]),\n new Uint32Array([6291456,6291456,6291456,2145794,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2145858,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,0,0,6291456,0]),\n new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,0,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2239074,2239138,2239201,2239233,2239265,2239297,2239329,2239361,0,2239393,2239425,2239425,2239458,2239521,2239553,2209569]),\n new Uint32Array([14680064,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,6291456,23068672]),\n new Uint32Array([2108321,2108289,2113153,2098209,2180897,2180929,2180961,2111137,2098241,2108353,2170241,2170273,2180993,2105825,6291456,2105473]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146114,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([2105921,2105921,2105921,2222049,2222049,2130977,2130977,2130977,2130977,2160065,2160065,2160065,2160065,2097729,2097729,2097729]),\n new Uint32Array([2218145,2214785,2207937,2218177,2218209,2192993,2210113,2212769,2218241,2218273,2216129,2218305,2216161,2218337,2218369,2218401]),\n new Uint32Array([0,0,0,2156546,2156610,2156674,2156738,2156802,0,0,0,0,0,2156866,23068672,2156930]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2213409,2213441,2213473,2213505,2213537,2213569,2213601,2213633,2213665,2195681,2213697,2213729,2213761,2213793,2213825,2213857]),\n new Uint32Array([2100033,2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2201857,6291456,2201889,6291456,2201921,6291456,2201953,6291456,2201985,6291456,2202017,6291456,2176193,2176257,23068672,23068672]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2188193,2188225,2188257,2188289,2188321,2188353,2188385,2188417,2188449,2188481,2188513,2188545,2188577,2188609,2188641,0]),\n new Uint32Array([10554529,2221089,0,10502113,10562017,10537921,10538049,2221121,2221153,0,0,0,0,0,0,0]),\n new Uint32Array([2213889,2213921,2213953,2213985,2214017,2214049,2214081,2194177,2214113,2214145,2214177,2214209,2214241,2214273,2214305,2214337]),\n new Uint32Array([2166978,2167042,2099169,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180545,6291456,6291456,6291456]),\n new Uint32Array([10518915,10519011,10519107,10519203,2162242,2162306,2159554,2162370,2159362,2159618,2105922,2162434,2159746,2162498,2159810,2159874]),\n new Uint32Array([2161730,2161794,2135586,2161858,2161922,2137186,2131810,2160290,2135170,2161986,2137954,2162050,2162114,2162178,10518723,10518819]),\n new Uint32Array([10506627,10506723,10506819,10506915,10507011,10507107,10507203,10507299,10507395,10507491,10507587,10507683,10507779,10507875,10507971,10508067]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2175873,2175905,2175937,2175969,2176001,2176033,2176065,2176097,2176129,2176161,2176193,2176225,2176257,2176289,2176321,2176353]),\n new Uint32Array([2140006,2140198,2140390,2140582,2140774,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,23068672,23068672,23068672]),\n new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241]),\n new Uint32Array([0,23068672,0,0,0,0,0,0,0,2145154,2145218,2145282,6291456,0,2145346,0]),\n new Uint32Array([0,0,0,0,10531458,10495395,2148545,2143201,2173473,2148865,2173505,0,2173537,0,2173569,2149121]),\n new Uint32Array([10537282,10495683,2148738,2148802,2148866,0,6291456,2148930,2186593,2173473,2148737,2148865,2148802,10495779,10495875,10495971]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2215425,2215457,2215489,2215521,2215553,2215585,2215617,2215649,2215681,2215713,2215745,2215777,2192033,2215809,2215841,2215873]),\n new Uint32Array([2242049,2242081,2242113,2242145,2242177,2242209,2242241,2242273,2215937,2242305,2242338,2242401,2242433,2242465,2242497,2216001]),\n new Uint32Array([10554529,2221089,0,0,10562017,10502113,10538049,10537921,2221185,10489601,10489697,10609889,10609921,2141729,2141793,10610273]),\n new Uint32Array([2141923,2142019,2142115,2142211,2142307,2142403,2142499,2142595,2142691,0,0,0,0,0,0,0]),\n new Uint32Array([0,2221185,2221217,10609857,10609857,10489601,10489697,10609889,10609921,2141729,2141793,2221345,2221377,2221409,2221441,2187105]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18923970,23068672,23068672,23068672,0,6291456,6291456]),\n new Uint32Array([2183105,6291456,2183137,6291456,2183169,6291456,2183201,6291456,2183233,6291456,2183265,6291456,2183297,6291456,2183329,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2134434,2134818,2097666,2097186,2097474,2097698,2105986,2131586,2132450,2131874,2131778,2135970,2135778,2161602,2136162,2161666]),\n new Uint32Array([2236865,2236897,2236930,2236993,2237025,2235681,2237058,2237121,2237153,2237185,2237217,2217281,2237250,2191233,2237313,2237345]),\n new Uint32Array([2190049,6291456,2190081,6291456,2190113,6291456,2190145,6291456,2190177,6291456,2190209,6291456,2190241,6291456,2190273,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2101922,2102050,2102178,2102306,10498755,10498851,10498947,10499043,10499139,10499235,10499331,10499427,10499523,10489604,10489732,10489860]),\n new Uint32Array([2166914,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2181601,2170561,2181633,2181665,2170753,2181697,2172897,2170881,2181729,2170913,2172929,2113441,2181761,2181793,2171009,2173761]),\n new Uint32Array([0,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2248001,2248033,2248066,2248130,2248193,2248226,2248289,2248322,2248385,2248417,2216673,2248450,2248514,2248577,2248610,2248673]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([2169729,6291456,2169761,6291456,2169793,6291456,2169825,6291456,2169857,2169889,6291456,2169921,6291456,2143329,6291456,2098305]),\n new Uint32Array([2162178,2163202,2163266,2135170,2136226,2161986,2137954,2159426,2159490,2163330,2159554,2163394,2159682,2139522,2136450,2159746]),\n new Uint32Array([2173953,2173985,0,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2174209,2174241,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,4271169,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2174273]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,2190785,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2189793,6291456,2189825,6291456,2189857,6291456,2189889,6291456,2189921,6291456,2189953,6291456,2189985,6291456,2190017,6291456]),\n new Uint32Array([2105601,2112289,2108193,2112481,2112577,0,2098305,2108321,2108289,2100865,2113153,2108481,2113345,0,2098209,2111137]),\n new Uint32Array([2172129,6291456,2172161,6291456,2172193,6291456,2172225,6291456,2172257,6291456,2172289,6291456,2172321,6291456,2172353,6291456]),\n new Uint32Array([2214753,6291456,2214785,6291456,6291456,2214817,2214849,2214881,2214913,2214945,2214977,2215009,2215041,2215073,2194401,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,0,0,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([10610305,10610337,10575617,2221761,10610401,10610433,10502177,0,10610465,10610497,10610529,10610561,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,0,0,0,0,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2187105,2187137,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2199393,2199425,2199457,2199489,2199521,2199553,2199585,2199617,2199649,2199681,2199713,2199745,2199777,2199809,2199841,0]),\n new Uint32Array([2217249,2217281,2217313,2217345,2217377,2217409,2217441,2217473,2215617,2217505,2217537,2217569,2214753,2217601,2217633,2217665]),\n new Uint32Array([2170273,2170305,6291456,2170337,2170369,6291456,2170401,2170433,2170465,6291456,6291456,6291456,2170497,2170529,6291456,2170561]),\n new Uint32Array([2188673,6291456,2188705,2188737,2188769,6291456,6291456,2188801,6291456,2188833,6291456,2188865,6291456,2180929,2181505,2180897]),\n new Uint32Array([10489988,10490116,10490244,10490372,10490500,10490628,10490756,10490884,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147393,2147457,2147521,2147585,2147649,2147713,2147777,2147841]),\n new Uint32Array([23068672,23068672,0,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2241153,2241185,2241217,2215809,2241250,2241313,2241345,2241377,2217921,2241377,2241409,2215873,2241441,2241473,2241505,2241537]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220417,2220417,2220449,2220449,2220481,2220481,2220513,2220513,2220545,2220545,2220577,2220577,2220609,2220609,2220641,2220641]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2144002,0,6291456,6291456,0,0,6291456,6291456,6291456]),\n new Uint32Array([2167105,2167137,2167169,2167201,2167233,2167265,2167297,2167329,2167361,2167393,2167425,2167457,2167489,2167521,2167553,2167585]),\n new Uint32Array([10575521,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([2234146,2234210,2234274,2234338,2234402,2234466,2234530,2234594,2234658,2234722,2234786,2234850,2234914,2234978,2235042,2235106]),\n new Uint32Array([0,0,0,0,0,0,0,2180577,0,0,0,0,0,2180609,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456]),\n new Uint32Array([2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2242529,2242561,2242593,2242625,2242657,2242689,2242721,2242753,2207937,2218177,2242785,2242817,2242849,2242882,2242945,2242977]),\n new Uint32Array([2118049,2105345,2118241,2105441,2118433,2118529,2118625,2118721,2118817,2200257,2200289,2191809,2200321,2200353,2200385,2200417]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2185505,6291456,2185537,6291456,2185569,6291456,2185601,6291456,2185633,6291456,2185665,6291456,2185697,6291456,2185729,6291456]),\n new Uint32Array([2231970,2232034,2232098,2232162,2232226,2232290,2232354,2232418,2232482,2232546,2232610,2232674,2232738,2232802,2232866,2232930]),\n new Uint32Array([2218625,2246402,2246466,2246530,2246594,2246657,2246689,2246689,2218657,2219681,2246721,2246753,2246785,2246818,2246881,2208481]),\n new Uint32Array([2197025,2197057,2197089,2197121,2197153,2197185,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2219137,2216961,2219169,2219201,2219233,2219265,2219297,2217025,2215041,2219329,2217057,2219361,2217089,2219393,2197153,2219426]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713]),\n new Uint32Array([2243522,2243585,2243617,2243649,2243681,2210113,2243713,2243746,2243810,2243874,2243937,2243970,2244033,2244065,2244097,2244129]),\n new Uint32Array([2178017,6291456,2178049,6291456,2178081,6291456,2178113,6291456,2178145,6291456,2178177,6291456,2178209,6291456,2178241,6291456]),\n new Uint32Array([10553858,2165314,10518722,6291456,10518818,0,10518914,2130690,10519010,2130786,10519106,2130882,10519202,2165378,10554050,2165506]),\n new Uint32Array([0,0,2135491,2135587,2135683,2135779,2135875,2135971,2135971,2136067,2136163,2136259,2136355,2136355,2136451,2136547]),\n new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2220033,2220033,2220065,2220065,2220065,2220065,2220097,2220097,2220097,2220097,2220129,2220129,2220129,2220129,2220161,2220161]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2100897,2100898,2100899,2150018,2100865,2100866,2100867,2100868,2150082,2108481,2109858,2109859,2105569,2105505,2098241,2105601]),\n new Uint32Array([2097217,2097505,2097505,2097505,2097505,2165570,2165570,2165634,2165634,2165698,2165698,2097858,2097858,0,0,2097152]),\n new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([10503843,10503939,10504035,10504131,10504227,10504323,10504419,10504515,10504611,10504707,10504803,10504899,10504995,10491140,10491268,0]),\n new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,2235297,2220769,2235329,2235361]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2222401,2222433,2222465,10531394,2222497,2222529,2222561,0,2222593,2222625,2222657,2222689,2222721,2222753,2222785,0]),\n new Uint32Array([2184481,6291456,2184513,6291456,2184545,6291456,2184577,6291456,2184609,6291456,2184641,6291456,2184673,6291456,2184705,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2105570,2156034,2126947,2156098,2153666,2127043,2127139,2156162,0,2127235,2156226,2156290,2156354,2156418,2127331,2127427]),\n new Uint32Array([2215905,2207041,2153185,2241569,2241601,2241633,2241665,2241697,2241730,2241793,2241825,2241857,2241889,2241921,2241954,2242017]),\n new Uint32Array([2203777,6291456,2203809,6291456,2203841,6291456,2203873,6291456,2203905,6291456,2173121,2180993,2181249,2203937,2181313,0]),\n new Uint32Array([2168577,6291456,2168609,6291456,2168641,6291456,2168673,6291456,2168705,6291456,2168737,6291456,2168769,6291456,2168801,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2210113,2195521,2210145,2210177,2210209,2210241,2210273,2210305,2210337,2210369,2210401,2210433,2210465,2210497,2210529,2210561]),\n new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([2228706,2228770,2228834,2228898,2228962,2229026,2229090,2229154,2229218,2229282,2229346,2229410,2229474,2229538,2229602,2229666]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,18874368,18874368,18874368,0,0]),\n new Uint32Array([2133089,2133281,2133281,2133281,2133281,2160577,2160577,2160577,2160577,2097441,2097441,2097441,2097441,2133857,2133857,2133857]),\n new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089]),\n new Uint32Array([2178529,6291456,2178561,6291456,2178593,6291456,2178625,6291456,2178657,6291456,2178689,6291456,2178721,6291456,2178753,6291456]),\n new Uint32Array([2221025,2221025,2221057,2221057,2159329,2159329,2159329,2159329,2097217,2097217,2158914,2158914,2158978,2158978,2159042,2159042]),\n new Uint32Array([2208161,2208193,2208225,2208257,2194433,2208289,2208321,2208353,2208385,2208417,2208449,2208481,2208513,2208545,2208577,2208609]),\n new Uint32Array([2169217,6291456,2169249,6291456,2169281,6291456,2169313,6291456,2169345,6291456,2169377,6291456,2169409,6291456,2169441,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2133187,2133283,2133283,2133379,2133475,2133571,2133667,2133667,2133763,2133859,2133955,2134051,2134147,2134147,2134243,2134339]),\n new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,0]),\n new Uint32Array([2193089,2193121,2193153,2193185,2117665,2117569,2193217,2193249,2193281,2193313,2193345,2193377,2193409,2193441,2193473,2193505]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2184225,6291456,2184257,6291456,2184289,6291456,2184321,6291456,2184353,6291456,2184385,6291456,2184417,6291456,2184449,6291456]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2100833,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2200801,2200833,2200865,0]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2181153,2105505,2181185,2167617,2180993]),\n new Uint32Array([2160002,2160066,2160130,2160194,2160258,2132066,2131010,2131106,2106018,2131618,2160322,2131298,2132034,2131938,2137410,2132226]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([2183617,6291456,2183649,6291456,2183681,6291456,2183713,6291456,2183745,6291456,2183777,6291456,2183809,6291456,2183841,6291456]),\n new Uint32Array([0,6291456,6291456,0,6291456,0,0,6291456,6291456,0,6291456,0,0,6291456,0,0]),\n new Uint32Array([2250977,2251009,2251041,2251073,2195009,2251106,2251169,2251201,2251233,2251265,2251297,2251330,2251394,2251457,2251489,2251521]),\n new Uint32Array([2205729,2205761,2205793,2205825,2205857,2205889,2205921,2205953,2205985,2206017,2206049,2206081,2206113,2206145,2206177,2206209]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2143170,2168993,6291456,2169025,6291456,2169057,6291456,2169089,6291456,2143234,2169121,6291456,2169153,6291456,2169185,6291456]),\n new Uint32Array([23068672,23068672,2190689,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2248706,2248769,2248801,2248833,2248865,2248897,2248929,2248962,2249026,2249090,2249154,2240705,2249217,2249249,2249281,2249313]),\n new Uint32Array([10485857,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10495394,6291456,2098209,6291456,6291456,2097152,6291456,10531394]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),\n new Uint32Array([6291456,2186977,6291456,6291456,6291456,6291456,6291456,10537858,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2209601,2209633,2209665,2209697,2209729,2209761,2209793,2209825,2209857,2209889,2209921,2209953,2209985,2210017,2210049,2210081]),\n new Uint32Array([10501539,10501635,10501731,10501827,10501923,10502019,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),\n new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2194561,2194593,2194625,2119777,2119873,2194657,2194689,2194721,2194753,2194785,2194817,2194849,2194881,2194913,2194945,2194977]),\n new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569]),\n new Uint32Array([2222818,2222882,2222946,2223010,2223074,2223138,2223202,2223266,2223330,2223394,2223458,2223522,2223586,2223650,2223714,2223778]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672]),\n new Uint32Array([0,2179553,2179585,2179617,2179649,2144001,2179681,2179713,2179745,2179777,2179809,2156705,2179841,2156833,2179873,2179905]),\n new Uint32Array([6291456,23068672,6291456,2145602,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,6291456,0,0]),\n new Uint32Array([2196513,2196545,2196577,2196609,2196641,2196673,2196705,2196737,2196769,2196801,2196833,2196865,2196897,2196929,2196961,2196993]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2177281,6291456,2177313,6291456,2177345,6291456,2177377,6291456,2177409,6291456,2177441,6291456,2177473,6291456,2177505,6291456]),\n new Uint32Array([2187137,2221473,2221505,2221537,2221569,6291456,6291456,10610209,10610241,10537986,10537986,10537986,10537986,10609857,10609857,10609857]),\n new Uint32Array([2243009,2243041,2216033,2243074,2243137,2243169,2243201,2219617,2243233,2243265,2243297,2243329,2243362,2243425,2243457,2243489]),\n new Uint32Array([10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,2097152,4194304,4194304,0,0]),\n new Uint32Array([2143042,6291456,2143106,2143106,2168833,6291456,2168865,6291456,6291456,2168897,6291456,2168929,6291456,2168961,6291456,2143170]),\n new Uint32Array([6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2204193,2204225,2204257,2204289,2204321,2204353,2204385,2204417,2204449,2204481,2204513,2204545,2204577,2204609,2204641,2204673]),\n new Uint32Array([2202753,6291456,2202785,6291456,2202817,6291456,2202849,6291456,2202881,6291456,2202913,6291456,2202945,6291456,2202977,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321]),\n new Uint32Array([2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842,2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842]),\n new Uint32Array([2253313,2253346,2253409,2253441,2253473,2253505,2253537,2253569,2253601,2253634,2219393,2253697,2253729,2253761,2253793,2253825]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([2162562,2162626,2131362,2162690,2159938,2160002,2162754,2162818,2160130,2162882,2160194,2160258,2160834,2160898,2161026,2161090]),\n new Uint32Array([2175361,2175393,2175425,2175457,2175489,2175521,2175553,2175585,2175617,2175649,2175681,2175713,2175745,2175777,2175809,2175841]),\n new Uint32Array([2253858,2253921,2253954,2254018,2254082,2196737,2254145,2196865,2254177,2254209,2254241,2254273,2197025,2254306,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2202113,2204129,2188705,2204161]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953]),\n new Uint32Array([2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209]),\n new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,0,2108417,0,2111713,2100897,2111905]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([2175425,2175489,2175809,2175905,2175937,2175937,2176193,2176417,2180865,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,2143298,2143298,2143298,2143362,2143362,2143362,2143426,2143426,2143426,2171105,6291456,2171137]),\n new Uint32Array([2120162,2120258,2151618,2151682,2151746,2151810,2151874,2151938,2152002,2120035,2120131,2120227,2152066,2120323,2152130,2120419]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2195361,2142433,2236065,2236097,2236129,2236161,2118241,2117473,2236193,2236225,2236257,2236289,0,0,0,0]),\n new Uint32Array([2189281,6291456,2189313,6291456,2189345,6291456,2189377,6291456,2189409,6291456,2189441,6291456,2189473,6291456,2189505,6291456]),\n new Uint32Array([6291456,6291456,2145922,6291456,6291456,6291456,6291456,2145986,6291456,6291456,6291456,6291456,2146050,6291456,6291456,6291456]),\n new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10502113,10562017,10610401,10502177,10610433,10538049]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,2186401,0,2186433,0,2186465,0,2186497]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,23068672,23068672]),\n new Uint32Array([0,0,2198241,2198273,2198305,2198337,2198369,2198401,0,0,2198433,2198465,2198497,0,0,0]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,0,23068672,23068672,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,2133281,2097505,2105889,0,2097697,2135777,2097633,2097441]),\n new Uint32Array([2197889,2197921,2197953,2197985,2198017,2198049,2198081,2198113,2198145,2198177,2198209,2198241,2198273,2198305,2198337,2198369]),\n new Uint32Array([2132514,2132610,2160386,2133090,2133186,2160450,2160514,2133282,2160578,2133570,2106178,2160642,2133858,2160706,2160770,2134146]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,6291456,23068672,23068672,6291456,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([2184737,6291456,2184769,6291456,2184801,6291456,2184833,6291456,2184865,6291456,2184897,6291456,2184929,6291456,2184961,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,2186753,6291456,6291456,6291456,6291456,2186785,2186817,2186849,2173569,2186881,10496355,10495395,10575521]),\n new Uint32Array([0,0,2097729,0,0,0,0,2106017,0,2097505,0,2097185,0,2135777,2097633,2097441]),\n new Uint32Array([2189537,6291456,2189569,6291456,2189601,6291456,2189633,6291456,2189665,6291456,2189697,6291456,2189729,6291456,2189761,6291456]),\n new Uint32Array([2202497,6291456,2202529,6291456,2202561,6291456,2202593,6291456,2202625,6291456,2202657,6291456,2202689,6291456,2202721,6291456]),\n new Uint32Array([2245217,2218369,2245249,2245282,2245345,2245377,2245410,2245474,2245537,2245569,2245601,2245633,2245665,2245665,2245697,2245729]),\n new Uint32Array([6291456,0,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,23068672,6291456,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2097281,2105921,2097729,2106081,2097377,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([2176641,6291456,2176673,6291456,2176705,6291456,2176737,6291456,2176769,6291456,2176801,6291456,2176833,6291456,2176865,6291456]),\n new Uint32Array([2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2174369,2174369,0,0,2100833,2100737]),\n new Uint32Array([2116513,2190817,2190849,2190881,2190913,2190945,2116609,2190977,2191009,2191041,2191073,2117185,2191105,2191137,2191169,2191201]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),\n new Uint32Array([2167617,2167649,2167681,2167713,2167745,2167777,2167809,6291456,2167841,2167873,2167905,2167937,2167969,2168001,2168033,4240130]),\n new Uint32Array([2165122,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122,2134562,2132162,2132834,2136866]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2186209,2186241,2186273,2186305,2186337,2186369,0,0]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([0,0,23068672,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([0,10537921,10610689,10610273,10610497,10610529,10610305,10610721,10489601,10489697,10610337,10575617,10554529,2221761,2197217,10496577]),\n new Uint32Array([2105473,2105569,2105601,2112289,0,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),\n new Uint32Array([2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481]),\n new Uint32Array([2125346,2153410,2153474,2127394,2153538,2153602,2153666,2153730,2105507,2105476,2153794,2153858,2153922,2153986,2154050,2105794]),\n new Uint32Array([2200449,2119681,2200481,2153313,2199873,2199905,2199937,2200513,2200545,2200577,2200609,2119105,2119201,2119297,2119393,2119489]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2175777,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2222273,2197217,2221473,2221505,2221089,2222305,2200865,2099681,2104481,2222337,2099905,2120737,2222369,2103713,2100225,2098785]),\n new Uint32Array([2201377,6291456,2201409,6291456,2201441,6291456,2201473,6291456,2201505,6291456,2201537,6291456,2201569,6291456,6291456,23068672]),\n new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),\n new Uint32Array([2200897,6291456,2200929,6291456,2200961,6291456,2200993,6291456,2201025,6291456,2180865,6291456,2201057,6291456,2201089,6291456]),\n new Uint32Array([0,0,0,0,0,23068672,23068672,0,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2161154,2161410,2138658,2161474,2161538,2097666,2097186,2097474,2162946,2132450,2163010,2163074,2136162,2163138,2161666,2161730]),\n new Uint32Array([2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953]),\n new Uint32Array([0,0,0,0,0,0,23068672,23068672,0,0,0,0,2145410,2145474,0,6291456]),\n new Uint32Array([2244161,2216065,2212769,2244193,2244225,2244257,2244290,2244353,2244385,2244417,2244449,2218273,2244481,2244514,2244577,2244609]),\n new Uint32Array([2125730,2125699,2125795,2125891,2125987,2154114,2154178,2154242,2154306,2154370,2154434,2154498,2126082,2126178,2126274,2126083]),\n new Uint32Array([2237665,2237697,2237697,2237697,2237730,2237793,2237825,2237857,2237890,2237953,2237985,2238017,2238049,2238081,2238113,2238145]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150146,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2214369,2238593,2238625,2238657,2238689,2238721,2238753,2238785,2238817,2238850,2238913,2238945,2238977,2235457,2239009,2239041]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([2252066,2252130,2252193,2252225,2252257,2252290,2252353,2252385,2252417,2252449,2252481,2252513,2252545,2252578,2252641,2252673]),\n new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,2197857]),\n new Uint32Array([2224866,2224930,2224994,2225058,2225122,2225186,2225250,2225314,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2219490,2219554,2219617,2219649,2219681,2219714,2219778,2219842,2219905,2219937,0,0,0,0,0,0]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),\n new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665]),\n new Uint32Array([2220161,2220161,2220193,2220193,2220193,2220193,2220225,2220225,2220225,2220225,2220257,2220257,2220257,2220257,2220289,2220289]),\n new Uint32Array([2192673,2192705,2192737,2192769,2192801,2192833,2192865,2118049,2192897,2117473,2117761,2192929,2192961,2192993,2193025,2193057]),\n new Uint32Array([2179297,6291456,2179329,6291456,2179361,6291456,2179393,6291456,2179425,6291456,2179457,6291456,2179489,6291456,2179521,6291456]),\n new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2235745,2235777,2193633,2235809,2235841,2235873,2235905,2235937,2235969,2116513,2116705,2236001,2200513,2199905,2200545,2236033]),\n new Uint32Array([2113153,2108481,2113345,2113441,2232993,2233025,0,0,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761]),\n new Uint32Array([2170593,6291456,2170625,6291456,2170657,6291456,2170689,2170721,6291456,2170753,6291456,6291456,2170785,6291456,2170817,2170849]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2166786,2166850,0,0,0,0]),\n new Uint32Array([23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,0]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2134562,2132162,2132834,2136866,2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058]),\n new Uint32Array([6291456,6291456,2098337,2101441,10531458,2153473,6291456,6291456,10531522,2100737,2108193,6291456,2106499,2106595,2106691,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2233122,2233186,2233250,2233314,2233378,2233442,2233506,2233570,2233634,2233698,2233762,2233826,2233890,2233954,2234018,2234082]),\n new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2205217,2205249,2205281,2205313,2205345,2205377,2205409,2205441,2205473,2205505,2205537,2205569,2205601,2205633,2205665,2205697]),\n new Uint32Array([6291456,0,6291456,0,0,0,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([2173601,2173761,2174081,2173569,2174241,2174113,2173953,6291456,2174305,6291456,2174337,6291456,2174369,6291456,2174401,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2152450,2152514,2099653,2104452,2099813,2122243,2099973,2152578,2122339,2122435,2122531,2122627,2122723,2104580,2122819,2152642]),\n new Uint32Array([2236385,2236417,2236449,2236482,2236545,2215425,2236577,2236609,2236641,2236673,2215457,2236705,2236737,2236770,2215489,2236833]),\n new Uint32Array([2163394,2159746,2163458,2131362,2163522,2160130,2163778,2132226,2163842,2132898,2163906,2161410,2138658,2097666,2136162,2163650]),\n new Uint32Array([2218721,2246913,2246946,2216385,2247010,2247074,2215009,2247137,2247169,2216481,2247201,2247233,2247266,2247330,2247330,0]),\n new Uint32Array([2129730,2129762,2129858,2129731,2129827,2156482,2156482,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0,0,0,0,6291456,0,0]),\n new Uint32Array([2203969,2204001,2181377,2204033,2204065,6291456,2204097,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2169473,6291456,2169505,6291456,2169537,6291456,2169569,6291456,2169601,6291456,2169633,6291456,2169665,6291456,2169697,6291456]),\n new Uint32Array([2141542,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220801,2220801,2220801,2220801,2220833,2220833,2220865,2220865,2220865,2220865,2220897,2220897,2220897,2220897,2139873,2139873]),\n new Uint32Array([0,0,0,0,0,23068672,23068672,0,0,0,0,0,0,0,6291456,0]),\n new Uint32Array([2214849,2218433,2218465,2218497,2218529,2218561,2214881,2218593,2218625,2218657,2218689,2218721,2218753,2216545,2218785,2218817]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058,2165122,2132802,2132706,2164866]),\n new Uint32Array([2207649,2207681,2207713,2207745,2207777,2207809,2207841,2207873,2207905,2207937,2207969,2208001,2208033,2208065,2208097,2208129]),\n new Uint32Array([2123683,2105092,2152706,2123779,2105220,2152770,2100453,2098755,2123906,2124002,2124098,2124194,2124290,2124386,2124482,2124578]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,0,0,0,0,0,0,0,10485857]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([10508163,10508259,10508355,10508451,2200129,2200161,2192737,2200193,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2203553,6291456,2203585,6291456,6291456,6291456,2203617,6291456,2203649,6291456,2203681,6291456,2203713,6291456,2203745,6291456]),\n new Uint32Array([18884449,18884065,23068672,18884417,18884034,18921185,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18874368]),\n new Uint32Array([2247393,2247426,2247489,2247521,2247553,2247586,2247649,2247681,2247713,2247745,2247777,2247810,2247873,2247905,2247937,2247969]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),\n new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,2160577,2133857,2235297,0,2235329,0]),\n new Uint32Array([2182593,6291456,2182625,6291456,2182657,6291456,2182689,6291456,2182721,6291456,2182753,6291456,2182785,6291456,2182817,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102402,2102403,6291456,2110050]),\n new Uint32Array([2149890,2108323,2149954,6291456,2113441,6291456,2149057,6291456,2113441,6291456,2105473,2167265,2111137,2105505,6291456,2108353]),\n new Uint32Array([2219105,2219137,2195233,2251554,2251617,2251649,2251681,2251713,2251746,2251810,2251873,2251905,2251937,2251970,2252033,2219169]),\n new Uint32Array([2203009,6291456,2203041,6291456,2203073,6291456,2203105,6291456,2203137,6291456,2203169,6291456,2203201,6291456,2203233,6291456]),\n new Uint32Array([2128195,2128291,2128387,2128483,2128579,2128675,2128771,2128867,2128963,2129059,2129155,2129251,2129347,2129443,2129539,2129635]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2140964,2141156,2140966,2141158,2141350]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2225378,2225442,2225506,2225570,2225634,2225698,2225762,2225826,2225890,2225954,2226018,2226082,2226146,2226210,2226274,2226338]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417]),\n new Uint32Array([2108353,2108417,0,2105601,2108193,2157121,2157313,2157377,2157441,2100897,6291456,2108419,2173953,2173633,2173633,2173953]),\n new Uint32Array([2111713,2173121,2111905,2098177,2173153,2173185,2173217,2113153,2113345,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2190753]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,2197249,6291456,2117377,2197281,2197313,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,23068672]),\n new Uint32Array([2173281,6291456,2173313,6291456,2173345,6291456,2173377,6291456,0,0,10532546,6291456,6291456,6291456,10562017,2173441]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),\n new Uint32Array([23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2159426,2159490,2159554,2159362,2159618,2159682,2139522,2136450,2159746,2159810,2159874,2130978,2131074,2131266,2131362,2159938]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2203233,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2203265,6291456,2203297,6291456,2203329,2203361,6291456]),\n new Uint32Array([6291456,6291456,2148418,2148482,2148546,0,6291456,2148610,2186529,2186561,2148417,2148545,2148482,10495778,2143969,10495778]),\n new Uint32Array([2134146,2139426,2160962,2134242,2161218,2161282,2161346,2161410,2138658,2134722,2134434,2134818,2097666,2097346,2097698,2105986]),\n new Uint32Array([2198881,2198913,2198945,2198977,2199009,2199041,2199073,2199105,2199137,2199169,2199201,2199233,2199265,2199297,2199329,2199361]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([10610561,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([2183873,6291456,2183905,6291456,2183937,6291456,2183969,6291456,2184001,6291456,2184033,6291456,2184065,6291456,2184097,6291456]),\n new Uint32Array([2244642,2244706,2244769,2244801,2218305,2244833,2244865,2244897,2244929,2244961,2244993,2245026,2245089,2245122,2245185,0]),\n new Uint32Array([6291456,6291456,2116513,2116609,2116705,2116801,2199873,2199905,2199937,2199969,2190913,2200001,2200033,2200065,2200097,2191009]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2180673,2180705,2180737,2180769,2180801,2180833,0,0]),\n new Uint32Array([2098081,2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150402]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,2145666,2145730,6291456,6291456]),\n new Uint32Array([2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665]),\n new Uint32Array([2187073,6291456,6291456,6291456,6291456,2098241,2098241,2108353,2100897,2111905,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102404,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2100612,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10485857]),\n new Uint32Array([2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),\n new Uint32Array([2217697,2217729,2217761,2217793,2217825,2217857,2217889,2217921,2217953,2215873,2217985,2215905,2218017,2218049,2218081,2218113]),\n new Uint32Array([2211233,2218849,2216673,2218881,2218913,2218945,2218977,2219009,2216833,2219041,2215137,2219073,2216865,2209505,2219105,2216897]),\n new Uint32Array([2240097,2240129,2240161,2240193,2240225,2240257,2240289,2240321,2240353,2240386,2240449,2240481,2240513,2240545,2207905,2240578]),\n new Uint32Array([6291456,6291456,2202273,6291456,2202305,6291456,2202337,6291456,2202369,6291456,2202401,6291456,2202433,6291456,2202465,6291456]),\n new Uint32Array([0,23068672,23068672,18923394,23068672,18923458,18923522,18884099,18923586,18884195,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2201121,6291456,2201153,6291456,2201185,6291456,2201217,6291456,2201249,6291456,2201281,6291456,2201313,6291456,2201345,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([2211041,2211073,2211105,2211137,2211169,2211201,2211233,2211265,2211297,2211329,2211361,2211393,2211425,2211457,2211489,2211521]),\n new Uint32Array([2181825,6291456,2181857,6291456,2181889,6291456,2181921,6291456,2181953,6291456,2181985,6291456,2182017,6291456,2182049,6291456]),\n new Uint32Array([2162337,2097633,2097633,2097633,2097633,2132705,2132705,2132705,2132705,2097153,2097153,2097153,2097153,2133089,2133089,2133089]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,2148545,6291456,2173473,6291456,2148865,6291456,2173505,6291456,2173537,6291456,2173569,6291456,2149121,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2207137,2207169,2207201,2207233,2207265,2207297,2207329,2207361,2207393,2207425,2207457,2207489,2207521,2207553,2207585,2207617]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,23068672,23068672,0,0,0,0,0,0]),\n new Uint32Array([2198401,2198433,2198465,2198497,0,2198529,2198561,2198593,2198625,2198657,2198689,2198721,2198753,2198785,2198817,2198849]),\n new Uint32Array([2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),\n new Uint32Array([2216385,2118721,2216417,2216449,2216481,2216513,2216545,2211233,2216577,2216609,2216641,2216673,2216705,2216737,2216737,2216769]),\n new Uint32Array([2216801,2216833,2216865,2216897,2216929,2216961,2216993,2215169,2217025,2217057,2217089,2217121,2217154,2217217,0,0]),\n new Uint32Array([2210593,2191809,2210625,2210657,2210689,2210721,2210753,2210785,2210817,2210849,2191297,2210881,2210913,2210945,2210977,2211009]),\n new Uint32Array([0,0,2105825,0,0,2111905,2105473,0,0,2112289,2108193,2112481,2112577,0,2098305,2108321]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,2097153,2134241,0,2132705,0,0,2131297,0,2133089,0,2133857,0,2220769,0,2235361]),\n new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,6291456,6291456,14680064]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2171873,6291456,2171905,6291456,2171937,6291456,2171969,6291456,2172001,6291456,2172033,6291456,2172065,6291456,2172097,6291456]),\n new Uint32Array([2220929,2220929,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2133857,2134145,2134145,2134145,2134145,2134241,2134241,2134241,2134241,2105889,2105889,2105889,2105889,2097185,2097185,2097185]),\n new Uint32Array([2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,10499619,10499715,10499811,10499907]),\n new Uint32Array([0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2144322,2144386,2144450,2144514,2144578,2144642,2144706,2144770]),\n new Uint32Array([23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456]),\n new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0,0,2111905,2105473,2105569]),\n new Uint32Array([2236321,2236353,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2152194,2121283,2103684,2103812,2097986,2098533,2097990,2098693,2098595,2098853,2099013,2103940,2121379,2121475,2121571,2104068]),\n new Uint32Array([2206241,2206273,2206305,2206337,2206369,2206401,2206433,2206465,2206497,2206529,2206561,2206593,2206625,2206657,2206689,2206721]),\n new Uint32Array([6291456,6291456,6291456,6291456,16777216,16777216,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,10538818,10538882,6291456,6291456,2150338]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2214369,2214401,2214433,2214465,2214497,2214529,2214561,2214593,2194977,2214625,2195073,2214657,2214689,2214721,6291456,6291456]),\n new Uint32Array([2097152,2097152,2097152,2097152,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2182081,6291456,2182113,6291456,2182145,6291456,2182177,6291456,2182209,6291456,2182241,6291456,2182273,6291456,2182305,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146881,2146945,2147009,2147073,2147137,2147201,2147265,2147329]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672]),\n new Uint32Array([0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2122915,2123011,2123107,2104708,2123203,2123299,2123395,2100133,2104836,2100290,2100293,2104962,2104964,2098052,2123491,2123587]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([6291456,2171169,6291456,2171201,6291456,2171233,6291456,2171265,6291456,2171297,6291456,2171329,6291456,6291456,2171361,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,2148994,2149058,2149122,0,6291456,2149186,2186945,2173537,2148993,2149121,2149058,10531458,10496066,0]),\n new Uint32Array([2195009,2195041,2195073,2195105,2195137,2195169,2195201,2195233,2195265,2195297,2195329,2195361,2195393,2195425,2195457,2195489]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,0,0,6291456,6291456]),\n new Uint32Array([2182849,6291456,2182881,6291456,2182913,6291456,2182945,6291456,2182977,6291456,2183009,6291456,2183041,6291456,2183073,6291456]),\n new Uint32Array([2211553,2210081,2211585,2211617,2211649,2211681,2211713,2211745,2211777,2211809,2209569,2211841,2211873,2211905,2211937,2211969]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2166594,2127298,2166658,2142978,2141827,2166722]),\n new Uint32Array([2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2185761,2185793,2185825,2185857,2185889,2185921,0,0]),\n new Uint32Array([6291456,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456]),\n new Uint32Array([0,0,0,2220961,2220961,2220961,2220961,2144193,2144193,2159201,2159201,2159265,2159265,2144194,2220993,2220993]),\n new Uint32Array([2192641,2235393,2235425,2152257,2116609,2235457,2235489,2200065,2235521,2235553,2235585,2212449,2235617,2235649,2235681,2235713]),\n new Uint32Array([2194049,2194081,2194113,2194145,2194177,2194209,2194241,2194273,2194305,2194337,2194369,2194401,2194433,2194465,2194497,2194529]),\n new Uint32Array([2196673,2208641,2208673,2208705,2208737,2208769,2208801,2208833,2208865,2208897,2208929,2208961,2208993,2209025,2209057,2209089]),\n new Uint32Array([2191681,2191713,2191745,2191777,2153281,2191809,2191841,2191873,2191905,2191937,2191969,2192001,2192033,2192065,2192097,2192129]),\n new Uint32Array([2230946,2231010,2231074,2231138,2231202,2231266,2231330,2231394,2231458,2231522,2231586,2231650,2231714,2231778,2231842,2231906]),\n new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2185953,2185985,2186017,2186049,2186081,2186113,2186145,2186177]),\n new Uint32Array([2139811,2139907,2097284,2105860,2105988,2106116,2106244,2097444,2097604,2097155,10485778,10486344,2106372,6291456,0,0]),\n new Uint32Array([2110051,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2172385,6291456,2172417,6291456,2172449,6291456,2172481,6291456,2172513,6291456,2172545,6291456,2172577,6291456,2172609,6291456]),\n new Uint32Array([0,0,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2249345,2249377,2249409,2249441,2249473,2249505,2249537,2249570,2210209,2249633,2249665,2249697,2249729,2249761,2249793,2216769]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2187169,2187201,2187233,2187265,2187297,2187329,2187361,2187393,2187425,2187457,2187489,2187521,2187553,2187585,2187617,2187649]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,6291456,6291456,0,0,0,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([2182337,6291456,2182369,6291456,2182401,6291456,2182433,6291456,2182465,6291456,2182497,6291456,2182529,6291456,2182561,6291456]),\n new Uint32Array([2138179,2138275,2138371,2138467,2134243,2134435,2138563,2138659,2138755,2138851,2138947,2139043,2138947,2138755,2139139,2139235]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2250498,2250562,2250625,2250657,2208321,2250689,2250721,2250753,2250785,2250817,2250849,2218945,2250881,2250913,2250945,0]),\n new Uint32Array([2170369,2105569,2098305,2108481,2173249,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2100897,2111905,2105473,2105569,2105601,0,2108193,0,0,0,2098305,2108321,2108289,2100865,2113153,2108481]),\n new Uint32Array([2100897,2100897,2105569,2105569,6291456,2112289,2149826,6291456,6291456,2112481,2112577,2098177,2098177,2098177,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456,6291456]),\n new Uint32Array([6291456,2169953,2169985,6291456,2170017,6291456,2170049,2170081,6291456,2170113,2170145,2170177,6291456,6291456,2170209,2170241]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220641,2220641,2220673,2220673,2220673,2220673,2220705,2220705,2220705,2220705,2220737,2220737,2220737,2220737,2220769,2220769]),\n new Uint32Array([2127650,2127746,2127842,2127938,2128034,2128130,2128226,2128322,2128418,2127523,2127619,2127715,2127811,2127907,2128003,2128099]),\n new Uint32Array([2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177]),\n new Uint32Array([0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2204705,2204737,2204769,2204801,2204833,2204865,2204897,2204929,2204961,2204993,2205025,2205057,2205089,2205121,2205153,2205185]),\n new Uint32Array([2176385,6291456,2176417,6291456,2176449,6291456,2176481,6291456,2176513,6291456,2176545,6291456,2176577,6291456,2176609,6291456]),\n new Uint32Array([2195521,2195553,2195585,2195617,2195649,2195681,2117857,2195713,2195745,2195777,2195809,2195841,2195873,2195905,2195937,2195969]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456]),\n new Uint32Array([2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113]),\n new Uint32Array([2131586,2132450,2135970,2135778,2161602,2136162,2163650,2161794,2135586,2163714,2137186,2131810,2160290,2135170,2097506,2159554]),\n new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,0,0,0,0]),\n new Uint32Array([2116513,2116609,2116705,2116801,2116897,2116993,2117089,2117185,2117281,2117377,2117473,2117569,2117665,2117761,2117857,2117953]),\n new Uint32Array([2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100802,2101154,2101282,2101410,2101538,2101666,2101794]),\n new Uint32Array([2100289,2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2098977,2150241,2150305]),\n new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,2109955,6291456,6291456,0,0,0,0]),\n new Uint32Array([18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,0,0]),\n new Uint32Array([2130979,2131075,2131075,2131171,2131267,2131363,2131459,2131555,2131651,2131651,2131747,2131843,2131939,2132035,2132131,2132227]),\n new Uint32Array([0,2177793,6291456,2177825,6291456,2177857,6291456,2177889,6291456,2177921,6291456,2177953,6291456,2177985,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2113345,0,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),\n new Uint32Array([2136643,2136739,2136835,2136931,2137027,2137123,2137219,2137315,2137411,2137507,2137603,2137699,2137795,2137891,2137987,2138083]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([2174433,6291456,2174465,6291456,2174497,6291456,2174529,6291456,2174561,6291456,2174593,6291456,2174625,6291456,2174657,6291456]),\n new Uint32Array([0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),\n new Uint32Array([10496547,10496643,2105505,2149698,6291456,10496739,10496835,2170273,6291456,2149762,2105825,2111713,2111713,2111713,2111713,2168673]),\n new Uint32Array([6291456,2143490,2143490,2143490,2171649,6291456,2171681,2171713,2171745,6291456,2171777,6291456,2171809,6291456,2171841,6291456]),\n new Uint32Array([2159106,2159106,2159170,2159170,2159234,2159234,2159298,2159298,2159298,2159362,2159362,2159362,2106401,2106401,2106401,2106401]),\n new Uint32Array([2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137]),\n new Uint32Array([2108417,2181217,2181249,2181281,2170433,2170401,2181313,2181345,2181377,2181409,2181441,2181473,2181505,2181537,2170529,2181569]),\n new Uint32Array([2218433,2245761,2245793,2245825,2245857,2245890,2245953,2245986,2209665,2246050,2246113,2246146,2246210,2246274,2246337,2246369]),\n new Uint32Array([2230754,2230818,2230882,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2184129,6291456,2184161,6291456,2184193,6291456,6291456,6291456,6291456,6291456,2146818,2183361,6291456,6291456,2142978,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2135170,2097506,2130691,2130787,2130883,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122]),\n new Uint32Array([2108515,2108611,2100740,2108707,2108803,2108899,2108995,2109091,2109187,2109283,2109379,2109475,2109571,2109667,2109763,2100738]),\n new Uint32Array([2102788,2102916,2103044,2120515,2103172,2120611,2120707,2098373,2103300,2120803,2120899,2120995,2103428,2103556,2121091,2121187]),\n new Uint32Array([2158082,2158146,0,2158210,2158274,0,2158338,2158402,2158466,2129922,2158530,2158594,2158658,2158722,2158786,2158850]),\n new Uint32Array([10499619,10499715,10499811,10499907,10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059]),\n new Uint32Array([2239585,2239618,2239681,2239713,0,2191969,2239745,2239777,2192033,2239809,2239841,2239874,2239937,2239970,2240033,2240065]),\n new Uint32Array([2252705,2252738,2252801,2252833,2252865,2252897,2252930,2252994,2253057,2253089,2253121,2253154,2253217,2253250,2219361,2219361]),\n new Uint32Array([2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,10538050,10538114,10538178,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2226402,2226466,2226530,2226594,2226658,2226722,2226786,2226850,2226914,2226978,2227042,2227106,2227170,2227234,2227298,2227362]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,2144066,2144130,2144194,2144258,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2124674,2124770,2123875,2123971,2124067,2124163,2124259,2124355,2124451,2124547,2124643,2124739,2124835,2124931,2125027,2125123]),\n new Uint32Array([2168065,6291456,2168097,6291456,2168129,6291456,2168161,6291456,2168193,6291456,2168225,6291456,2168257,6291456,2168289,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,2100610,2100611,6291456,2107842,2107843,6291456,6291456,6291456,6291456,10537922,6291456,10537986,6291456]),\n new Uint32Array([2174849,2174881,2174913,2174945,2174977,2175009,2175041,2175073,2175105,2175137,2175169,2175201,2175233,2175265,2175297,2175329]),\n new Uint32Array([2154562,2154626,2154690,2154754,2141858,2154818,2154882,2127298,2154946,2127298,2155010,2155074,2155138,2155202,2155266,2155202]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0]),\n new Uint32Array([2200641,2150786,2150850,2150914,2150978,2151042,2106562,2151106,2150562,2151170,2151234,2151298,2151362,2151426,2151490,2151554]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456]),\n new Uint32Array([2220289,2220289,2220321,2220321,2220321,2220321,2220353,2220353,2220353,2220353,2220385,2220385,2220385,2220385,2220417,2220417]),\n new Uint32Array([2155330,2155394,0,2155458,2155522,2155586,2105732,0,2155650,2155714,2155778,2125314,2155842,2155906,2126274,2155970]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0]),\n new Uint32Array([2097729,2106017,2106017,2106017,2106017,2131297,2131297,2131297,2131297,2106081,2106081,2162049,2162049,2105953,2105953,2162337]),\n new Uint32Array([2097185,2097697,2097697,2097697,2097697,2135777,2135777,2135777,2135777,2097377,2097377,2097377,2097377,2097601,2097601,2097217]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),\n new Uint32Array([2139331,2139427,2139523,2139043,2133571,2132611,2139619,2139715,0,0,0,0,0,0,0,0]),\n new Uint32Array([2174113,2174145,2100897,2098177,2108289,2100865,2173601,2173633,2173985,2174113,2174145,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,23068672,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,18923778,23068672,23068672,23068672,23068672,18923842,23068672,23068672,23068672,23068672,18923906,23068672,23068672,23068672]),\n new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,0,2133857,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2177537,6291456,2177569,6291456,2177601,6291456,2177633,6291456,2177665,6291456,2177697,6291456,2177729,6291456,2177761,6291456]),\n new Uint32Array([2212481,2212513,2212545,2212577,2197121,2212609,2212641,2212673,2212705,2212737,2212769,2212801,2212833,2212865,2212897,2212929]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2098241,2108353,2170209,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,6291456,2108193,2172417,2112481,2098177]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n];\nvar blockIdxes = new Uint16Array([616,616,565,147,161,411,330,2,131,131,328,454,241,408,86,86,696,113,285,350,325,301,473,214,639,232,447,64,369,598,124,672,567,223,621,154,107,86,86,86,86,86,86,505,86,68,634,86,218,218,218,218,486,218,218,513,188,608,216,86,217,463,668,85,700,360,184,86,86,86,647,402,153,10,346,718,662,260,145,298,117,1,443,342,138,54,563,86,240,572,218,70,387,86,118,460,641,602,86,86,306,218,86,692,86,86,86,86,86,162,707,86,458,26,86,218,638,86,86,86,86,86,65,449,86,86,306,183,86,58,391,667,86,157,131,131,131,131,86,433,131,406,31,218,247,86,86,693,218,581,351,86,438,295,69,462,45,126,173,650,14,295,69,97,168,187,641,78,523,390,69,108,287,664,173,219,83,295,69,108,431,426,173,694,412,115,628,52,257,398,641,118,501,121,69,579,151,423,173,620,464,121,69,382,151,476,173,27,53,121,86,594,578,226,173,86,632,130,86,96,228,268,641,622,563,86,86,21,148,650,131,131,321,43,144,343,381,531,131,131,178,20,86,399,156,375,164,541,30,60,715,198,92,118,131,131,86,86,306,407,86,280,457,196,488,358,131,131,244,86,86,143,86,86,86,86,86,667,563,86,86,86,86,86,86,86,86,86,86,86,86,86,336,363,86,86,336,86,86,380,678,67,86,86,86,678,86,86,86,512,86,307,86,708,86,86,86,86,86,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,563,307,86,86,86,86,86,104,450,337,86,720,86,32,450,397,86,86,86,587,218,558,708,708,293,708,86,86,86,86,86,694,205,86,8,86,86,86,86,549,86,667,697,697,679,86,458,460,86,86,650,86,708,543,86,86,86,245,86,86,86,140,218,127,708,708,458,197,131,131,131,131,500,86,86,483,251,86,306,510,515,86,722,86,86,86,65,201,86,86,483,580,470,86,86,86,368,131,131,131,694,114,110,555,86,86,123,721,163,142,713,418,86,317,675,209,218,218,218,371,545,592,629,490,603,199,46,320,525,680,310,279,388,111,42,252,593,607,235,617,410,377,50,548,135,356,17,520,189,116,392,600,349,332,482,699,690,535,119,106,451,71,152,667,131,218,218,265,671,637,492,504,533,683,269,269,658,86,86,86,86,86,86,86,86,86,491,619,86,86,6,86,86,86,86,86,86,86,86,86,86,86,229,86,86,86,86,86,86,86,86,86,86,86,86,667,86,86,171,131,118,131,656,206,234,571,89,334,670,246,311,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,534,86,86,86,86,86,86,82,86,86,86,86,86,430,86,86,86,86,86,86,86,86,86,599,86,324,86,470,69,640,264,131,626,101,174,86,86,667,233,105,73,374,394,221,204,84,28,326,86,86,471,86,86,86,109,573,86,171,200,200,200,200,218,218,86,86,86,86,460,131,131,131,86,506,86,86,86,86,86,220,404,34,614,47,442,305,25,612,338,601,648,7,344,255,131,131,51,86,312,507,563,86,86,86,86,588,86,86,86,86,86,530,511,86,458,3,435,384,556,522,230,527,86,118,86,86,717,86,137,273,79,181,484,23,93,112,655,249,417,703,370,87,98,313,684,585,155,465,596,481,695,18,416,428,61,701,706,282,643,495,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,86,86,86,171,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,650,131,422,542,420,263,24,172,86,86,86,86,86,566,86,86,132,540,395,353,494,519,19,485,284,472,131,131,131,16,714,86,211,708,86,86,86,694,698,86,86,483,704,708,218,272,86,86,120,86,159,478,86,307,247,86,86,663,597,459,627,667,86,86,277,455,39,302,86,250,86,86,86,271,99,452,306,281,329,400,200,86,86,362,549,352,646,461,323,586,86,86,4,708,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,717,86,518,86,86,650,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,125,554,480,300,613,72,333,288,561,544,604,48,719,91,169,176,590,224,76,191,29,559,560,231,537,166,477,538,256,437,131,131,469,167,40,0,685,266,441,705,239,642,475,568,640,610,299,673,517,318,385,22,202,180,179,359,424,215,90,66,521,653,467,682,453,409,479,88,131,661,35,303,15,262,666,630,712,131,131,618,659,175,218,195,347,193,227,261,150,165,709,546,294,569,710,270,413,376,524,55,242,38,419,529,170,657,3,304,122,379,278,131,651,86,67,576,458,458,131,131,86,86,86,86,86,86,86,118,309,86,86,547,86,86,86,86,667,650,664,131,131,86,86,56,131,131,131,131,131,131,131,131,86,307,86,86,86,664,238,650,86,86,717,86,118,86,86,315,86,59,86,86,574,549,131,131,340,57,436,86,86,86,86,86,86,458,708,499,691,62,86,650,86,86,694,86,86,86,319,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,86,549,694,131,131,131,131,131,131,131,131,131,77,86,86,139,86,502,86,86,86,667,595,131,131,131,86,12,86,13,86,609,131,131,131,131,86,86,86,625,86,669,86,86,182,129,86,5,694,104,86,86,86,86,131,131,86,86,386,171,86,86,86,345,86,324,86,589,86,213,36,131,131,131,131,131,86,86,86,86,104,131,131,131,141,290,80,677,86,86,86,267,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,515,86,86,33,136,669,86,711,515,86,86,550,640,86,104,708,515,86,159,372,717,86,86,444,515,86,86,663,37,86,563,460,86,390,624,702,131,131,131,131,389,59,708,86,86,341,208,708,635,295,69,108,431,508,100,190,131,131,131,131,131,131,131,131,86,86,86,649,516,660,131,131,86,86,86,218,631,708,131,131,131,131,131,131,131,131,131,131,86,86,341,575,238,514,131,131,86,86,86,218,291,708,307,131,86,86,306,367,708,131,131,131,86,378,697,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,615,253,86,86,86,292,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,104,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,69,86,341,553,549,86,307,86,86,645,275,455,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,708,131,131,131,131,131,131,86,86,86,86,86,86,667,460,86,86,86,86,86,86,86,86,86,86,86,86,717,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,104,86,667,459,131,131,131,131,131,131,86,458,225,86,86,86,516,549,11,390,405,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,460,44,218,197,711,515,131,131,131,131,664,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,118,307,104,286,591,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,681,86,86,75,185,314,582,86,358,496,474,86,104,131,86,86,86,86,146,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,171,86,640,131,131,131,131,131,131,131,131,246,503,689,339,674,81,258,415,439,128,562,366,414,246,503,689,583,222,557,316,636,665,186,355,95,670,246,503,689,339,674,557,258,415,439,186,355,95,670,246,503,689,446,644,536,652,331,532,335,440,274,421,297,570,74,425,364,425,606,552,403,509,134,365,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,218,218,218,498,218,218,577,627,551,497,572,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,553,354,236,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,296,455,131,131,456,243,103,86,41,459,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,9,276,158,716,393,564,383,489,401,654,210,654,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,650,86,86,86,86,86,86,717,667,563,563,563,86,549,102,686,133,246,605,86,448,86,86,207,307,131,131,131,641,86,177,611,445,373,194,584,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,307,171,86,86,86,86,86,86,86,717,86,86,86,86,86,460,131,131,650,86,86,86,694,708,86,86,694,86,458,131,131,131,131,131,131,667,694,289,650,667,131,131,86,640,131,131,664,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,460,86,86,86,86,86,86,86,86,86,86,86,86,86,458,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,466,203,149,429,94,432,160,687,539,63,237,283,192,248,348,259,427,526,396,676,254,468,487,212,327,623,49,633,322,493,434,688,357,361,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131]);\nvar mappingStr = \"صلى الله عليه وسلمجل جلالهキロメートルrad∕s2エスクードキログラムキロワットグラムトンクルゼイロサンチームパーセントピアストルファラッドブッシェルヘクタールマンションミリバールレントゲン′′′′1⁄10viii(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫(오전)(오후)アパートアルファアンペアイニングエーカーカラットカロリーキュリーギルダークローネサイクルシリングバーレルフィートポイントマイクロミクロンメガトンリットルルーブル株式会社kcalm∕s2c∕kgاكبرمحمدصلعمرسولریال1⁄41⁄23⁄4 ̈́ྲཱྀླཱྀ ̈͂ ̓̀ ̓́ ̓͂ ̔̀ ̔́ ̔͂ ̈̀‵‵‵a/ca/sc/oc/utelfax1⁄71⁄91⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83⁄85⁄87⁄8xii0⁄3∮∮∮(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)::====(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)pte10月11月12月ergltdアールインチウォンオンスオームカイリガロンガンマギニーケースコルナコーポセンチダースノットハイツパーツピクルフランペニヒヘルツペンスページベータボルトポンドホールホーンマイルマッハマルクヤードヤールユアンルピー10点11点12点13点14点15点16点17点18点19点20点21点22点23点24点hpabardm2dm3khzmhzghzthzmm2cm2km2mm3cm3km3kpampagpalogmilmolppmv∕ma∕m10日11日12日13日14日15日16日17日18日19日20日21日22日23日24日25日26日27日28日29日30日31日galffifflשּׁשּׂ ٌّ ٍّ َّ ُّ ِّ ّٰـَّـُّـِّتجمتحجتحمتخمتمجتمحتمخجمححميحمىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمىفخمقمحقمملحملحيلحىلججلخملمحمحجمحيمجحمجممخممجخهمجهممنحمنحىنجمنجىنمينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمينحيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلے𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯〔s〕ppv〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕 ̄ ́ ̧ssi̇ijl·ʼndžljnjdz ̆ ̇ ̊ ̨ ̃ ̋ ιեւاٴوٴۇٴيٴक़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀླྀྒྷྜྷྡྷྦྷྫྷྐྵaʾἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧιὰιαιάιᾶι ͂ὴιηιήιῆιὼιωιώιῶι ̳!! ̅???!!?rs°c°fnosmtmivix⫝̸ ゙ ゚よりコト333435참고주의363738394042444546474849503月4月5月6月7月8月9月hgevギガデシドルナノピコビルペソホンリラレムdaauovpciu平成昭和大正明治naμakakbmbgbpfnfμfμgmgμlmldlklfmnmμmpsnsμsmsnvμvkvpwnwμwmwkwkωmωbqcccddbgyhainkkktlnlxphprsrsvwbstմնմեմիվնմխיִײַשׁשׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּתּוֹבֿכֿפֿאלئائەئوئۇئۆئۈئېئىئجئحئمئيبجبمبىبيتىتيثجثمثىثيخحضجضمطحظمغجفجفحفىفيقحقىقيكاكجكحكخكلكىكينخنىنيهجهىهييىذٰرٰىٰئرئزئنبزبنترتزتنثرثزثنمانرنزننيريزئخئهبهتهصخنههٰثهسهشهطىطيعىعيغىغيسىسيشىشيصىصيضىضيشخشرسرصرضراً ًـًـّ ْـْلآلألإ𝅗𝅥0,1,2,3,4,5,6,7,8,9,wzhvsdwcmcmddjほかココàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįĵķĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷÿźżɓƃƅɔƈɖɗƌǝəɛƒɠɣɩɨƙɯɲɵơƣƥʀƨʃƭʈưʊʋƴƶʒƹƽǎǐǒǔǖǘǚǜǟǡǣǥǧǩǫǭǯǵƕƿǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟƞȣȥȧȩȫȭȯȱȳⱥȼƚⱦɂƀʉʌɇɉɋɍɏɦɹɻʁʕͱͳʹͷ;ϳέίόύβγδεζθκλνξοπρστυφχψϊϋϗϙϛϝϟϡϣϥϧϩϫϭϯϸϻͻͼͽѐёђѓєѕіїјљњћќѝўџабвгдежзийклмнопрстуфхцчшщъыьэюяѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯաբգդզէըթժլծկհձղճյշոչպջռստրցփքօֆ་ⴧⴭნᏰᏱᏲᏳᏴᏵꙋɐɑᴂɜᴖᴗᴝᴥɒɕɟɡɥɪᵻʝɭᶅʟɱɰɳɴɸʂƫᴜʐʑḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿἐἑἒἓἔἕἰἱἲἳἴἵἶἷὀὁὂὃὄὅὑὓὕὗᾰᾱὲΐῐῑὶΰῠῡὺῥ`ὸ‐+−∑〈〉ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞⱡɫᵽɽⱨⱪⱬⱳⱶȿɀⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳬⳮⳳⵡ母龟丨丶丿乙亅亠人儿入冂冖冫几凵刀力勹匕匚匸卜卩厂厶又口囗士夂夊夕女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无曰欠止歹殳毋比毛氏气爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠.〒卄卅ᄁᆪᆬᆭᄄᆰᆱᆲᆳᆴᆵᄚᄈᄡᄊ짜ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄩᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᇱᇲᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ上中下甲丙丁天地問幼箏우秘男適優印注項写左右医宗夜テヌモヨヰヱヲꙁꙃꙅꙇꙉꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛꜣꜥꜧꜩꜫꜭꜯꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝺꝼᵹꝿꞁꞃꞅꞇꞌꞑꞓꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩɬʞʇꭓꞵꞷꬷꭒᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯ豈更賈滑串句契喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧蘆虜路露魯鷺碌祿綠菉錄論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏諾丹寧怒率異北磻便復不泌數索參塞省葉說殺沈拾若掠略亮兩凉梁糧良諒量勵呂廬旅濾礪閭驪麗黎曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂廉念捻殮簾獵令囹嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料燎療蓼遼暈阮劉杻柳流溜琉留硫紐類戮陸倫崙淪輪律慄栗隆利吏履易李梨泥理痢罹裏裡離匿溺吝燐璘藺隣鱗麟林淋臨笠粒狀炙識什茶刺切度拓糖宅洞暴輻降廓兀嗀塚晴凞猪益礼神祥福靖精蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層悔慨憎懲敏既暑梅海渚漢煮爫琢碑祉祈祐祖禍禎穀突節縉繁署者臭艹著褐視謁謹賓贈辶難響頻恵𤋮舘並况全侀充冀勇勺啕喙嗢墳奄奔婢嬨廒廙彩徭惘慎愈慠戴揄搜摒敖望杖滛滋瀞瞧爵犯瑱甆画瘝瘟盛直睊着磌窱类絛缾荒華蝹襁覆調請諭變輸遲醙鉶陼韛頋鬒𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎עםٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھۓڭۋۅۉ、〖〗—–_{}【】《》「」『』[]#&*-<>\\\\$%@ءؤة\\\"'^|~⦅⦆・ゥャ¢£¬¦¥₩│←↑→↓■○𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻𐳀𐳁𐳂𐳃𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟ıȷ∇∂𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃ٮڡٯ字双多解交映無前後再新初終販声吹演投捕遊指禁空合満申割営配得可丽丸乁𠄢你侻倂偺備像㒞𠘺兔兤具𠔜㒹內𠕋冗冤仌冬𩇟刃㓟刻剆剷㔕包匆卉博即卽卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善喫喳嗂圖圗噑噴壮城埴堍型堲報墬𡓤売壷夆夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾𡧈寃寘寳𡬘寿将㞁屠峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶𪎒𢌱舁弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜𢛔惇慈慌慺憲憤憯懞戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敬𣀊旣書晉㬙㬈㫤冒冕最暜肭䏙朡杞杓𣏃㭉柺枅桒𣑭梎栟椔楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殻𣪍𡴋𣫺汎𣲼沿泍汧洖派浩浸涅𣴞洴港湮㴳滇𣻑淹潮𣽞𣾎濆瀹瀛㶖灊災灷炭𠔥煅𤉣熜爨牐𤘈犀犕𤜵𤠔獺王㺬玥㺸瑇瑜璅瓊㼛甤𤰶甾𤲒𢆟瘐𤾡𤾸𥁄㿼䀈𥃳𥃲𥄙𥄳眞真瞋䁆䂖𥐝硎䃣𥘦𥚚𥛅秫䄯穊穏𥥼𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舄辞䑫芑芋芝劳花芳芽苦𦬼茝荣莭茣莽菧荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虧虩蚩蚈蜎蛢蜨蝫螆蟡蠁䗹衠𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頩𩖶飢䬳餩馧駂駾䯎𩬰鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑䵖黾鼅鼏鼖𪘀\";\n\nfunction mapChar(codePoint) {\n if (codePoint >= 0x30000) {\n // High planes are special cased.\n if (codePoint >= 0xE0100 && codePoint <= 0xE01EF)\n return 18874368;\n return 0;\n }\n return blocks[blockIdxes[codePoint >> 4]][codePoint & 15];\n}\n\nreturn {\n mapStr: mappingStr,\n mapChar: mapChar\n};\n}));\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","(function(root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define(['punycode', './idna-map'], function(punycode, idna_map) {\n return factory(punycode, idna_map);\n });\n }\n else if (typeof exports === 'object') {\n module.exports = factory(require('punycode'), require('./idna-map'));\n }\n else {\n root.uts46 = factory(root.punycode, root.idna_map);\n }\n}(this, function(punycode, idna_map) {\n\n function mapLabel(label, useStd3ASCII, transitional) {\n var mapped = [];\n var chars = punycode.ucs2.decode(label);\n for (var i = 0; i < chars.length; i++) {\n var cp = chars[i];\n var ch = punycode.ucs2.encode([chars[i]]);\n var composite = idna_map.mapChar(cp);\n var flags = (composite >> 23);\n var kind = (composite >> 21) & 3;\n var index = (composite >> 5) & 0xffff;\n var length = composite & 0x1f;\n var value = idna_map.mapStr.substr(index, length);\n if (kind === 0 || (useStd3ASCII && (flags & 1))) {\n throw new Error(\"Illegal char \" + ch);\n }\n else if (kind === 1) {\n mapped.push(value);\n }\n else if (kind === 2) {\n mapped.push(transitional ? value : ch);\n }\n /* istanbul ignore next */\n else if (kind === 3) {\n mapped.push(ch);\n }\n }\n\n var newLabel = mapped.join(\"\").normalize(\"NFC\");\n return newLabel;\n }\n\n function process(domain, transitional, useStd3ASCII) {\n /* istanbul ignore if */\n if (useStd3ASCII === undefined)\n useStd3ASCII = false;\n var mappedIDNA = mapLabel(domain, useStd3ASCII, transitional);\n\n // Step 3. Break\n var labels = mappedIDNA.split(\".\");\n\n // Step 4. Convert/Validate\n labels = labels.map(function(label) {\n if (label.startsWith(\"xn--\")) {\n label = punycode.decode(label.substring(4));\n validateLabel(label, useStd3ASCII, false);\n }\n else {\n validateLabel(label, useStd3ASCII, transitional);\n }\n return label;\n });\n\n return labels.join(\".\");\n }\n\n function validateLabel(label, useStd3ASCII, transitional) {\n // 2. The label must not contain a U+002D HYPHEN-MINUS character in both the\n // third position and fourth positions.\n if (label[2] === '-' && label[3] === '-')\n throw new Error(\"Failed to validate \" + label);\n\n // 3. The label must neither begin nor end with a U+002D HYPHEN-MINUS\n // character.\n if (label.startsWith('-') || label.endsWith('-'))\n throw new Error(\"Failed to validate \" + label);\n\n // 4. The label must not contain a U+002E ( . ) FULL STOP.\n // this should nerver happen as label is chunked internally by this character\n /* istanbul ignore if */\n if (label.includes('.'))\n throw new Error(\"Failed to validate \" + label);\n\n if (mapLabel(label, useStd3ASCII, transitional) !== label)\n throw new Error(\"Failed to validate \" + label);\n\n // 5. The label must not begin with a combining mark, that is:\n // General_Category=Mark.\n var ch = label.codePointAt(0);\n if (idna_map.mapChar(ch) & (0x2 << 23))\n throw new Error(\"Label contains illegal character: \" + ch);\n }\n\n function toAscii(domain, options) {\n if (options === undefined)\n options = {};\n var transitional = 'transitional' in options ? options.transitional : true;\n var useStd3ASCII = 'useStd3ASCII' in options ? options.useStd3ASCII : false;\n var verifyDnsLength = 'verifyDnsLength' in options ? options.verifyDnsLength : false;\n var labels = process(domain, transitional, useStd3ASCII).split('.');\n var asciiLabels = labels.map(punycode.toASCII);\n var asciiString = asciiLabels.join('.');\n var i;\n if (verifyDnsLength) {\n if (asciiString.length < 1 || asciiString.length > 253) {\n throw new Error(\"DNS name has wrong length: \" + asciiString);\n }\n for (i = 0; i < asciiLabels.length; i++) {//for .. of replacement\n var label = asciiLabels[i];\n if (label.length < 1 || label.length > 63)\n throw new Error(\"DNS label has wrong length: \" + label);\n }\n }\n return asciiString;\n }\n\n function toUnicode(domain, options) {\n if (options === undefined)\n options = {};\n var useStd3ASCII = 'useStd3ASCII' in options ? options.useStd3ASCII : false;\n return process(domain, false, useStd3ASCII);\n }\n\n return {\n toUnicode: toUnicode,\n toAscii: toAscii,\n };\n}));\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\n}\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('readable-stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('readable-stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidStatusCodeError = exports.InvalidCertError = void 0;\nconst DEFAULT_OPT = Object.freeze({\n redirect: true,\n expectStatusCode: 200,\n headers: {},\n full: false,\n keepAlive: true,\n cors: false,\n referrer: false,\n sslAllowSelfSigned: false,\n _redirectCount: 0,\n});\nclass InvalidCertError extends Error {\n constructor(msg, fingerprint256) {\n super(msg);\n this.fingerprint256 = fingerprint256;\n }\n}\nexports.InvalidCertError = InvalidCertError;\nclass InvalidStatusCodeError extends Error {\n constructor(statusCode) {\n super(`Request Failed. Status Code: ${statusCode}`);\n this.statusCode = statusCode;\n }\n}\nexports.InvalidStatusCodeError = InvalidStatusCodeError;\nfunction detectType(b, type) {\n if (!type || type === 'text' || type === 'json') {\n try {\n let text = new TextDecoder('utf8', { fatal: true }).decode(b);\n if (type === 'text')\n return text;\n try {\n return JSON.parse(text);\n }\n catch (err) {\n if (type === 'json')\n throw err;\n return text;\n }\n }\n catch (err) {\n if (type === 'text' || type === 'json')\n throw err;\n }\n }\n return b;\n}\nlet agents = {};\nfunction fetchNode(url, _options) {\n let options = { ...DEFAULT_OPT, ..._options };\n const http = require('http');\n const https = require('https');\n const zlib = require('zlib');\n const { promisify } = require('util');\n const { resolve: urlResolve } = require('url');\n const isSecure = !!/^https/.test(url);\n let opts = {\n method: options.method || 'GET',\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n };\n const compactFP = (s) => s.replace(/:| /g, '').toLowerCase();\n if (options.keepAlive) {\n const agentOpt = {\n keepAlive: true,\n keepAliveMsecs: 30 * 1000,\n maxFreeSockets: 1024,\n maxCachedSessions: 1024,\n };\n const agentKey = [\n isSecure,\n isSecure && options.sslPinnedCertificates?.map((i) => compactFP(i)).sort(),\n ].join();\n opts.agent =\n agents[agentKey] || (agents[agentKey] = new (isSecure ? https : http).Agent(agentOpt));\n }\n if (options.type === 'json')\n opts.headers['Content-Type'] = 'application/json';\n if (options.data) {\n if (!options.method)\n opts.method = 'POST';\n opts.body = options.type === 'json' ? JSON.stringify(options.data) : options.data;\n }\n opts.headers = { ...opts.headers, ...options.headers };\n if (options.sslAllowSelfSigned)\n opts.rejectUnauthorized = false;\n const handleRes = async (res) => {\n const status = res.statusCode;\n if (options.redirect && 300 <= status && status < 400 && res.headers['location']) {\n if (options._redirectCount == 10)\n throw new Error('Request failed. Too much redirects.');\n options._redirectCount += 1;\n return await fetchNode(urlResolve(url, res.headers['location']), options);\n }\n if (options.expectStatusCode && status !== options.expectStatusCode) {\n res.resume();\n throw new InvalidStatusCodeError(status);\n }\n let buf = [];\n for await (const chunk of res)\n buf.push(chunk);\n let bytes = Buffer.concat(buf);\n const encoding = res.headers['content-encoding'];\n if (encoding === 'br')\n bytes = await promisify(zlib.brotliDecompress)(bytes);\n if (encoding === 'gzip' || encoding === 'deflate')\n bytes = await promisify(zlib.unzip)(bytes);\n const body = detectType(bytes, options.type);\n if (options.full)\n return { headers: res.headers, status, body };\n return body;\n };\n return new Promise((resolve, reject) => {\n const handleError = async (err) => {\n if (err && err.code === 'DEPTH_ZERO_SELF_SIGNED_CERT') {\n try {\n await fetchNode(url, { ...options, sslAllowSelfSigned: true, sslPinnedCertificates: [] });\n }\n catch (e) {\n if (e && e.fingerprint256) {\n err = new InvalidCertError(`Self-signed SSL certificate: ${e.fingerprint256}`, e.fingerprint256);\n }\n }\n }\n reject(err);\n };\n const req = (isSecure ? https : http).request(url, opts, (res) => {\n res.on('error', handleError);\n (async () => {\n try {\n resolve(await handleRes(res));\n }\n catch (error) {\n reject(error);\n }\n })();\n });\n req.on('error', handleError);\n const pinned = options.sslPinnedCertificates?.map((i) => compactFP(i));\n const mfetchSecureConnect = (socket) => {\n const fp256 = compactFP(socket.getPeerCertificate()?.fingerprint256 || '');\n if (!fp256 && socket.isSessionReused())\n return;\n if (pinned.includes(fp256))\n return;\n req.emit('error', new InvalidCertError(`Invalid SSL certificate: ${fp256} Expected: ${pinned}`, fp256));\n return req.abort();\n };\n if (options.sslPinnedCertificates) {\n req.on('socket', (socket) => {\n const hasListeners = socket\n .listeners('secureConnect')\n .map((i) => (i.name || '').replace('bound ', ''))\n .includes('mfetchSecureConnect');\n if (hasListeners)\n return;\n socket.on('secureConnect', mfetchSecureConnect.bind(null, socket));\n });\n }\n if (options.keepAlive)\n req.setNoDelay(true);\n if (opts.body)\n req.write(opts.body);\n req.end();\n });\n}\nconst SAFE_HEADERS = new Set(['Accept', 'Accept-Language', 'Content-Language', 'Content-Type'].map((i) => i.toLowerCase()));\nconst FORBIDDEN_HEADERS = new Set(['Accept-Charset', 'Accept-Encoding', 'Access-Control-Request-Headers', 'Access-Control-Request-Method',\n 'Connection', 'Content-Length', 'Cookie', 'Cookie2', 'Date', 'DNT', 'Expect', 'Host', 'Keep-Alive', 'Origin', 'Referer', 'TE', 'Trailer',\n 'Transfer-Encoding', 'Upgrade', 'Via'].map((i) => i.toLowerCase()));\nasync function fetchBrowser(url, _options) {\n let options = { ...DEFAULT_OPT, ..._options };\n const headers = new Headers();\n if (options.type === 'json')\n headers.set('Content-Type', 'application/json');\n let parsed = new URL(url);\n if (parsed.username) {\n const auth = btoa(`${parsed.username}:${parsed.password}`);\n headers.set('Authorization', `Basic ${auth}`);\n parsed.username = '';\n parsed.password = '';\n }\n url = '' + parsed;\n for (let k in options.headers) {\n const name = k.toLowerCase();\n if (SAFE_HEADERS.has(name) || (options.cors && !FORBIDDEN_HEADERS.has(name)))\n headers.set(k, options.headers[k]);\n }\n let opts = { headers, redirect: options.redirect ? 'follow' : 'manual' };\n if (!options.referrer)\n opts.referrerPolicy = 'no-referrer';\n if (options.cors)\n opts.mode = 'cors';\n if (options.data) {\n if (!options.method)\n opts.method = 'POST';\n opts.body = options.type === 'json' ? JSON.stringify(options.data) : options.data;\n }\n const res = await fetch(url, opts);\n if (options.expectStatusCode && res.status !== options.expectStatusCode)\n throw new InvalidStatusCodeError(res.status);\n const body = detectType(new Uint8Array(await res.arrayBuffer()), options.type);\n if (options.full)\n return { headers: Object.fromEntries(res.headers.entries()), status: res.status, body };\n return body;\n}\nconst IS_NODE = !!(typeof process == 'object' &&\n process.versions &&\n process.versions.node &&\n process.versions.v8);\nfunction fetchUrl(url, options) {\n const fn = IS_NODE ? fetchNode : fetchBrowser;\n return fn(url, options);\n}\nexports.default = fetchUrl;\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","'use strict'\n\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","'use strict'\n\nfunction decode (input, alphabet) {\n input = input.replace(new RegExp('=', 'g'), '')\n const length = input.length\n\n let bits = 0\n let value = 0\n\n let index = 0\n const output = new Uint8Array((length * 5 / 8) | 0)\n\n for (let i = 0; i < length; i++) {\n value = (value << 5) | alphabet.indexOf(input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n\nfunction encode (buffer, alphabet) {\n const length = buffer.byteLength\n const view = new Uint8Array(buffer)\n const padding = alphabet.indexOf('=') === alphabet.length - 1\n\n if (padding) {\n alphabet = alphabet.substring(0, alphabet.length - 1)\n }\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < length; i++) {\n value = (value << 8) | view[i]\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n\nmodule.exports = function base32 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return encode(Uint8Array.from(input), alphabet)\n }\n\n return encode(input, alphabet)\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base32 character')\n }\n }\n\n return decode(input, alphabet)\n }\n }\n}\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base64 (alphabet) {\n // The alphabet is only used to know:\n // 1. If padding is enabled (must contain '=')\n // 2. If the output must be url-safe (must contain '-' and '_')\n // 3. If the input of the output function is valid\n // The alphabets from RFC 4648 are always used.\n const padding = alphabet.indexOf('=') > -1\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\n\n return {\n encode (input) {\n let output = ''\n\n if (typeof input === 'string') {\n output = Buffer.from(input).toString('base64')\n } else {\n output = input.toString('base64')\n }\n\n if (url) {\n output = output.replace(/\\+/g, '-').replace(/\\//g, '_')\n }\n\n const pad = output.indexOf('=')\n if (pad > 0 && !padding) {\n output = output.substring(0, pad)\n }\n\n return output\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base64 character')\n }\n }\n\n return Buffer.from(input, 'base64')\n }\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n * @module Multibase\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst constants = require('./constants')\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.names = Object.freeze(Object.keys(constants.names))\nexports.codes = Object.freeze(Object.keys(constants.codes))\n\nconst errNotSupported = new Error('Unsupported encoding')\n\n/**\n * Create a new buffer with the multibase varint+code.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be prefixed with multibase.\n * @memberof Multibase\n * @returns {Buffer}\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded buffer')\n }\n const base = getBase(nameOrCode)\n const codeBuf = Buffer.from(base.code)\n\n const name = base.name\n validEncode(name, buf)\n return Buffer.concat([codeBuf, buf])\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be encoded.\n * @returns {Buffer}\n * @memberof Multibase\n */\nfunction encode (nameOrCode, buf) {\n const base = getBase(nameOrCode)\n const name = base.name\n\n return multibase(name, Buffer.from(base.encode(buf)))\n}\n\n/**\n * Takes a buffer or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Buffer|string} bufOrString\n * @returns {Buffer}\n * @memberof Multibase\n *\n */\nfunction decode (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n const code = bufOrString.substring(0, 1)\n bufOrString = bufOrString.substring(1, bufOrString.length)\n\n if (typeof bufOrString === 'string') {\n bufOrString = Buffer.from(bufOrString)\n }\n\n const base = getBase(code)\n return Buffer.from(base.decode(bufOrString.toString()))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Buffer|string} bufOrString\n * @returns {boolean}\n * @memberof Multibase\n */\nfunction isEncoded (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\n return false\n }\n\n const code = bufOrString.substring(0, 1)\n try {\n const base = getBase(code)\n return base.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * @param {string} name\n * @param {Buffer} buf\n * @private\n * @returns {undefined}\n */\nfunction validEncode (name, buf) {\n const base = getBase(name)\n base.decode(buf.toString())\n}\n\nfunction getBase (nameOrCode) {\n let base\n\n if (constants.names[nameOrCode]) {\n base = constants.names[nameOrCode]\n } else if (constants.codes[nameOrCode]) {\n base = constants.codes[nameOrCode]\n } else {\n throw errNotSupported\n }\n\n if (!base.isImplemented()) {\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\n }\n\n return base\n}\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","'use strict'\nconst varint = require('varint')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","'use strict'\n\nconst baseTable = require('./base-table.json')\nconst varintEncode = require('./util').varintEncode\n\n// map for codecName -> codeVarintBuffer\nconst varintTable = {}\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n varintTable[encodingName] = varintEncode(code)\n}\n\nmodule.exports = Object.freeze(varintTable)\n","'use strict'\n\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","'use strict'\n\nfunction decode (input, alphabet) {\n input = input.replace(new RegExp('=', 'g'), '')\n const length = input.length\n\n let bits = 0\n let value = 0\n\n let index = 0\n const output = new Uint8Array((length * 5 / 8) | 0)\n\n for (let i = 0; i < length; i++) {\n value = (value << 5) | alphabet.indexOf(input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n\nfunction encode (buffer, alphabet) {\n const length = buffer.byteLength\n const view = new Uint8Array(buffer)\n const padding = alphabet.indexOf('=') === alphabet.length - 1\n\n if (padding) {\n alphabet = alphabet.substring(0, alphabet.length - 1)\n }\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < length; i++) {\n value = (value << 8) | view[i]\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n\nmodule.exports = function base32 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return encode(Uint8Array.from(input), alphabet)\n }\n\n return encode(input, alphabet)\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base32 character')\n }\n }\n\n return decode(input, alphabet)\n }\n }\n}\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base64 (alphabet) {\n // The alphabet is only used to know:\n // 1. If padding is enabled (must contain '=')\n // 2. If the output must be url-safe (must contain '-' and '_')\n // 3. If the input of the output function is valid\n // The alphabets from RFC 4648 are always used.\n const padding = alphabet.indexOf('=') > -1\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\n\n return {\n encode (input) {\n let output = ''\n\n if (typeof input === 'string') {\n output = Buffer.from(input).toString('base64')\n } else {\n output = input.toString('base64')\n }\n\n if (url) {\n output = output.replace(/\\+/g, '-').replace(/\\//g, '_')\n }\n\n const pad = output.indexOf('=')\n if (pad > 0 && !padding) {\n output = output.substring(0, pad)\n }\n\n return output\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base64 character')\n }\n }\n\n return Buffer.from(input, 'base64')\n }\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n * @module Multibase\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst constants = require('./constants')\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.names = Object.freeze(Object.keys(constants.names))\nexports.codes = Object.freeze(Object.keys(constants.codes))\n\n/**\n * Create a new buffer with the multibase varint+code.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be prefixed with multibase.\n * @memberof Multibase\n * @returns {Buffer}\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded buffer')\n }\n const base = getBase(nameOrCode)\n const codeBuf = Buffer.from(base.code)\n\n const name = base.name\n validEncode(name, buf)\n return Buffer.concat([codeBuf, buf])\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be encoded.\n * @returns {Buffer}\n * @memberof Multibase\n */\nfunction encode (nameOrCode, buf) {\n const base = getBase(nameOrCode)\n const name = base.name\n\n return multibase(name, Buffer.from(base.encode(buf)))\n}\n\n/**\n * Takes a buffer or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Buffer|string} bufOrString\n * @returns {Buffer}\n * @memberof Multibase\n *\n */\nfunction decode (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n const code = bufOrString.substring(0, 1)\n bufOrString = bufOrString.substring(1, bufOrString.length)\n\n if (typeof bufOrString === 'string') {\n bufOrString = Buffer.from(bufOrString)\n }\n\n const base = getBase(code)\n return Buffer.from(base.decode(bufOrString.toString()))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Buffer|string} bufOrString\n * @returns {boolean}\n * @memberof Multibase\n */\nfunction isEncoded (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\n return false\n }\n\n const code = bufOrString.substring(0, 1)\n try {\n const base = getBase(code)\n return base.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * @param {string} name\n * @param {Buffer} buf\n * @private\n * @returns {undefined}\n */\nfunction validEncode (name, buf) {\n const base = getBase(name)\n base.decode(buf.toString())\n}\n\nfunction getBase (nameOrCode) {\n let base\n\n if (constants.names[nameOrCode]) {\n base = constants.names[nameOrCode]\n } else if (constants.codes[nameOrCode]) {\n base = constants.codes[nameOrCode]\n } else {\n throw new Error('Unsupported encoding')\n }\n\n if (!base.isImplemented()) {\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\n }\n\n return base\n}\n","/* eslint quote-props: off */\n/* eslint key-spacing: off */\n'use strict'\n\nexports.names = Object.freeze({\n 'identity': 0x0,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'dbl-sha2-256': 0x56,\n 'sha3-224': 0x17,\n 'sha3-256': 0x16,\n 'sha3-384': 0x15,\n 'sha3-512': 0x14,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1A,\n 'keccak-256': 0x1B,\n 'keccak-384': 0x1C,\n 'keccak-512': 0x1D,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'Skein256-8': 0xb301,\n 'Skein256-16': 0xb302,\n 'Skein256-24': 0xb303,\n 'Skein256-32': 0xb304,\n 'Skein256-40': 0xb305,\n 'Skein256-48': 0xb306,\n 'Skein256-56': 0xb307,\n 'Skein256-64': 0xb308,\n 'Skein256-72': 0xb309,\n 'Skein256-80': 0xb30a,\n 'Skein256-88': 0xb30b,\n 'Skein256-96': 0xb30c,\n 'Skein256-104': 0xb30d,\n 'Skein256-112': 0xb30e,\n 'Skein256-120': 0xb30f,\n 'Skein256-128': 0xb310,\n 'Skein256-136': 0xb311,\n 'Skein256-144': 0xb312,\n 'Skein256-152': 0xb313,\n 'Skein256-160': 0xb314,\n 'Skein256-168': 0xb315,\n 'Skein256-176': 0xb316,\n 'Skein256-184': 0xb317,\n 'Skein256-192': 0xb318,\n 'Skein256-200': 0xb319,\n 'Skein256-208': 0xb31a,\n 'Skein256-216': 0xb31b,\n 'Skein256-224': 0xb31c,\n 'Skein256-232': 0xb31d,\n 'Skein256-240': 0xb31e,\n 'Skein256-248': 0xb31f,\n 'Skein256-256': 0xb320,\n 'Skein512-8': 0xb321,\n 'Skein512-16': 0xb322,\n 'Skein512-24': 0xb323,\n 'Skein512-32': 0xb324,\n 'Skein512-40': 0xb325,\n 'Skein512-48': 0xb326,\n 'Skein512-56': 0xb327,\n 'Skein512-64': 0xb328,\n 'Skein512-72': 0xb329,\n 'Skein512-80': 0xb32a,\n 'Skein512-88': 0xb32b,\n 'Skein512-96': 0xb32c,\n 'Skein512-104': 0xb32d,\n 'Skein512-112': 0xb32e,\n 'Skein512-120': 0xb32f,\n 'Skein512-128': 0xb330,\n 'Skein512-136': 0xb331,\n 'Skein512-144': 0xb332,\n 'Skein512-152': 0xb333,\n 'Skein512-160': 0xb334,\n 'Skein512-168': 0xb335,\n 'Skein512-176': 0xb336,\n 'Skein512-184': 0xb337,\n 'Skein512-192': 0xb338,\n 'Skein512-200': 0xb339,\n 'Skein512-208': 0xb33a,\n 'Skein512-216': 0xb33b,\n 'Skein512-224': 0xb33c,\n 'Skein512-232': 0xb33d,\n 'Skein512-240': 0xb33e,\n 'Skein512-248': 0xb33f,\n 'Skein512-256': 0xb340,\n 'Skein512-264': 0xb341,\n 'Skein512-272': 0xb342,\n 'Skein512-280': 0xb343,\n 'Skein512-288': 0xb344,\n 'Skein512-296': 0xb345,\n 'Skein512-304': 0xb346,\n 'Skein512-312': 0xb347,\n 'Skein512-320': 0xb348,\n 'Skein512-328': 0xb349,\n 'Skein512-336': 0xb34a,\n 'Skein512-344': 0xb34b,\n 'Skein512-352': 0xb34c,\n 'Skein512-360': 0xb34d,\n 'Skein512-368': 0xb34e,\n 'Skein512-376': 0xb34f,\n 'Skein512-384': 0xb350,\n 'Skein512-392': 0xb351,\n 'Skein512-400': 0xb352,\n 'Skein512-408': 0xb353,\n 'Skein512-416': 0xb354,\n 'Skein512-424': 0xb355,\n 'Skein512-432': 0xb356,\n 'Skein512-440': 0xb357,\n 'Skein512-448': 0xb358,\n 'Skein512-456': 0xb359,\n 'Skein512-464': 0xb35a,\n 'Skein512-472': 0xb35b,\n 'Skein512-480': 0xb35c,\n 'Skein512-488': 0xb35d,\n 'Skein512-496': 0xb35e,\n 'Skein512-504': 0xb35f,\n 'Skein512-512': 0xb360,\n 'Skein1024-8': 0xb361,\n 'Skein1024-16': 0xb362,\n 'Skein1024-24': 0xb363,\n 'Skein1024-32': 0xb364,\n 'Skein1024-40': 0xb365,\n 'Skein1024-48': 0xb366,\n 'Skein1024-56': 0xb367,\n 'Skein1024-64': 0xb368,\n 'Skein1024-72': 0xb369,\n 'Skein1024-80': 0xb36a,\n 'Skein1024-88': 0xb36b,\n 'Skein1024-96': 0xb36c,\n 'Skein1024-104': 0xb36d,\n 'Skein1024-112': 0xb36e,\n 'Skein1024-120': 0xb36f,\n 'Skein1024-128': 0xb370,\n 'Skein1024-136': 0xb371,\n 'Skein1024-144': 0xb372,\n 'Skein1024-152': 0xb373,\n 'Skein1024-160': 0xb374,\n 'Skein1024-168': 0xb375,\n 'Skein1024-176': 0xb376,\n 'Skein1024-184': 0xb377,\n 'Skein1024-192': 0xb378,\n 'Skein1024-200': 0xb379,\n 'Skein1024-208': 0xb37a,\n 'Skein1024-216': 0xb37b,\n 'Skein1024-224': 0xb37c,\n 'Skein1024-232': 0xb37d,\n 'Skein1024-240': 0xb37e,\n 'Skein1024-248': 0xb37f,\n 'Skein1024-256': 0xb380,\n 'Skein1024-264': 0xb381,\n 'Skein1024-272': 0xb382,\n 'Skein1024-280': 0xb383,\n 'Skein1024-288': 0xb384,\n 'Skein1024-296': 0xb385,\n 'Skein1024-304': 0xb386,\n 'Skein1024-312': 0xb387,\n 'Skein1024-320': 0xb388,\n 'Skein1024-328': 0xb389,\n 'Skein1024-336': 0xb38a,\n 'Skein1024-344': 0xb38b,\n 'Skein1024-352': 0xb38c,\n 'Skein1024-360': 0xb38d,\n 'Skein1024-368': 0xb38e,\n 'Skein1024-376': 0xb38f,\n 'Skein1024-384': 0xb390,\n 'Skein1024-392': 0xb391,\n 'Skein1024-400': 0xb392,\n 'Skein1024-408': 0xb393,\n 'Skein1024-416': 0xb394,\n 'Skein1024-424': 0xb395,\n 'Skein1024-432': 0xb396,\n 'Skein1024-440': 0xb397,\n 'Skein1024-448': 0xb398,\n 'Skein1024-456': 0xb399,\n 'Skein1024-464': 0xb39a,\n 'Skein1024-472': 0xb39b,\n 'Skein1024-480': 0xb39c,\n 'Skein1024-488': 0xb39d,\n 'Skein1024-496': 0xb39e,\n 'Skein1024-504': 0xb39f,\n 'Skein1024-512': 0xb3a0,\n 'Skein1024-520': 0xb3a1,\n 'Skein1024-528': 0xb3a2,\n 'Skein1024-536': 0xb3a3,\n 'Skein1024-544': 0xb3a4,\n 'Skein1024-552': 0xb3a5,\n 'Skein1024-560': 0xb3a6,\n 'Skein1024-568': 0xb3a7,\n 'Skein1024-576': 0xb3a8,\n 'Skein1024-584': 0xb3a9,\n 'Skein1024-592': 0xb3aa,\n 'Skein1024-600': 0xb3ab,\n 'Skein1024-608': 0xb3ac,\n 'Skein1024-616': 0xb3ad,\n 'Skein1024-624': 0xb3ae,\n 'Skein1024-632': 0xb3af,\n 'Skein1024-640': 0xb3b0,\n 'Skein1024-648': 0xb3b1,\n 'Skein1024-656': 0xb3b2,\n 'Skein1024-664': 0xb3b3,\n 'Skein1024-672': 0xb3b4,\n 'Skein1024-680': 0xb3b5,\n 'Skein1024-688': 0xb3b6,\n 'Skein1024-696': 0xb3b7,\n 'Skein1024-704': 0xb3b8,\n 'Skein1024-712': 0xb3b9,\n 'Skein1024-720': 0xb3ba,\n 'Skein1024-728': 0xb3bb,\n 'Skein1024-736': 0xb3bc,\n 'Skein1024-744': 0xb3bd,\n 'Skein1024-752': 0xb3be,\n 'Skein1024-760': 0xb3bf,\n 'Skein1024-768': 0xb3c0,\n 'Skein1024-776': 0xb3c1,\n 'Skein1024-784': 0xb3c2,\n 'Skein1024-792': 0xb3c3,\n 'Skein1024-800': 0xb3c4,\n 'Skein1024-808': 0xb3c5,\n 'Skein1024-816': 0xb3c6,\n 'Skein1024-824': 0xb3c7,\n 'Skein1024-832': 0xb3c8,\n 'Skein1024-840': 0xb3c9,\n 'Skein1024-848': 0xb3ca,\n 'Skein1024-856': 0xb3cb,\n 'Skein1024-864': 0xb3cc,\n 'Skein1024-872': 0xb3cd,\n 'Skein1024-880': 0xb3ce,\n 'Skein1024-888': 0xb3cf,\n 'Skein1024-896': 0xb3d0,\n 'Skein1024-904': 0xb3d1,\n 'Skein1024-912': 0xb3d2,\n 'Skein1024-920': 0xb3d3,\n 'Skein1024-928': 0xb3d4,\n 'Skein1024-936': 0xb3d5,\n 'Skein1024-944': 0xb3d6,\n 'Skein1024-952': 0xb3d7,\n 'Skein1024-960': 0xb3d8,\n 'Skein1024-968': 0xb3d9,\n 'Skein1024-976': 0xb3da,\n 'Skein1024-984': 0xb3db,\n 'Skein1024-992': 0xb3dc,\n 'Skein1024-1000': 0xb3dd,\n 'Skein1024-1008': 0xb3de,\n 'Skein1024-1016': 0xb3df,\n 'Skein1024-1024': 0xb3e0\n})\n\nexports.codes = Object.freeze({\n 0x0: 'identity',\n\n // sha family\n 0x11: 'sha1',\n 0x12: 'sha2-256',\n 0x13: 'sha2-512',\n 0x56: 'dbl-sha2-256',\n 0x17: 'sha3-224',\n 0x16: 'sha3-256',\n 0x15: 'sha3-384',\n 0x14: 'sha3-512',\n 0x18: 'shake-128',\n 0x19: 'shake-256',\n 0x1A: 'keccak-224',\n 0x1B: 'keccak-256',\n 0x1C: 'keccak-384',\n 0x1D: 'keccak-512',\n\n 0x22: 'murmur3-128',\n 0x23: 'murmur3-32',\n\n 0xd4: 'md4',\n 0xd5: 'md5',\n\n // blake2\n 0xb201: 'blake2b-8',\n 0xb202: 'blake2b-16',\n 0xb203: 'blake2b-24',\n 0xb204: 'blake2b-32',\n 0xb205: 'blake2b-40',\n 0xb206: 'blake2b-48',\n 0xb207: 'blake2b-56',\n 0xb208: 'blake2b-64',\n 0xb209: 'blake2b-72',\n 0xb20a: 'blake2b-80',\n 0xb20b: 'blake2b-88',\n 0xb20c: 'blake2b-96',\n 0xb20d: 'blake2b-104',\n 0xb20e: 'blake2b-112',\n 0xb20f: 'blake2b-120',\n 0xb210: 'blake2b-128',\n 0xb211: 'blake2b-136',\n 0xb212: 'blake2b-144',\n 0xb213: 'blake2b-152',\n 0xb214: 'blake2b-160',\n 0xb215: 'blake2b-168',\n 0xb216: 'blake2b-176',\n 0xb217: 'blake2b-184',\n 0xb218: 'blake2b-192',\n 0xb219: 'blake2b-200',\n 0xb21a: 'blake2b-208',\n 0xb21b: 'blake2b-216',\n 0xb21c: 'blake2b-224',\n 0xb21d: 'blake2b-232',\n 0xb21e: 'blake2b-240',\n 0xb21f: 'blake2b-248',\n 0xb220: 'blake2b-256',\n 0xb221: 'blake2b-264',\n 0xb222: 'blake2b-272',\n 0xb223: 'blake2b-280',\n 0xb224: 'blake2b-288',\n 0xb225: 'blake2b-296',\n 0xb226: 'blake2b-304',\n 0xb227: 'blake2b-312',\n 0xb228: 'blake2b-320',\n 0xb229: 'blake2b-328',\n 0xb22a: 'blake2b-336',\n 0xb22b: 'blake2b-344',\n 0xb22c: 'blake2b-352',\n 0xb22d: 'blake2b-360',\n 0xb22e: 'blake2b-368',\n 0xb22f: 'blake2b-376',\n 0xb230: 'blake2b-384',\n 0xb231: 'blake2b-392',\n 0xb232: 'blake2b-400',\n 0xb233: 'blake2b-408',\n 0xb234: 'blake2b-416',\n 0xb235: 'blake2b-424',\n 0xb236: 'blake2b-432',\n 0xb237: 'blake2b-440',\n 0xb238: 'blake2b-448',\n 0xb239: 'blake2b-456',\n 0xb23a: 'blake2b-464',\n 0xb23b: 'blake2b-472',\n 0xb23c: 'blake2b-480',\n 0xb23d: 'blake2b-488',\n 0xb23e: 'blake2b-496',\n 0xb23f: 'blake2b-504',\n 0xb240: 'blake2b-512',\n 0xb241: 'blake2s-8',\n 0xb242: 'blake2s-16',\n 0xb243: 'blake2s-24',\n 0xb244: 'blake2s-32',\n 0xb245: 'blake2s-40',\n 0xb246: 'blake2s-48',\n 0xb247: 'blake2s-56',\n 0xb248: 'blake2s-64',\n 0xb249: 'blake2s-72',\n 0xb24a: 'blake2s-80',\n 0xb24b: 'blake2s-88',\n 0xb24c: 'blake2s-96',\n 0xb24d: 'blake2s-104',\n 0xb24e: 'blake2s-112',\n 0xb24f: 'blake2s-120',\n 0xb250: 'blake2s-128',\n 0xb251: 'blake2s-136',\n 0xb252: 'blake2s-144',\n 0xb253: 'blake2s-152',\n 0xb254: 'blake2s-160',\n 0xb255: 'blake2s-168',\n 0xb256: 'blake2s-176',\n 0xb257: 'blake2s-184',\n 0xb258: 'blake2s-192',\n 0xb259: 'blake2s-200',\n 0xb25a: 'blake2s-208',\n 0xb25b: 'blake2s-216',\n 0xb25c: 'blake2s-224',\n 0xb25d: 'blake2s-232',\n 0xb25e: 'blake2s-240',\n 0xb25f: 'blake2s-248',\n 0xb260: 'blake2s-256',\n\n // skein\n 0xb301: 'Skein256-8',\n 0xb302: 'Skein256-16',\n 0xb303: 'Skein256-24',\n 0xb304: 'Skein256-32',\n 0xb305: 'Skein256-40',\n 0xb306: 'Skein256-48',\n 0xb307: 'Skein256-56',\n 0xb308: 'Skein256-64',\n 0xb309: 'Skein256-72',\n 0xb30a: 'Skein256-80',\n 0xb30b: 'Skein256-88',\n 0xb30c: 'Skein256-96',\n 0xb30d: 'Skein256-104',\n 0xb30e: 'Skein256-112',\n 0xb30f: 'Skein256-120',\n 0xb310: 'Skein256-128',\n 0xb311: 'Skein256-136',\n 0xb312: 'Skein256-144',\n 0xb313: 'Skein256-152',\n 0xb314: 'Skein256-160',\n 0xb315: 'Skein256-168',\n 0xb316: 'Skein256-176',\n 0xb317: 'Skein256-184',\n 0xb318: 'Skein256-192',\n 0xb319: 'Skein256-200',\n 0xb31a: 'Skein256-208',\n 0xb31b: 'Skein256-216',\n 0xb31c: 'Skein256-224',\n 0xb31d: 'Skein256-232',\n 0xb31e: 'Skein256-240',\n 0xb31f: 'Skein256-248',\n 0xb320: 'Skein256-256',\n 0xb321: 'Skein512-8',\n 0xb322: 'Skein512-16',\n 0xb323: 'Skein512-24',\n 0xb324: 'Skein512-32',\n 0xb325: 'Skein512-40',\n 0xb326: 'Skein512-48',\n 0xb327: 'Skein512-56',\n 0xb328: 'Skein512-64',\n 0xb329: 'Skein512-72',\n 0xb32a: 'Skein512-80',\n 0xb32b: 'Skein512-88',\n 0xb32c: 'Skein512-96',\n 0xb32d: 'Skein512-104',\n 0xb32e: 'Skein512-112',\n 0xb32f: 'Skein512-120',\n 0xb330: 'Skein512-128',\n 0xb331: 'Skein512-136',\n 0xb332: 'Skein512-144',\n 0xb333: 'Skein512-152',\n 0xb334: 'Skein512-160',\n 0xb335: 'Skein512-168',\n 0xb336: 'Skein512-176',\n 0xb337: 'Skein512-184',\n 0xb338: 'Skein512-192',\n 0xb339: 'Skein512-200',\n 0xb33a: 'Skein512-208',\n 0xb33b: 'Skein512-216',\n 0xb33c: 'Skein512-224',\n 0xb33d: 'Skein512-232',\n 0xb33e: 'Skein512-240',\n 0xb33f: 'Skein512-248',\n 0xb340: 'Skein512-256',\n 0xb341: 'Skein512-264',\n 0xb342: 'Skein512-272',\n 0xb343: 'Skein512-280',\n 0xb344: 'Skein512-288',\n 0xb345: 'Skein512-296',\n 0xb346: 'Skein512-304',\n 0xb347: 'Skein512-312',\n 0xb348: 'Skein512-320',\n 0xb349: 'Skein512-328',\n 0xb34a: 'Skein512-336',\n 0xb34b: 'Skein512-344',\n 0xb34c: 'Skein512-352',\n 0xb34d: 'Skein512-360',\n 0xb34e: 'Skein512-368',\n 0xb34f: 'Skein512-376',\n 0xb350: 'Skein512-384',\n 0xb351: 'Skein512-392',\n 0xb352: 'Skein512-400',\n 0xb353: 'Skein512-408',\n 0xb354: 'Skein512-416',\n 0xb355: 'Skein512-424',\n 0xb356: 'Skein512-432',\n 0xb357: 'Skein512-440',\n 0xb358: 'Skein512-448',\n 0xb359: 'Skein512-456',\n 0xb35a: 'Skein512-464',\n 0xb35b: 'Skein512-472',\n 0xb35c: 'Skein512-480',\n 0xb35d: 'Skein512-488',\n 0xb35e: 'Skein512-496',\n 0xb35f: 'Skein512-504',\n 0xb360: 'Skein512-512',\n 0xb361: 'Skein1024-8',\n 0xb362: 'Skein1024-16',\n 0xb363: 'Skein1024-24',\n 0xb364: 'Skein1024-32',\n 0xb365: 'Skein1024-40',\n 0xb366: 'Skein1024-48',\n 0xb367: 'Skein1024-56',\n 0xb368: 'Skein1024-64',\n 0xb369: 'Skein1024-72',\n 0xb36a: 'Skein1024-80',\n 0xb36b: 'Skein1024-88',\n 0xb36c: 'Skein1024-96',\n 0xb36d: 'Skein1024-104',\n 0xb36e: 'Skein1024-112',\n 0xb36f: 'Skein1024-120',\n 0xb370: 'Skein1024-128',\n 0xb371: 'Skein1024-136',\n 0xb372: 'Skein1024-144',\n 0xb373: 'Skein1024-152',\n 0xb374: 'Skein1024-160',\n 0xb375: 'Skein1024-168',\n 0xb376: 'Skein1024-176',\n 0xb377: 'Skein1024-184',\n 0xb378: 'Skein1024-192',\n 0xb379: 'Skein1024-200',\n 0xb37a: 'Skein1024-208',\n 0xb37b: 'Skein1024-216',\n 0xb37c: 'Skein1024-224',\n 0xb37d: 'Skein1024-232',\n 0xb37e: 'Skein1024-240',\n 0xb37f: 'Skein1024-248',\n 0xb380: 'Skein1024-256',\n 0xb381: 'Skein1024-264',\n 0xb382: 'Skein1024-272',\n 0xb383: 'Skein1024-280',\n 0xb384: 'Skein1024-288',\n 0xb385: 'Skein1024-296',\n 0xb386: 'Skein1024-304',\n 0xb387: 'Skein1024-312',\n 0xb388: 'Skein1024-320',\n 0xb389: 'Skein1024-328',\n 0xb38a: 'Skein1024-336',\n 0xb38b: 'Skein1024-344',\n 0xb38c: 'Skein1024-352',\n 0xb38d: 'Skein1024-360',\n 0xb38e: 'Skein1024-368',\n 0xb38f: 'Skein1024-376',\n 0xb390: 'Skein1024-384',\n 0xb391: 'Skein1024-392',\n 0xb392: 'Skein1024-400',\n 0xb393: 'Skein1024-408',\n 0xb394: 'Skein1024-416',\n 0xb395: 'Skein1024-424',\n 0xb396: 'Skein1024-432',\n 0xb397: 'Skein1024-440',\n 0xb398: 'Skein1024-448',\n 0xb399: 'Skein1024-456',\n 0xb39a: 'Skein1024-464',\n 0xb39b: 'Skein1024-472',\n 0xb39c: 'Skein1024-480',\n 0xb39d: 'Skein1024-488',\n 0xb39e: 'Skein1024-496',\n 0xb39f: 'Skein1024-504',\n 0xb3a0: 'Skein1024-512',\n 0xb3a1: 'Skein1024-520',\n 0xb3a2: 'Skein1024-528',\n 0xb3a3: 'Skein1024-536',\n 0xb3a4: 'Skein1024-544',\n 0xb3a5: 'Skein1024-552',\n 0xb3a6: 'Skein1024-560',\n 0xb3a7: 'Skein1024-568',\n 0xb3a8: 'Skein1024-576',\n 0xb3a9: 'Skein1024-584',\n 0xb3aa: 'Skein1024-592',\n 0xb3ab: 'Skein1024-600',\n 0xb3ac: 'Skein1024-608',\n 0xb3ad: 'Skein1024-616',\n 0xb3ae: 'Skein1024-624',\n 0xb3af: 'Skein1024-632',\n 0xb3b0: 'Skein1024-640',\n 0xb3b1: 'Skein1024-648',\n 0xb3b2: 'Skein1024-656',\n 0xb3b3: 'Skein1024-664',\n 0xb3b4: 'Skein1024-672',\n 0xb3b5: 'Skein1024-680',\n 0xb3b6: 'Skein1024-688',\n 0xb3b7: 'Skein1024-696',\n 0xb3b8: 'Skein1024-704',\n 0xb3b9: 'Skein1024-712',\n 0xb3ba: 'Skein1024-720',\n 0xb3bb: 'Skein1024-728',\n 0xb3bc: 'Skein1024-736',\n 0xb3bd: 'Skein1024-744',\n 0xb3be: 'Skein1024-752',\n 0xb3bf: 'Skein1024-760',\n 0xb3c0: 'Skein1024-768',\n 0xb3c1: 'Skein1024-776',\n 0xb3c2: 'Skein1024-784',\n 0xb3c3: 'Skein1024-792',\n 0xb3c4: 'Skein1024-800',\n 0xb3c5: 'Skein1024-808',\n 0xb3c6: 'Skein1024-816',\n 0xb3c7: 'Skein1024-824',\n 0xb3c8: 'Skein1024-832',\n 0xb3c9: 'Skein1024-840',\n 0xb3ca: 'Skein1024-848',\n 0xb3cb: 'Skein1024-856',\n 0xb3cc: 'Skein1024-864',\n 0xb3cd: 'Skein1024-872',\n 0xb3ce: 'Skein1024-880',\n 0xb3cf: 'Skein1024-888',\n 0xb3d0: 'Skein1024-896',\n 0xb3d1: 'Skein1024-904',\n 0xb3d2: 'Skein1024-912',\n 0xb3d3: 'Skein1024-920',\n 0xb3d4: 'Skein1024-928',\n 0xb3d5: 'Skein1024-936',\n 0xb3d6: 'Skein1024-944',\n 0xb3d7: 'Skein1024-952',\n 0xb3d8: 'Skein1024-960',\n 0xb3d9: 'Skein1024-968',\n 0xb3da: 'Skein1024-976',\n 0xb3db: 'Skein1024-984',\n 0xb3dc: 'Skein1024-992',\n 0xb3dd: 'Skein1024-1000',\n 0xb3de: 'Skein1024-1008',\n 0xb3df: 'Skein1024-1016',\n 0xb3e0: 'Skein1024-1024'\n})\n\nexports.defaultLengths = Object.freeze({\n 0x11: 20,\n 0x12: 32,\n 0x13: 64,\n 0x56: 32,\n 0x17: 28,\n 0x16: 32,\n 0x15: 48,\n 0x14: 64,\n 0x18: 32,\n 0x19: 64,\n 0x1A: 28,\n 0x1B: 32,\n 0x1C: 48,\n 0x1D: 64,\n 0x22: 32,\n\n 0xb201: 0x01,\n 0xb202: 0x02,\n 0xb203: 0x03,\n 0xb204: 0x04,\n 0xb205: 0x05,\n 0xb206: 0x06,\n 0xb207: 0x07,\n 0xb208: 0x08,\n 0xb209: 0x09,\n 0xb20a: 0x0a,\n 0xb20b: 0x0b,\n 0xb20c: 0x0c,\n 0xb20d: 0x0d,\n 0xb20e: 0x0e,\n 0xb20f: 0x0f,\n 0xb210: 0x10,\n 0xb211: 0x11,\n 0xb212: 0x12,\n 0xb213: 0x13,\n 0xb214: 0x14,\n 0xb215: 0x15,\n 0xb216: 0x16,\n 0xb217: 0x17,\n 0xb218: 0x18,\n 0xb219: 0x19,\n 0xb21a: 0x1a,\n 0xb21b: 0x1b,\n 0xb21c: 0x1c,\n 0xb21d: 0x1d,\n 0xb21e: 0x1e,\n 0xb21f: 0x1f,\n 0xb220: 0x20,\n 0xb221: 0x21,\n 0xb222: 0x22,\n 0xb223: 0x23,\n 0xb224: 0x24,\n 0xb225: 0x25,\n 0xb226: 0x26,\n 0xb227: 0x27,\n 0xb228: 0x28,\n 0xb229: 0x29,\n 0xb22a: 0x2a,\n 0xb22b: 0x2b,\n 0xb22c: 0x2c,\n 0xb22d: 0x2d,\n 0xb22e: 0x2e,\n 0xb22f: 0x2f,\n 0xb230: 0x30,\n 0xb231: 0x31,\n 0xb232: 0x32,\n 0xb233: 0x33,\n 0xb234: 0x34,\n 0xb235: 0x35,\n 0xb236: 0x36,\n 0xb237: 0x37,\n 0xb238: 0x38,\n 0xb239: 0x39,\n 0xb23a: 0x3a,\n 0xb23b: 0x3b,\n 0xb23c: 0x3c,\n 0xb23d: 0x3d,\n 0xb23e: 0x3e,\n 0xb23f: 0x3f,\n 0xb240: 0x40,\n 0xb241: 0x01,\n 0xb242: 0x02,\n 0xb243: 0x03,\n 0xb244: 0x04,\n 0xb245: 0x05,\n 0xb246: 0x06,\n 0xb247: 0x07,\n 0xb248: 0x08,\n 0xb249: 0x09,\n 0xb24a: 0x0a,\n 0xb24b: 0x0b,\n 0xb24c: 0x0c,\n 0xb24d: 0x0d,\n 0xb24e: 0x0e,\n 0xb24f: 0x0f,\n 0xb250: 0x10,\n 0xb251: 0x11,\n 0xb252: 0x12,\n 0xb253: 0x13,\n 0xb254: 0x14,\n 0xb255: 0x15,\n 0xb256: 0x16,\n 0xb257: 0x17,\n 0xb258: 0x18,\n 0xb259: 0x19,\n 0xb25a: 0x1a,\n 0xb25b: 0x1b,\n 0xb25c: 0x1c,\n 0xb25d: 0x1d,\n 0xb25e: 0x1e,\n 0xb25f: 0x1f,\n 0xb260: 0x20,\n 0xb301: 0x01,\n 0xb302: 0x02,\n 0xb303: 0x03,\n 0xb304: 0x04,\n 0xb305: 0x05,\n 0xb306: 0x06,\n 0xb307: 0x07,\n 0xb308: 0x08,\n 0xb309: 0x09,\n 0xb30a: 0x0a,\n 0xb30b: 0x0b,\n 0xb30c: 0x0c,\n 0xb30d: 0x0d,\n 0xb30e: 0x0e,\n 0xb30f: 0x0f,\n 0xb310: 0x10,\n 0xb311: 0x11,\n 0xb312: 0x12,\n 0xb313: 0x13,\n 0xb314: 0x14,\n 0xb315: 0x15,\n 0xb316: 0x16,\n 0xb317: 0x17,\n 0xb318: 0x18,\n 0xb319: 0x19,\n 0xb31a: 0x1a,\n 0xb31b: 0x1b,\n 0xb31c: 0x1c,\n 0xb31d: 0x1d,\n 0xb31e: 0x1e,\n 0xb31f: 0x1f,\n 0xb320: 0x20,\n 0xb321: 0x01,\n 0xb322: 0x02,\n 0xb323: 0x03,\n 0xb324: 0x04,\n 0xb325: 0x05,\n 0xb326: 0x06,\n 0xb327: 0x07,\n 0xb328: 0x08,\n 0xb329: 0x09,\n 0xb32a: 0x0a,\n 0xb32b: 0x0b,\n 0xb32c: 0x0c,\n 0xb32d: 0x0d,\n 0xb32e: 0x0e,\n 0xb32f: 0x0f,\n 0xb330: 0x10,\n 0xb331: 0x11,\n 0xb332: 0x12,\n 0xb333: 0x13,\n 0xb334: 0x14,\n 0xb335: 0x15,\n 0xb336: 0x16,\n 0xb337: 0x17,\n 0xb338: 0x18,\n 0xb339: 0x19,\n 0xb33a: 0x1a,\n 0xb33b: 0x1b,\n 0xb33c: 0x1c,\n 0xb33d: 0x1d,\n 0xb33e: 0x1e,\n 0xb33f: 0x1f,\n 0xb340: 0x20,\n 0xb341: 0x21,\n 0xb342: 0x22,\n 0xb343: 0x23,\n 0xb344: 0x24,\n 0xb345: 0x25,\n 0xb346: 0x26,\n 0xb347: 0x27,\n 0xb348: 0x28,\n 0xb349: 0x29,\n 0xb34a: 0x2a,\n 0xb34b: 0x2b,\n 0xb34c: 0x2c,\n 0xb34d: 0x2d,\n 0xb34e: 0x2e,\n 0xb34f: 0x2f,\n 0xb350: 0x30,\n 0xb351: 0x31,\n 0xb352: 0x32,\n 0xb353: 0x33,\n 0xb354: 0x34,\n 0xb355: 0x35,\n 0xb356: 0x36,\n 0xb357: 0x37,\n 0xb358: 0x38,\n 0xb359: 0x39,\n 0xb35a: 0x3a,\n 0xb35b: 0x3b,\n 0xb35c: 0x3c,\n 0xb35d: 0x3d,\n 0xb35e: 0x3e,\n 0xb35f: 0x3f,\n 0xb360: 0x40,\n 0xb361: 0x01,\n 0xb362: 0x02,\n 0xb363: 0x03,\n 0xb364: 0x04,\n 0xb365: 0x05,\n 0xb366: 0x06,\n 0xb367: 0x07,\n 0xb368: 0x08,\n 0xb369: 0x09,\n 0xb36a: 0x0a,\n 0xb36b: 0x0b,\n 0xb36c: 0x0c,\n 0xb36d: 0x0d,\n 0xb36e: 0x0e,\n 0xb36f: 0x0f,\n 0xb370: 0x10,\n 0xb371: 0x11,\n 0xb372: 0x12,\n 0xb373: 0x13,\n 0xb374: 0x14,\n 0xb375: 0x15,\n 0xb376: 0x16,\n 0xb377: 0x17,\n 0xb378: 0x18,\n 0xb379: 0x19,\n 0xb37a: 0x1a,\n 0xb37b: 0x1b,\n 0xb37c: 0x1c,\n 0xb37d: 0x1d,\n 0xb37e: 0x1e,\n 0xb37f: 0x1f,\n 0xb380: 0x20,\n 0xb381: 0x21,\n 0xb382: 0x22,\n 0xb383: 0x23,\n 0xb384: 0x24,\n 0xb385: 0x25,\n 0xb386: 0x26,\n 0xb387: 0x27,\n 0xb388: 0x28,\n 0xb389: 0x29,\n 0xb38a: 0x2a,\n 0xb38b: 0x2b,\n 0xb38c: 0x2c,\n 0xb38d: 0x2d,\n 0xb38e: 0x2e,\n 0xb38f: 0x2f,\n 0xb390: 0x30,\n 0xb391: 0x31,\n 0xb392: 0x32,\n 0xb393: 0x33,\n 0xb394: 0x34,\n 0xb395: 0x35,\n 0xb396: 0x36,\n 0xb397: 0x37,\n 0xb398: 0x38,\n 0xb399: 0x39,\n 0xb39a: 0x3a,\n 0xb39b: 0x3b,\n 0xb39c: 0x3c,\n 0xb39d: 0x3d,\n 0xb39e: 0x3e,\n 0xb39f: 0x3f,\n 0xb3a0: 0x40,\n 0xb3a1: 0x41,\n 0xb3a2: 0x42,\n 0xb3a3: 0x43,\n 0xb3a4: 0x44,\n 0xb3a5: 0x45,\n 0xb3a6: 0x46,\n 0xb3a7: 0x47,\n 0xb3a8: 0x48,\n 0xb3a9: 0x49,\n 0xb3aa: 0x4a,\n 0xb3ab: 0x4b,\n 0xb3ac: 0x4c,\n 0xb3ad: 0x4d,\n 0xb3ae: 0x4e,\n 0xb3af: 0x4f,\n 0xb3b0: 0x50,\n 0xb3b1: 0x51,\n 0xb3b2: 0x52,\n 0xb3b3: 0x53,\n 0xb3b4: 0x54,\n 0xb3b5: 0x55,\n 0xb3b6: 0x56,\n 0xb3b7: 0x57,\n 0xb3b8: 0x58,\n 0xb3b9: 0x59,\n 0xb3ba: 0x5a,\n 0xb3bb: 0x5b,\n 0xb3bc: 0x5c,\n 0xb3bd: 0x5d,\n 0xb3be: 0x5e,\n 0xb3bf: 0x5f,\n 0xb3c0: 0x60,\n 0xb3c1: 0x61,\n 0xb3c2: 0x62,\n 0xb3c3: 0x63,\n 0xb3c4: 0x64,\n 0xb3c5: 0x65,\n 0xb3c6: 0x66,\n 0xb3c7: 0x67,\n 0xb3c8: 0x68,\n 0xb3c9: 0x69,\n 0xb3ca: 0x6a,\n 0xb3cb: 0x6b,\n 0xb3cc: 0x6c,\n 0xb3cd: 0x6d,\n 0xb3ce: 0x6e,\n 0xb3cf: 0x6f,\n 0xb3d0: 0x70,\n 0xb3d1: 0x71,\n 0xb3d2: 0x72,\n 0xb3d3: 0x73,\n 0xb3d4: 0x74,\n 0xb3d5: 0x75,\n 0xb3d6: 0x76,\n 0xb3d7: 0x77,\n 0xb3d8: 0x78,\n 0xb3d9: 0x79,\n 0xb3da: 0x7a,\n 0xb3db: 0x7b,\n 0xb3dc: 0x7c,\n 0xb3dd: 0x7d,\n 0xb3de: 0x7e,\n 0xb3df: 0x7f,\n 0xb3e0: 0x80\n})\n","/**\n * Multihash implementation in JavaScript.\n *\n * @module multihash\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst multibase = require('multibase')\nconst varint = require('varint')\nconst cs = require('./constants')\n\nexports.names = cs.names\nexports.codes = cs.codes\nexports.defaultLengths = cs.defaultLengths\n\n/**\n * Convert the given multihash to a hex encoded string.\n *\n * @param {Buffer} hash\n * @returns {string}\n */\nexports.toHexString = function toHexString (hash) {\n if (!Buffer.isBuffer(hash)) {\n throw new Error('must be passed a buffer')\n }\n\n return hash.toString('hex')\n}\n\n/**\n * Convert the given hex encoded string to a multihash.\n *\n * @param {string} hash\n * @returns {Buffer}\n */\nexports.fromHexString = function fromHexString (hash) {\n return Buffer.from(hash, 'hex')\n}\n\n/**\n * Convert the given multihash to a base58 encoded string.\n *\n * @param {Buffer} hash\n * @returns {string}\n */\nexports.toB58String = function toB58String (hash) {\n if (!Buffer.isBuffer(hash)) {\n throw new Error('must be passed a buffer')\n }\n\n return multibase.encode('base58btc', hash).toString().slice(1)\n}\n\n/**\n * Convert the given base58 encoded string to a multihash.\n *\n * @param {string|Buffer} hash\n * @returns {Buffer}\n */\nexports.fromB58String = function fromB58String (hash) {\n let encoded = hash\n if (Buffer.isBuffer(hash)) {\n encoded = hash.toString()\n }\n\n return multibase.decode('z' + encoded)\n}\n\n/**\n * Decode a hash from the given multihash.\n *\n * @param {Buffer} buf\n * @returns {{code: number, name: string, length: number, digest: Buffer}} result\n */\nexports.decode = function decode (buf) {\n if (!(Buffer.isBuffer(buf))) {\n throw new Error('multihash must be a Buffer')\n }\n\n if (buf.length < 2) {\n throw new Error('multihash too short. must be > 2 bytes.')\n }\n\n const code = varint.decode(buf)\n if (!exports.isValidCode(code)) {\n throw new Error(`multihash unknown function code: 0x${code.toString(16)}`)\n }\n buf = buf.slice(varint.decode.bytes)\n\n const len = varint.decode(buf)\n if (len < 0) {\n throw new Error(`multihash invalid length: ${len}`)\n }\n buf = buf.slice(varint.decode.bytes)\n\n if (buf.length !== len) {\n throw new Error(`multihash length inconsistent: 0x${buf.toString('hex')}`)\n }\n\n return {\n code: code,\n name: cs.codes[code],\n length: len,\n digest: buf\n }\n}\n\n/**\n * Encode a hash digest along with the specified function code.\n *\n * > **Note:** the length is derived from the length of the digest itself.\n *\n * @param {Buffer} digest\n * @param {string|number} code\n * @param {number} [length]\n * @returns {Buffer}\n */\nexports.encode = function encode (digest, code, length) {\n if (!digest || code === undefined) {\n throw new Error('multihash encode requires at least two args: digest, code')\n }\n\n // ensure it's a hashfunction code.\n const hashfn = exports.coerceCode(code)\n\n if (!(Buffer.isBuffer(digest))) {\n throw new Error('digest should be a Buffer')\n }\n\n if (length == null) {\n length = digest.length\n }\n\n if (length && digest.length !== length) {\n throw new Error('digest length should be equal to specified length.')\n }\n\n return Buffer.concat([\n Buffer.from(varint.encode(hashfn)),\n Buffer.from(varint.encode(length)),\n digest\n ])\n}\n\n/**\n * Converts a hash function name into the matching code.\n * If passed a number it will return the number if it's a valid code.\n * @param {string|number} name\n * @returns {number}\n */\nexports.coerceCode = function coerceCode (name) {\n let code = name\n\n if (typeof name === 'string') {\n if (cs.names[name] === undefined) {\n throw new Error(`Unrecognized hash function named: ${name}`)\n }\n code = cs.names[name]\n }\n\n if (typeof code !== 'number') {\n throw new Error(`Hash function code should be a number. Got: ${code}`)\n }\n\n if (cs.codes[code] === undefined && !exports.isAppCode(code)) {\n throw new Error(`Unrecognized function code: ${code}`)\n }\n\n return code\n}\n\n/**\n * Checks wether a code is part of the app range\n *\n * @param {number} code\n * @returns {boolean}\n */\nexports.isAppCode = function appCode (code) {\n return code > 0 && code < 0x10\n}\n\n/**\n * Checks whether a multihash code is valid.\n *\n * @param {number} code\n * @returns {boolean}\n */\nexports.isValidCode = function validCode (code) {\n if (exports.isAppCode(code)) {\n return true\n }\n\n if (cs.codes[code]) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if the given buffer is a valid multihash. Throws an error if it is not valid.\n *\n * @param {Buffer} multihash\n * @returns {undefined}\n * @throws {Error}\n */\nfunction validate (multihash) {\n exports.decode(multihash) // throws if bad.\n}\nexports.validate = validate\n\n/**\n * Returns a prefix from a valid multihash. Throws an error if it is not valid.\n *\n * @param {Buffer} multihash\n * @returns {undefined}\n * @throws {Error}\n */\nexports.prefix = function prefix (multihash) {\n validate(multihash)\n\n return multihash.slice(0, 2)\n}\n","var BN = require('bn.js');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Returns a BN object, converts a number value to a BN\n * @param {String|Number|Object} `arg` input a string number, hex string number, number, BigNumber or BN object\n * @return {Object} `output` BN object of the number\n * @throws if the argument is not an array, object that isn't a bignumber, not a string number or number\n */\nmodule.exports = function numberToBN(arg) {\n if (typeof arg === 'string' || typeof arg === 'number') {\n var multiplier = new BN(1); // eslint-disable-line\n var formattedString = String(arg).toLowerCase().trim();\n var isHexPrefixed = formattedString.substr(0, 2) === '0x' || formattedString.substr(0, 3) === '-0x';\n var stringArg = stripHexPrefix(formattedString); // eslint-disable-line\n if (stringArg.substr(0, 1) === '-') {\n stringArg = stripHexPrefix(stringArg.slice(1));\n multiplier = new BN(-1, 10);\n }\n stringArg = stringArg === '' ? '0' : stringArg;\n\n if ((!stringArg.match(/^-?[0-9]+$/) && stringArg.match(/^[0-9A-Fa-f]+$/))\n || stringArg.match(/^[a-fA-F]+$/)\n || (isHexPrefixed === true && stringArg.match(/^[0-9A-Fa-f]+$/))) {\n return new BN(stringArg, 16).mul(multiplier);\n }\n\n if ((stringArg.match(/^-?[0-9]+$/) || stringArg === '') && isHexPrefixed === false) {\n return new BN(stringArg, 10).mul(multiplier);\n }\n } else if (typeof arg === 'object' && arg.toString && (!arg.pop && !arg.push)) {\n if (arg.toString(10).match(/^-?[0-9]+$/) && (arg.mul || arg.dividedToIntegerBy)) {\n return new BN(arg.toString(10), 10);\n }\n }\n\n throw new Error('[number-to-bn] while converting number ' + JSON.stringify(arg) + ' to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*!\n * v2.1.4-104-gc868b3a\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"oboe\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"oboe\"] = factory();\n\telse\n\t\troot[\"oboe\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return partialComplete; });\n/* unused harmony export compose */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return compose2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return attr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return lazyUnion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return apply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return varArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return flip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return lazyIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return noop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return always; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return functor; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n\n\n/**\n * Partially complete a function.\n *\n * var add3 = partialComplete( function add(a,b){return a+b}, 3 );\n *\n * add3(4) // gives 7\n *\n * function wrap(left, right, cen){return left + \" \" + cen + \" \" + right;}\n *\n * var pirateGreeting = partialComplete( wrap , \"I'm\", \", a mighty pirate!\" );\n *\n * pirateGreeting(\"Guybrush Threepwood\");\n * // gives \"I'm Guybrush Threepwood, a mighty pirate!\"\n */\nvar partialComplete = varArgs(function (fn, args) {\n // this isn't the shortest way to write this but it does\n // avoid creating a new array each time to pass to fn.apply,\n // otherwise could just call boundArgs.concat(callArgs)\n\n var numBoundArgs = args.length\n\n return varArgs(function (callArgs) {\n for (var i = 0; i < callArgs.length; i++) {\n args[numBoundArgs + i] = callArgs[i]\n }\n\n args.length = numBoundArgs + callArgs.length\n\n return fn.apply(this, args)\n })\n})\n\n/**\n* Compose zero or more functions:\n*\n* compose(f1, f2, f3)(x) = f1(f2(f3(x))))\n*\n* The last (inner-most) function may take more than one parameter:\n*\n* compose(f1, f2, f3)(x,y) = f1(f2(f3(x,y))))\n*/\nvar compose = varArgs(function (fns) {\n var fnsList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"c\" /* arrayAsList */])(fns)\n\n function next (params, curFn) {\n return [apply(params, curFn)]\n }\n\n return varArgs(function (startParams) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"f\" /* foldR */])(next, startParams, fnsList)[0]\n })\n})\n\n/**\n* A more optimised version of compose that takes exactly two functions\n* @param f1\n* @param f2\n*/\nfunction compose2 (f1, f2) {\n return function () {\n return f1.call(this, f2.apply(this, arguments))\n }\n}\n\n/**\n* Generic form for a function to get a property from an object\n*\n* var o = {\n* foo:'bar'\n* }\n*\n* var getFoo = attr('foo')\n*\n* fetFoo(o) // returns 'bar'\n*\n* @param {String} key the property name\n*/\nfunction attr (key) {\n return function (o) { return o[key] }\n}\n\n/**\n* Call a list of functions with the same args until one returns a\n* truthy result. Similar to the || operator.\n*\n* So:\n* lazyUnion([f1,f2,f3 ... fn])( p1, p2 ... pn )\n*\n* Is equivalent to:\n* apply([p1, p2 ... pn], f1) ||\n* apply([p1, p2 ... pn], f2) ||\n* apply([p1, p2 ... pn], f3) ... apply(fn, [p1, p2 ... pn])\n*\n* @returns the first return value that is given that is truthy.\n*/\nvar lazyUnion = varArgs(function (fns) {\n return varArgs(function (params) {\n var maybeValue\n\n for (var i = 0; i < attr('length')(fns); i++) {\n maybeValue = apply(params, fns[i])\n\n if (maybeValue) {\n return maybeValue\n }\n }\n })\n})\n\n/**\n* This file declares various pieces of functional programming.\n*\n* This isn't a general purpose functional library, to keep things small it\n* has just the parts useful for Oboe.js.\n*/\n\n/**\n* Call a single function with the given arguments array.\n* Basically, a functional-style version of the OO-style Function#apply for\n* when we don't care about the context ('this') of the call.\n*\n* The order of arguments allows partial completion of the arguments array\n*/\nfunction apply (args, fn) {\n return fn.apply(undefined, args)\n}\n\n/**\n* Define variable argument functions but cut out all that tedious messing about\n* with the arguments object. Delivers the variable-length part of the arguments\n* list as an array.\n*\n* Eg:\n*\n* var myFunction = varArgs(\n* function( fixedArgument, otherFixedArgument, variableNumberOfArguments ){\n* console.log( variableNumberOfArguments );\n* }\n* )\n*\n* myFunction('a', 'b', 1, 2, 3); // logs [1,2,3]\n*\n* var myOtherFunction = varArgs(function( variableNumberOfArguments ){\n* console.log( variableNumberOfArguments );\n* })\n*\n* myFunction(1, 2, 3); // logs [1,2,3]\n*\n*/\nfunction varArgs (fn) {\n var numberOfFixedArguments = fn.length - 1\n var slice = Array.prototype.slice\n\n if (numberOfFixedArguments === 0) {\n // an optimised case for when there are no fixed args:\n\n return function () {\n return fn.call(this, slice.call(arguments))\n }\n } else if (numberOfFixedArguments === 1) {\n // an optimised case for when there are is one fixed args:\n\n return function () {\n return fn.call(this, arguments[0], slice.call(arguments, 1))\n }\n }\n\n // general case\n\n // we know how many arguments fn will always take. Create a\n // fixed-size array to hold that many, to be re-used on\n // every call to the returned function\n var argsHolder = Array(fn.length)\n\n return function () {\n for (var i = 0; i < numberOfFixedArguments; i++) {\n argsHolder[i] = arguments[i]\n }\n\n argsHolder[numberOfFixedArguments] =\n slice.call(arguments, numberOfFixedArguments)\n\n return fn.apply(this, argsHolder)\n }\n}\n\n/**\n* Swap the order of parameters to a binary function\n*\n* A bit like this flip: http://zvon.org/other/haskell/Outputprelude/flip_f.html\n*/\nfunction flip (fn) {\n return function (a, b) {\n return fn(b, a)\n }\n}\n\n/**\n* Create a function which is the intersection of two other functions.\n*\n* Like the && operator, if the first is truthy, the second is never called,\n* otherwise the return value from the second is returned.\n*/\nfunction lazyIntersection (fn1, fn2) {\n return function (param) {\n return fn1(param) && fn2(param)\n }\n}\n\n/**\n* A function which does nothing\n*/\nfunction noop () { }\n\n/**\n* A function which is always happy\n*/\nfunction always () { return true }\n\n/**\n* Create a function which always returns the same\n* value\n*\n* var return3 = functor(3);\n*\n* return3() // gives 3\n* return3() // still gives 3\n* return3() // will always give 3\n*/\nfunction functor (val) {\n return function () {\n return val\n }\n}\n\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return cons; });\n/* unused harmony export emptyList */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return head; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return tail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return arrayAsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return list; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return listAsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return foldR; });\n/* unused harmony export foldR1 */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return without; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return all; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return applyEach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return reverseList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return first; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\n/**\n * Like cons in Lisp\n */\nfunction cons (x, xs) {\n /* Internally lists are linked 2-element Javascript arrays.\n\n Ideally the return here would be Object.freeze([x,xs])\n so that bugs related to mutation are found fast.\n However, cons is right on the critical path for\n performance and this slows oboe-mark down by\n ~25%. Under theoretical future JS engines that freeze more\n efficiently (possibly even use immutability to\n run faster) this should be considered for\n restoration.\n */\n\n return [x, xs]\n}\n\n/**\n * The empty list\n */\nvar emptyList = null\n\n/**\n * Get the head of a list.\n *\n * Ie, head(cons(a,b)) = a\n */\nvar head = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])(0)\n\n/**\n * Get the tail of a list.\n *\n * Ie, tail(cons(a,b)) = b\n */\nvar tail = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])(1)\n\n/**\n * Converts an array to a list\n *\n * asList([a,b,c])\n *\n * is equivalent to:\n *\n * cons(a, cons(b, cons(c, emptyList)))\n **/\nfunction arrayAsList (inputArray) {\n return reverseList(\n inputArray.reduce(\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"e\" /* flip */])(cons),\n emptyList\n )\n )\n}\n\n/**\n * A varargs version of arrayAsList. Works a bit like list\n * in LISP.\n *\n * list(a,b,c)\n *\n * is equivalent to:\n *\n * cons(a, cons(b, cons(c, emptyList)))\n */\nvar list = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"k\" /* varArgs */])(arrayAsList)\n\n/**\n * Convert a list back to a js native array\n */\nfunction listAsArray (list) {\n return foldR(function (arraySoFar, listItem) {\n arraySoFar.unshift(listItem)\n return arraySoFar\n }, [], list)\n}\n\n/**\n * Map a function over a list\n */\nfunction map (fn, list) {\n return list\n ? cons(fn(head(list)), map(fn, tail(list)))\n : emptyList\n}\n\n/**\n * foldR implementation. Reduce a list down to a single value.\n *\n * @pram {Function} fn (rightEval, curVal) -> result\n */\nfunction foldR (fn, startValue, list) {\n return list\n ? fn(foldR(fn, startValue, tail(list)), head(list))\n : startValue\n}\n\n/**\n * foldR implementation. Reduce a list down to a single value.\n *\n * @pram {Function} fn (rightEval, curVal) -> result\n */\nfunction foldR1 (fn, list) {\n return tail(list)\n ? fn(foldR1(fn, tail(list)), head(list))\n : head(list)\n}\n\n/**\n * Return a list like the one given but with the first instance equal\n * to item removed\n */\nfunction without (list, test, removedFn) {\n return withoutInner(list, removedFn || __WEBPACK_IMPORTED_MODULE_0__functional__[\"i\" /* noop */])\n\n function withoutInner (subList, removedFn) {\n return subList\n ? (test(head(subList))\n ? (removedFn(head(subList)), tail(subList))\n : cons(head(subList), withoutInner(tail(subList), removedFn))\n )\n : emptyList\n }\n}\n\n/**\n * Returns true if the given function holds for every item in\n * the list, false otherwise\n */\nfunction all (fn, list) {\n return !list ||\n (fn(head(list)) && all(fn, tail(list)))\n}\n\n/**\n * Call every function in a list of functions with the same arguments\n *\n * This doesn't make any sense if we're doing pure functional because\n * it doesn't return anything. Hence, this is only really useful if the\n * functions being called have side-effects.\n */\nfunction applyEach (fnList, args) {\n if (fnList) {\n head(fnList).apply(null, args)\n\n applyEach(tail(fnList), args)\n }\n}\n\n/**\n * Reverse the order of a list\n */\nfunction reverseList (list) {\n // js re-implementation of 3rd solution from:\n // http://www.haskell.org/haskellwiki/99_questions/Solutions/5\n function reverseInner (list, reversedAlready) {\n if (!list) {\n return reversedAlready\n }\n\n return reverseInner(tail(list), cons(head(list), reversedAlready))\n }\n\n return reverseInner(list, emptyList)\n}\n\nfunction first (test, list) {\n return list &&\n (test(head(list))\n ? head(list)\n : first(test, tail(list)))\n}\n\n\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return isOfType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return defined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return hasAllProperties; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n\n\n\n/**\n * This file defines some loosely associated syntactic sugar for\n * Javascript programming\n */\n\n/**\n * Returns true if the given candidate is of type T\n */\nfunction isOfType (T, maybeSomething) {\n return maybeSomething && maybeSomething.constructor === T\n}\n\nvar len = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"c\" /* attr */])('length')\nvar isString = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(isOfType, String)\n\n/**\n * I don't like saying this:\n *\n * foo !=== undefined\n *\n * because of the double-negative. I find this:\n *\n * defined(foo)\n *\n * easier to read.\n */\nfunction defined (value) {\n return value !== undefined\n}\n\n/**\n * Returns true if object o has a key named like every property in\n * the properties array. Will give false if any are missing, or if o\n * is not an object.\n */\nfunction hasAllProperties (fieldList, o) {\n return (o instanceof Object) &&\n Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"a\" /* all */])(function (field) {\n return (field in o)\n }, fieldList)\n}\n\n\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return NODE_OPENED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return NODE_CLOSED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return NODE_SWAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return NODE_DROP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return FAIL_EVENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return ROOT_NODE_FOUND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return ROOT_PATH_FOUND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return HTTP_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return STREAM_DATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return STREAM_END; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ABORTING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return SAX_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return SAX_VALUE_OPEN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return SAX_VALUE_CLOSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return errorReport; });\n/**\n * This file declares some constants to use as names for event types.\n */\n\n// the events which are never exported are kept as\n// the smallest possible representation, in numbers:\nvar _S = 1\n\n// fired whenever a new node starts in the JSON stream:\nvar NODE_OPENED = _S++\n\n// fired whenever a node closes in the JSON stream:\nvar NODE_CLOSED = _S++\n\n// called if a .node callback returns a value -\nvar NODE_SWAP = _S++\nvar NODE_DROP = _S++\n\nvar FAIL_EVENT = 'fail'\n\nvar ROOT_NODE_FOUND = _S++\nvar ROOT_PATH_FOUND = _S++\n\nvar HTTP_START = 'start'\nvar STREAM_DATA = 'data'\nvar STREAM_END = 'end'\nvar ABORTING = _S++\n\n// SAX events butchered from Clarinet\nvar SAX_KEY = _S++\nvar SAX_VALUE_OPEN = _S++\nvar SAX_VALUE_CLOSE = _S++\n\nfunction errorReport (statusCode, body, error) {\n try {\n var jsonBody = JSON.parse(body)\n } catch (e) { }\n\n return {\n statusCode: statusCode,\n body: body,\n jsonBody: jsonBody,\n thrown: error\n }\n}\n\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return namedNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return keyOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return nodeOf; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\n/**\n * Get a new key->node mapping\n *\n * @param {String|Number} key\n * @param {Object|Array|String|Number|null} node a value found in the json\n */\nfunction namedNode (key, node) {\n return {key: key, node: node}\n}\n\n/** get the key of a namedNode */\nvar keyOf = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('key')\n\n/** get the node from a namedNode */\nvar nodeOf = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('node')\n\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return oboe; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaults__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__wire__ = __webpack_require__(9);\n\n\n\n\n\n\n// export public API\nfunction oboe (arg1) {\n // We use duck-typing to detect if the parameter given is a stream, with the\n // below list of parameters.\n // Unpipe and unshift would normally be present on a stream but this breaks\n // compatibility with Request streams.\n // See https://github.com/jimhigson/oboe.js/issues/65\n\n var nodeStreamMethodNames = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"h\" /* list */])('resume', 'pause', 'pipe')\n var isStream = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(\n __WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* hasAllProperties */],\n nodeStreamMethodNames\n )\n\n if (arg1) {\n if (isStream(arg1) || Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"d\" /* isString */])(arg1)) {\n // simple version for GETs. Signature is:\n // oboe( url )\n // or, under node:\n // oboe( readableStream )\n return Object(__WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* applyDefaults */])(\n __WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */],\n arg1 // url\n )\n } else {\n // method signature is:\n // oboe({method:m, url:u, body:b, headers:{...}})\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* applyDefaults */])(\n __WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */],\n arg1.url,\n arg1.method,\n arg1.body,\n arg1.headers,\n arg1.withCredentials,\n arg1.cached\n )\n }\n } else {\n // wire up a no-AJAX, no-stream Oboe. Will have to have content\n // fed in externally and using .emit.\n return Object(__WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */])()\n }\n}\n\n/* oboe.drop is a special value. If a node callback returns this value the\n parsed node is deleted from the JSON\n */\noboe.drop = function () {\n return oboe.drop\n}\n\n\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return incrementalContentBuilder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ROOT_PATH; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lists__ = __webpack_require__(1);\n\n\n\n\n\n/**\n * This file provides various listeners which can be used to build up\n * a changing ascent based on the callbacks provided by Clarinet. It listens\n * to the low-level events from Clarinet and emits higher-level ones.\n *\n * The building up is stateless so to track a JSON file\n * ascentManager.js is required to store the ascent state\n * between calls.\n */\n\n/**\n * A special value to use in the path list to represent the path 'to' a root\n * object (which doesn't really have any path). This prevents the need for\n * special-casing detection of the root object and allows it to be treated\n * like any other object. We might think of this as being similar to the\n * 'unnamed root' domain \".\", eg if I go to\n * http://en.wikipedia.org./wiki/En/Main_page the dot after 'org' deliminates\n * the unnamed root of the DNS.\n *\n * This is kept as an object to take advantage that in Javascript's OO objects\n * are guaranteed to be distinct, therefore no other object can possibly clash\n * with this one. Strings, numbers etc provide no such guarantee.\n **/\nvar ROOT_PATH = {}\n\n/**\n * Create a new set of handlers for clarinet's events, bound to the emit\n * function given.\n */\nfunction incrementalContentBuilder (oboeBus) {\n var emitNodeOpened = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"f\" /* NODE_OPENED */]).emit\n var emitNodeClosed = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"d\" /* NODE_CLOSED */]).emit\n var emitRootOpened = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"i\" /* ROOT_PATH_FOUND */]).emit\n var emitRootClosed = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"h\" /* ROOT_NODE_FOUND */]).emit\n\n function arrayIndicesAreKeys (possiblyInconsistentAscent, newDeepestNode) {\n /* for values in arrays we aren't pre-warned of the coming paths\n (Clarinet gives no call to onkey like it does for values in objects)\n so if we are in an array we need to create this path ourselves. The\n key will be len(parentNode) because array keys are always sequential\n numbers. */\n\n var parentNode = Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(possiblyInconsistentAscent))\n\n return Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"c\" /* isOfType */])(Array, parentNode)\n ? keyFound(possiblyInconsistentAscent,\n Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"e\" /* len */])(parentNode),\n newDeepestNode\n )\n // nothing needed, return unchanged\n : possiblyInconsistentAscent\n }\n\n function nodeOpened (ascent, newDeepestNode) {\n if (!ascent) {\n // we discovered the root node,\n emitRootOpened(newDeepestNode)\n\n return keyFound(ascent, ROOT_PATH, newDeepestNode)\n }\n\n // we discovered a non-root node\n\n var arrayConsistentAscent = arrayIndicesAreKeys(ascent, newDeepestNode)\n var ancestorBranches = Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"l\" /* tail */])(arrayConsistentAscent)\n var previouslyUnmappedName = Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"a\" /* keyOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(arrayConsistentAscent))\n\n appendBuiltContent(\n ancestorBranches,\n previouslyUnmappedName,\n newDeepestNode\n )\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"d\" /* cons */])(\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"b\" /* namedNode */])(previouslyUnmappedName, newDeepestNode),\n ancestorBranches\n )\n }\n\n /**\n * Add a new value to the object we are building up to represent the\n * parsed JSON\n */\n function appendBuiltContent (ancestorBranches, key, node) {\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(ancestorBranches))[key] = node\n }\n\n /**\n * For when we find a new key in the json.\n *\n * @param {String|Number|Object} newDeepestName the key. If we are in an\n * array will be a number, otherwise a string. May take the special\n * value ROOT_PATH if the root node has just been found\n *\n * @param {String|Number|Object|Array|Null|undefined} [maybeNewDeepestNode]\n * usually this won't be known so can be undefined. Can't use null\n * to represent unknown because null is a valid value in JSON\n **/\n function keyFound (ascent, newDeepestName, maybeNewDeepestNode) {\n if (ascent) { // if not root\n // If we have the key but (unless adding to an array) no known value\n // yet. Put that key in the output but against no defined value:\n appendBuiltContent(ascent, newDeepestName, maybeNewDeepestNode)\n }\n\n var ascentWithNewPath = Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"d\" /* cons */])(\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"b\" /* namedNode */])(newDeepestName,\n maybeNewDeepestNode),\n ascent\n )\n\n emitNodeOpened(ascentWithNewPath)\n\n return ascentWithNewPath\n }\n\n /**\n * For when the current node ends.\n */\n function nodeClosed (ascent) {\n emitNodeClosed(ascent)\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"l\" /* tail */])(ascent) ||\n // If there are no nodes left in the ascent the root node\n // just closed. Emit a special event for this:\n emitRootClosed(Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(ascent)))\n }\n\n var contentBuilderHandlers = {}\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"l\" /* SAX_VALUE_OPEN */]] = nodeOpened\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"k\" /* SAX_VALUE_CLOSE */]] = nodeClosed\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"j\" /* SAX_KEY */]] = keyFound\n return contentBuilderHandlers\n}\n\n\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__publicApi__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (__WEBPACK_IMPORTED_MODULE_0__publicApi__[\"a\" /* oboe */]);\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return applyDefaults; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(2);\n\n\nfunction applyDefaults (passthrough, url, httpMethodName, body, headers, withCredentials, cached) {\n headers = headers\n // Shallow-clone the headers array. This allows it to be\n // modified without side effects to the caller. We don't\n // want to change objects that the user passes in.\n ? JSON.parse(JSON.stringify(headers))\n : {}\n\n if (body) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__util__[\"d\" /* isString */])(body)) {\n // If the body is not a string, stringify it. This allows objects to\n // be given which will be sent as JSON.\n body = JSON.stringify(body)\n\n // Default Content-Type to JSON unless given otherwise.\n headers['Content-Type'] = headers['Content-Type'] || 'application/json'\n }\n headers['Content-Length'] = headers['Content-Length'] || body.length\n } else {\n body = null\n }\n\n // support cache busting like jQuery.ajax({cache:false})\n function modifiedUrl (baseUrl, cached) {\n if (cached === false) {\n if (baseUrl.indexOf('?') === -1) {\n baseUrl += '?'\n } else {\n baseUrl += '&'\n }\n\n baseUrl += '_=' + new Date().getTime()\n }\n return baseUrl\n }\n\n return passthrough(httpMethodName || 'GET', modifiedUrl(url, cached), body, headers, withCredentials || false)\n}\n\n\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return wire; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pubSub__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascentManager__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__patternAdapter__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__jsonPath__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__instanceApi__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__libs_clarinet__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__ = __webpack_require__(18);\n\n\n\n\n\n\n\n\n\n\n/**\n * This file sits just behind the API which is used to attain a new\n * Oboe instance. It creates the new components that are required\n * and introduces them to each other.\n */\n\nfunction wire (httpMethodName, contentSource, body, headers, withCredentials) {\n var oboeBus = Object(__WEBPACK_IMPORTED_MODULE_0__pubSub__[\"a\" /* pubSub */])()\n\n // Wire the input stream in if we are given a content source.\n // This will usually be the case. If not, the instance created\n // will have to be passed content from an external source.\n\n if (contentSource) {\n Object(__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__[\"b\" /* streamingHttp */])(oboeBus,\n Object(__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__[\"a\" /* httpTransport */])(),\n httpMethodName,\n contentSource,\n body,\n headers,\n withCredentials\n )\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_6__libs_clarinet__[\"a\" /* clarinet */])(oboeBus)\n\n Object(__WEBPACK_IMPORTED_MODULE_1__ascentManager__[\"a\" /* ascentManager */])(oboeBus, Object(__WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__[\"b\" /* incrementalContentBuilder */])(oboeBus))\n\n Object(__WEBPACK_IMPORTED_MODULE_3__patternAdapter__[\"a\" /* patternAdapter */])(oboeBus, __WEBPACK_IMPORTED_MODULE_4__jsonPath__[\"a\" /* jsonPathCompiler */])\n\n return Object(__WEBPACK_IMPORTED_MODULE_5__instanceApi__[\"a\" /* instanceApi */])(oboeBus, contentSource)\n}\n\n\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return pubSub; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n\n\n\n/**\n * pubSub is a curried interface for listening to and emitting\n * events.\n *\n * If we get a bus:\n *\n * var bus = pubSub();\n *\n * We can listen to event 'foo' like:\n *\n * bus('foo').on(myCallback)\n *\n * And emit event foo like:\n *\n * bus('foo').emit()\n *\n * or, with a parameter:\n *\n * bus('foo').emit('bar')\n *\n * All functions can be cached and don't need to be\n * bound. Ie:\n *\n * var fooEmitter = bus('foo').emit\n * fooEmitter('bar'); // emit an event\n * fooEmitter('baz'); // emit another\n *\n * There's also an uncurried[1] shortcut for .emit and .on:\n *\n * bus.on('foo', callback)\n * bus.emit('foo', 'bar')\n *\n * [1]: http://zvon.org/other/haskell/Outputprelude/uncurry_f.html\n */\nfunction pubSub () {\n var singles = {}\n var newListener = newSingle('newListener')\n var removeListener = newSingle('removeListener')\n\n function newSingle (eventName) {\n singles[eventName] = Object(__WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__[\"a\" /* singleEventPubSub */])(\n eventName,\n newListener,\n removeListener\n )\n return singles[eventName]\n }\n\n /** pubSub instances are functions */\n function pubSubInstance (eventName) {\n return singles[eventName] || newSingle(eventName)\n }\n\n // add convenience EventEmitter-style uncurried form of 'emit' and 'on'\n ['emit', 'on', 'un'].forEach(function (methodName) {\n pubSubInstance[methodName] = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"k\" /* varArgs */])(function (eventName, parameters) {\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(parameters, pubSubInstance(eventName)[methodName])\n })\n })\n\n return pubSubInstance\n}\n\n\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return singleEventPubSub; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functional__ = __webpack_require__(0);\n\n\n\n\n/**\n * A pub/sub which is responsible for a single event type. A\n * multi-event type event bus is created by pubSub by collecting\n * several of these.\n *\n * @param {String} eventType\n * the name of the events managed by this singleEventPubSub\n * @param {singleEventPubSub} [newListener]\n * place to notify of new listeners\n * @param {singleEventPubSub} [removeListener]\n * place to notify of when listeners are removed\n */\nfunction singleEventPubSub (eventType, newListener, removeListener) {\n /** we are optimised for emitting events over firing them.\n * As well as the tuple list which stores event ids and\n * listeners there is a list with just the listeners which\n * can be iterated more quickly when we are emitting\n */\n var listenerTupleList,\n listenerList\n\n function hasId (id) {\n return function (tuple) {\n return tuple.id === id\n }\n }\n\n return {\n\n /**\n * @param {Function} listener\n * @param {*} listenerId\n * an id that this listener can later by removed by.\n * Can be of any type, to be compared to other ids using ==\n */\n on: function (listener, listenerId) {\n var tuple = {\n listener: listener,\n id: listenerId || listener // when no id is given use the\n // listener function as the id\n }\n\n if (newListener) {\n newListener.emit(eventType, listener, tuple.id)\n }\n\n listenerTupleList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"d\" /* cons */])(tuple, listenerTupleList)\n listenerList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"d\" /* cons */])(listener, listenerList)\n\n return this // chaining\n },\n\n emit: function () {\n Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"b\" /* applyEach */])(listenerList, arguments)\n },\n\n un: function (listenerId) {\n var removed\n\n listenerTupleList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"m\" /* without */])(\n listenerTupleList,\n hasId(listenerId),\n function (tuple) {\n removed = tuple\n }\n )\n\n if (removed) {\n listenerList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"m\" /* without */])(listenerList, function (listener) {\n return listener === removed.listener\n })\n\n if (removeListener) {\n removeListener.emit(eventType, removed.listener, removed.id)\n }\n }\n },\n\n listeners: function () {\n // differs from Node EventEmitter: returns list, not array\n return listenerList\n },\n\n hasListener: function (listenerId) {\n var test = listenerId ? hasId(listenerId) : __WEBPACK_IMPORTED_MODULE_2__functional__[\"a\" /* always */]\n\n return Object(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* defined */])(Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"e\" /* first */])(test, listenerTupleList))\n }\n }\n}\n\n\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ascentManager; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lists__ = __webpack_require__(1);\n\n\n\n/**\n * A bridge used to assign stateless functions to listen to clarinet.\n *\n * As well as the parameter from clarinet, each callback will also be passed\n * the result of the last callback.\n *\n * This may also be used to clear all listeners by assigning zero handlers:\n *\n * ascentManager( clarinet, {} )\n */\nfunction ascentManager (oboeBus, handlers) {\n 'use strict'\n\n var listenerId = {}\n var ascent\n\n function stateAfter (handler) {\n return function (param) {\n ascent = handler(ascent, param)\n }\n }\n\n for (var eventName in handlers) {\n oboeBus(eventName).on(stateAfter(handlers[eventName]), listenerId)\n }\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"g\" /* NODE_SWAP */]).on(function (newNode) {\n var oldHead = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ascent)\n var key = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"a\" /* keyOf */])(oldHead)\n var ancestors = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"l\" /* tail */])(ascent)\n var parentNode\n\n if (ancestors) {\n parentNode = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ancestors))\n parentNode[key] = newNode\n }\n })\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"e\" /* NODE_DROP */]).on(function () {\n var oldHead = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ascent)\n var key = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"a\" /* keyOf */])(oldHead)\n var ancestors = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"l\" /* tail */])(ascent)\n var parentNode\n\n if (ancestors) {\n parentNode = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ancestors))\n\n delete parentNode[key]\n }\n })\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* ABORTING */]).on(function () {\n for (var eventName in handlers) {\n oboeBus(eventName).un(listenerId)\n }\n })\n}\n\n\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return patternAdapter; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ascent__ = __webpack_require__(4);\n\n\n\n\n/**\n * The pattern adaptor listens for newListener and removeListener\n * events. When patterns are added or removed it compiles the JSONPath\n * and wires them up.\n *\n * When nodes and paths are found it emits the fully-qualified match\n * events with parameters ready to ship to the outside world\n */\n\nfunction patternAdapter (oboeBus, jsonPathCompiler) {\n var predicateEventMap = {\n node: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"d\" /* NODE_CLOSED */]),\n path: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"f\" /* NODE_OPENED */])\n }\n\n function emitMatchingNode (emitMatch, node, ascent) {\n /*\n We're now calling to the outside world where Lisp-style\n lists will not be familiar. Convert to standard arrays.\n\n Also, reverse the order because it is more common to\n list paths \"root to leaf\" than \"leaf to root\" */\n var descent = Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"k\" /* reverseList */])(ascent)\n\n emitMatch(\n node,\n\n // To make a path, strip off the last item which is the special\n // ROOT_PATH token for the 'path' to the root node\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"i\" /* listAsArray */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"l\" /* tail */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"j\" /* map */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"a\" /* keyOf */], descent))), // path\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"i\" /* listAsArray */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"j\" /* map */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */], descent)) // ancestors\n )\n }\n\n /*\n * Set up the catching of events such as NODE_CLOSED and NODE_OPENED and, if\n * matching the specified pattern, propagate to pattern-match events such as\n * oboeBus('node:!')\n *\n *\n *\n * @param {Function} predicateEvent\n * either oboeBus(NODE_CLOSED) or oboeBus(NODE_OPENED).\n * @param {Function} compiledJsonPath\n */\n function addUnderlyingListener (fullEventName, predicateEvent, compiledJsonPath) {\n var emitMatch = oboeBus(fullEventName).emit\n\n predicateEvent.on(function (ascent) {\n var maybeMatchingMapping = compiledJsonPath(ascent)\n\n /* Possible values for maybeMatchingMapping are now:\n\n false:\n we did not match\n\n an object/array/string/number/null:\n we matched and have the node that matched.\n Because nulls are valid json values this can be null.\n\n undefined:\n we matched but don't have the matching node yet.\n ie, we know there is an upcoming node that matches but we\n can't say anything else about it.\n */\n if (maybeMatchingMapping !== false) {\n emitMatchingNode(\n emitMatch,\n Object(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */])(maybeMatchingMapping),\n ascent\n )\n }\n }, fullEventName)\n\n oboeBus('removeListener').on(function (removedEventName) {\n // if the fully qualified match event listener is later removed, clean up\n // by removing the underlying listener if it was the last using that pattern:\n\n if (removedEventName === fullEventName) {\n if (!oboeBus(removedEventName).listeners()) {\n predicateEvent.un(fullEventName)\n }\n }\n })\n }\n\n oboeBus('newListener').on(function (fullEventName) {\n var match = /(node|path):(.*)/.exec(fullEventName)\n\n if (match) {\n var predicateEvent = predicateEventMap[match[1]]\n\n if (!predicateEvent.hasListener(fullEventName)) {\n addUnderlyingListener(\n fullEventName,\n predicateEvent,\n jsonPathCompiler(match[2])\n )\n }\n }\n })\n}\n\n\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return jsonPathCompiler; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__ = __webpack_require__(15);\n\n\n\n\n\n\n\n/**\n * The jsonPath evaluator compiler used for Oboe.js.\n *\n * One function is exposed. This function takes a String JSONPath spec and\n * returns a function to test candidate ascents for matches.\n *\n * String jsonPath -> (List ascent) -> Boolean|Object\n *\n * This file is coded in a pure functional style. That is, no function has\n * side effects, every function evaluates to the same value for the same\n * arguments and no variables are reassigned.\n */\n// the call to jsonPathSyntax injects the token syntaxes that are needed\n// inside the compiler\nvar jsonPathCompiler = Object(__WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__[\"a\" /* jsonPathSyntax */])(function (pathNodeSyntax,\n doubleDotSyntax,\n dotSyntax,\n bangSyntax,\n emptySyntax) {\n var CAPTURING_INDEX = 1\n var NAME_INDEX = 2\n var FIELD_LIST_INDEX = 3\n\n var headKey = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"a\" /* keyOf */], __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n var headNode = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */], __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n\n /**\n * Create an evaluator function for a named path node, expressed in the\n * JSONPath like:\n * foo\n * [\"bar\"]\n * [2]\n */\n function nameClause (previousExpr, detection) {\n var name = detection[NAME_INDEX]\n\n var matchesName = (!name || name === '*')\n ? __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n : function (ascent) { return String(headKey(ascent)) === name }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(matchesName, previousExpr)\n }\n\n /**\n * Create an evaluator function for a a duck-typed node, expressed like:\n *\n * {spin, taste, colour}\n * .particle{spin, taste, colour}\n * *{spin, taste, colour}\n */\n function duckTypeClause (previousExpr, detection) {\n var fieldListStr = detection[FIELD_LIST_INDEX]\n\n if (!fieldListStr) { return previousExpr } // don't wrap at all, return given expr as-is\n\n var hasAllrequiredFields = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"j\" /* partialComplete */])(\n __WEBPACK_IMPORTED_MODULE_3__util__[\"b\" /* hasAllProperties */],\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"c\" /* arrayAsList */])(fieldListStr.split(/\\W+/))\n )\n\n var isMatch = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(\n hasAllrequiredFields,\n headNode\n )\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(isMatch, previousExpr)\n }\n\n /**\n * Expression for $, returns the evaluator function\n */\n function capture (previousExpr, detection) {\n // extract meaning from the detection\n var capturing = !!detection[CAPTURING_INDEX]\n\n if (!capturing) { return previousExpr } // don't wrap at all, return given expr as-is\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(previousExpr, __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n }\n\n /**\n * Create an evaluator function that moves onto the next item on the\n * lists. This function is the place where the logic to move up a\n * level in the ascent exists.\n *\n * Eg, for JSONPath \".foo\" we need skip1(nameClause(always, [,'foo']))\n */\n function skip1 (previousExpr) {\n if (previousExpr === __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]) {\n /* If there is no previous expression this consume command\n is at the start of the jsonPath.\n Since JSONPath specifies what we'd like to find but not\n necessarily everything leading down to it, when running\n out of JSONPath to check against we default to true */\n return __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n }\n\n /** return true if the ascent we have contains only the JSON root,\n * false otherwise\n */\n function notAtRoot (ascent) {\n return headKey(ascent) !== __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__[\"a\" /* ROOT_PATH */]\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(\n /* If we're already at the root but there are more\n expressions to satisfy, can't consume any more. No match.\n\n This check is why none of the other exprs have to be able\n to handle empty lists; skip1 is the only evaluator that\n moves onto the next token and it refuses to do so once it\n reaches the last item in the list. */\n notAtRoot,\n\n /* We are not at the root of the ascent yet.\n Move to the next level of the ascent by handing only\n the tail to the previous expression */\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(previousExpr, __WEBPACK_IMPORTED_MODULE_1__lists__[\"l\" /* tail */])\n )\n }\n\n /**\n * Create an evaluator function for the .. (double dot) token. Consumes\n * zero or more levels of the ascent, the fewest that are required to find\n * a match when given to previousExpr.\n */\n function skipMany (previousExpr) {\n if (previousExpr === __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]) {\n /* If there is no previous expression this consume command\n is at the start of the jsonPath.\n Since JSONPath specifies what we'd like to find but not\n necessarily everything leading down to it, when running\n out of JSONPath to check against we default to true */\n return __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n }\n\n // In JSONPath .. is equivalent to !.. so if .. reaches the root\n // the match has succeeded. Ie, we might write ..foo or !..foo\n // and both should match identically.\n var terminalCaseWhenArrivingAtRoot = rootExpr()\n var terminalCaseWhenPreviousExpressionIsSatisfied = previousExpr\n var recursiveCase = skip1(function (ascent) {\n return cases(ascent)\n })\n\n var cases = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n terminalCaseWhenArrivingAtRoot\n , terminalCaseWhenPreviousExpressionIsSatisfied\n , recursiveCase\n )\n\n return cases\n }\n\n /**\n * Generate an evaluator for ! - matches only the root element of the json\n * and ignores any previous expressions since nothing may precede !.\n */\n function rootExpr () {\n return function (ascent) {\n return headKey(ascent) === __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__[\"a\" /* ROOT_PATH */]\n }\n }\n\n /**\n * Generate a statement wrapper to sit around the outermost\n * clause evaluator.\n *\n * Handles the case where the capturing is implicit because the JSONPath\n * did not contain a '$' by returning the last node.\n */\n function statementExpr (lastClause) {\n return function (ascent) {\n // kick off the evaluation by passing through to the last clause\n var exprMatch = lastClause(ascent)\n\n return exprMatch === true ? Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])(ascent) : exprMatch\n }\n }\n\n /**\n * For when a token has been found in the JSONPath input.\n * Compiles the parser for that token and returns in combination with the\n * parser already generated.\n *\n * @param {Function} exprs a list of the clause evaluator generators for\n * the token that was found\n * @param {Function} parserGeneratedSoFar the parser already found\n * @param {Array} detection the match given by the regex engine when\n * the feature was found\n */\n function expressionsReader (exprs, parserGeneratedSoFar, detection) {\n // if exprs is zero-length foldR will pass back the\n // parserGeneratedSoFar as-is so we don't need to treat\n // this as a special case\n\n return Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"f\" /* foldR */])(\n function (parserGeneratedSoFar, expr) {\n return expr(parserGeneratedSoFar, detection)\n },\n parserGeneratedSoFar,\n exprs\n )\n }\n\n /**\n * If jsonPath matches the given detector function, creates a function which\n * evaluates against every clause in the clauseEvaluatorGenerators. The\n * created function is propagated to the onSuccess function, along with\n * the remaining unparsed JSONPath substring.\n *\n * The intended use is to create a clauseMatcher by filling in\n * the first two arguments, thus providing a function that knows\n * some syntax to match and what kind of generator to create if it\n * finds it. The parameter list once completed is:\n *\n * (jsonPath, parserGeneratedSoFar, onSuccess)\n *\n * onSuccess may be compileJsonPathToFunction, to recursively continue\n * parsing after finding a match or returnFoundParser to stop here.\n */\n function generateClauseReaderIfTokenFound (\n\n tokenDetector, clauseEvaluatorGenerators,\n\n jsonPath, parserGeneratedSoFar, onSuccess) {\n var detected = tokenDetector(jsonPath)\n\n if (detected) {\n var compiledParser = expressionsReader(\n clauseEvaluatorGenerators,\n parserGeneratedSoFar,\n detected\n )\n\n var remainingUnparsedJsonPath = jsonPath.substr(Object(__WEBPACK_IMPORTED_MODULE_3__util__[\"e\" /* len */])(detected[0]))\n\n return onSuccess(remainingUnparsedJsonPath, compiledParser)\n }\n }\n\n /**\n * Partially completes generateClauseReaderIfTokenFound above.\n */\n function clauseMatcher (tokenDetector, exprs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"j\" /* partialComplete */])(\n generateClauseReaderIfTokenFound,\n tokenDetector,\n exprs\n )\n }\n\n /**\n * clauseForJsonPath is a function which attempts to match against\n * several clause matchers in order until one matches. If non match the\n * jsonPath expression is invalid and an error is thrown.\n *\n * The parameter list is the same as a single clauseMatcher:\n *\n * (jsonPath, parserGeneratedSoFar, onSuccess)\n */\n var clauseForJsonPath = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n\n clauseMatcher(pathNodeSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(capture,\n duckTypeClause,\n nameClause,\n skip1))\n\n , clauseMatcher(doubleDotSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(skipMany))\n\n // dot is a separator only (like whitespace in other languages) but\n // rather than make it a special case, use an empty list of\n // expressions when this token is found\n , clauseMatcher(dotSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])())\n\n , clauseMatcher(bangSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(capture,\n rootExpr))\n\n , clauseMatcher(emptySyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(statementExpr))\n\n , function (jsonPath) {\n throw Error('\"' + jsonPath + '\" could not be tokenised')\n }\n )\n\n /**\n * One of two possible values for the onSuccess argument of\n * generateClauseReaderIfTokenFound.\n *\n * When this function is used, generateClauseReaderIfTokenFound simply\n * returns the compiledParser that it made, regardless of if there is\n * any remaining jsonPath to be compiled.\n */\n function returnFoundParser (_remainingJsonPath, compiledParser) {\n return compiledParser\n }\n\n /**\n * Recursively compile a JSONPath expression.\n *\n * This function serves as one of two possible values for the onSuccess\n * argument of generateClauseReaderIfTokenFound, meaning continue to\n * recursively compile. Otherwise, returnFoundParser is given and\n * compilation terminates.\n */\n function compileJsonPathToFunction (uncompiledJsonPath,\n parserGeneratedSoFar) {\n /**\n * On finding a match, if there is remaining text to be compiled\n * we want to either continue parsing using a recursive call to\n * compileJsonPathToFunction. Otherwise, we want to stop and return\n * the parser that we have found so far.\n */\n var onFind = uncompiledJsonPath\n ? compileJsonPathToFunction\n : returnFoundParser\n\n return clauseForJsonPath(\n uncompiledJsonPath,\n parserGeneratedSoFar,\n onFind\n )\n }\n\n /**\n * This is the function that we expose to the rest of the library.\n */\n return function (jsonPath) {\n try {\n // Kick off the recursive parsing of the jsonPath\n return compileJsonPathToFunction(jsonPath, __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */])\n } catch (e) {\n throw Error('Could not compile \"' + jsonPath +\n '\" because ' + e.message\n )\n }\n }\n})\n\n\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return jsonPathSyntax; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\nvar jsonPathSyntax = (function () {\n /**\n * Export a regular expression as a simple function by exposing just\n * the Regex#exec. This allows regex tests to be used under the same\n * interface as differently implemented tests, or for a user of the\n * tests to not concern themselves with their implementation as regular\n * expressions.\n *\n * This could also be expressed point-free as:\n * Function.prototype.bind.bind(RegExp.prototype.exec),\n *\n * But that's far too confusing! (and not even smaller once minified\n * and gzipped)\n */\n var regexDescriptor = function regexDescriptor (regex) {\n return regex.exec.bind(regex)\n }\n\n /**\n * Join several regular expressions and express as a function.\n * This allows the token patterns to reuse component regular expressions\n * instead of being expressed in full using huge and confusing regular\n * expressions.\n */\n var jsonPathClause = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"k\" /* varArgs */])(function (componentRegexes) {\n // The regular expressions all start with ^ because we\n // only want to find matches at the start of the\n // JSONPath fragment we are inspecting\n componentRegexes.unshift(/^/)\n\n return regexDescriptor(\n RegExp(\n componentRegexes.map(Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('source')).join('')\n )\n )\n })\n\n var possiblyCapturing = /(\\$?)/\n var namedNode = /([\\w-_]+|\\*)/\n var namePlaceholder = /()/\n var nodeInArrayNotation = /\\[\"([^\"]+)\"\\]/\n var numberedNodeInArrayNotation = /\\[(\\d+|\\*)\\]/\n var fieldList = /{([\\w ]*?)}/\n var optionalFieldList = /(?:{([\\w ]*?)})?/\n\n // foo or *\n var jsonPathNamedNodeInObjectNotation = jsonPathClause(\n possiblyCapturing,\n namedNode,\n optionalFieldList\n )\n\n // [\"foo\"]\n var jsonPathNamedNodeInArrayNotation = jsonPathClause(\n possiblyCapturing,\n nodeInArrayNotation,\n optionalFieldList\n )\n\n // [2] or [*]\n var jsonPathNumberedNodeInArrayNotation = jsonPathClause(\n possiblyCapturing,\n numberedNodeInArrayNotation,\n optionalFieldList\n )\n\n // {a b c}\n var jsonPathPureDuckTyping = jsonPathClause(\n possiblyCapturing,\n namePlaceholder,\n fieldList\n )\n\n // ..\n var jsonPathDoubleDot = jsonPathClause(/\\.\\./)\n\n // .\n var jsonPathDot = jsonPathClause(/\\./)\n\n // !\n var jsonPathBang = jsonPathClause(\n possiblyCapturing,\n /!/\n )\n\n // nada!\n var emptyString = jsonPathClause(/$/)\n\n /* We export only a single function. When called, this function injects\n into another function the descriptors from above.\n */\n return function (fn) {\n return fn(\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n jsonPathNamedNodeInObjectNotation\n , jsonPathNamedNodeInArrayNotation\n , jsonPathNumberedNodeInArrayNotation\n , jsonPathPureDuckTyping\n )\n , jsonPathDoubleDot\n , jsonPathDot\n , jsonPathBang\n , emptyString\n )\n }\n}())\n\n\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return instanceApi; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__publicApi__ = __webpack_require__(5);\n\n\n\n\n\n/**\n * The instance API is the thing that is returned when oboe() is called.\n * it allows:\n *\n * - listeners for various events to be added and removed\n * - the http response header/headers to be read\n */\nfunction instanceApi (oboeBus, contentSource) {\n var oboeApi\n var fullyQualifiedNamePattern = /^(node|path):./\n var rootNodeFinishedEvent = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"h\" /* ROOT_NODE_FOUND */])\n var emitNodeDrop = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"e\" /* NODE_DROP */]).emit\n var emitNodeSwap = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"g\" /* NODE_SWAP */]).emit\n\n /**\n * Add any kind of listener that the instance api exposes\n */\n var addListener = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"k\" /* varArgs */])(function (eventId, parameters) {\n if (oboeApi[eventId]) {\n // for events added as .on(event, callback), if there is a\n // .event() equivalent with special behaviour , pass through\n // to that:\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(parameters, oboeApi[eventId])\n } else {\n // we have a standard Node.js EventEmitter 2-argument call.\n // The first parameter is the listener.\n var event = oboeBus(eventId)\n var listener = parameters[0]\n\n if (fullyQualifiedNamePattern.test(eventId)) {\n // allow fully-qualified node/path listeners\n // to be added\n addForgettableCallback(event, wrapCallbackToSwapNodeIfSomethingReturned(listener))\n } else {\n // the event has no special handling, pass through\n // directly onto the event bus:\n event.on(listener)\n }\n }\n\n return oboeApi // chaining\n })\n\n /**\n * Remove any kind of listener that the instance api exposes\n */\n var removeListener = function (eventId, p2, p3) {\n if (eventId === 'done') {\n rootNodeFinishedEvent.un(p2)\n } else if (eventId === 'node' || eventId === 'path') {\n // allow removal of node and path\n oboeBus.un(eventId + ':' + p2, p3)\n } else {\n // we have a standard Node.js EventEmitter 2-argument call.\n // The second parameter is the listener. This may be a call\n // to remove a fully-qualified node/path listener but requires\n // no special handling\n var listener = p2\n\n oboeBus(eventId).un(listener)\n }\n\n return oboeApi // chaining\n }\n\n /**\n * Add a callback, wrapped in a try/catch so as to not break the\n * execution of Oboe if an exception is thrown (fail events are\n * fired instead)\n *\n * The callback is used as the listener id so that it can later be\n * removed using .un(callback)\n */\n function addProtectedCallback (eventName, callback) {\n oboeBus(eventName).on(protectedCallback(callback), callback)\n return oboeApi // chaining\n }\n\n /**\n * Add a callback where, if .forget() is called during the callback's\n * execution, the callback will be de-registered\n */\n function addForgettableCallback (event, callback, listenerId) {\n // listenerId is optional and if not given, the original\n // callback will be used\n listenerId = listenerId || callback\n\n var safeCallback = protectedCallback(callback)\n\n event.on(function () {\n var discard = false\n\n oboeApi.forget = function () {\n discard = true\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(arguments, safeCallback)\n\n delete oboeApi.forget\n\n if (discard) {\n event.un(listenerId)\n }\n }, listenerId)\n\n return oboeApi // chaining\n }\n\n /**\n * wrap a callback so that if it throws, Oboe.js doesn't crash but instead\n * throw the error in another event loop\n */\n function protectedCallback (callback) {\n return function () {\n try {\n return callback.apply(oboeApi, arguments)\n } catch (e) {\n setTimeout(function () {\n throw new Error(e.message)\n })\n }\n }\n }\n\n /**\n * Return the fully qualified event for when a pattern matches\n * either a node or a path\n *\n * @param type {String} either 'node' or 'path'\n */\n function fullyQualifiedPatternMatchEvent (type, pattern) {\n return oboeBus(type + ':' + pattern)\n }\n\n function wrapCallbackToSwapNodeIfSomethingReturned (callback) {\n return function () {\n var returnValueFromCallback = callback.apply(this, arguments)\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* defined */])(returnValueFromCallback)) {\n if (returnValueFromCallback === __WEBPACK_IMPORTED_MODULE_3__publicApi__[\"a\" /* oboe */].drop) {\n emitNodeDrop()\n } else {\n emitNodeSwap(returnValueFromCallback)\n }\n }\n }\n }\n\n function addSingleNodeOrPathListener (eventId, pattern, callback) {\n var effectiveCallback\n\n if (eventId === 'node') {\n effectiveCallback = wrapCallbackToSwapNodeIfSomethingReturned(callback)\n } else {\n effectiveCallback = callback\n }\n\n addForgettableCallback(\n fullyQualifiedPatternMatchEvent(eventId, pattern),\n effectiveCallback,\n callback\n )\n }\n\n /**\n * Add several listeners at a time, from a map\n */\n function addMultipleNodeOrPathListeners (eventId, listenerMap) {\n for (var pattern in listenerMap) {\n addSingleNodeOrPathListener(eventId, pattern, listenerMap[pattern])\n }\n }\n\n /**\n * implementation behind .onPath() and .onNode()\n */\n function addNodeOrPathListenerApi (eventId, jsonPathOrListenerMap, callback) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"d\" /* isString */])(jsonPathOrListenerMap)) {\n addSingleNodeOrPathListener(eventId, jsonPathOrListenerMap, callback)\n } else {\n addMultipleNodeOrPathListeners(eventId, jsonPathOrListenerMap)\n }\n\n return oboeApi // chaining\n }\n\n // some interface methods are only filled in after we receive\n // values and are noops before that:\n oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"i\" /* ROOT_PATH_FOUND */]).on(function (rootNode) {\n oboeApi.root = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"f\" /* functor */])(rootNode)\n })\n\n /**\n * When content starts make the headers readable through the\n * instance API\n */\n oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"c\" /* HTTP_START */]).on(function (_statusCode, headers) {\n oboeApi.header = function (name) {\n return name ? headers[name]\n : headers\n }\n })\n\n /**\n * Construct and return the public API of the Oboe instance to be\n * returned to the calling application\n */\n oboeApi = {\n on: addListener,\n addListener: addListener,\n removeListener: removeListener,\n emit: oboeBus.emit,\n\n node: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addNodeOrPathListenerApi, 'node'),\n path: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addNodeOrPathListenerApi, 'path'),\n\n done: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addForgettableCallback, rootNodeFinishedEvent),\n start: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addProtectedCallback, __WEBPACK_IMPORTED_MODULE_0__events__[\"c\" /* HTTP_START */]),\n\n // fail doesn't use protectedCallback because\n // could lead to non-terminating loops\n fail: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"b\" /* FAIL_EVENT */]).on,\n\n // public api calling abort fires the ABORTING event\n abort: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"a\" /* ABORTING */]).emit,\n\n // initially return nothing for header and root\n header: __WEBPACK_IMPORTED_MODULE_1__functional__[\"i\" /* noop */],\n root: __WEBPACK_IMPORTED_MODULE_1__functional__[\"i\" /* noop */],\n\n source: contentSource\n }\n\n return oboeApi\n}\n\n\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return clarinet; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n\n\n/*\n This is a slightly hacked-up browser only version of clarinet\n\n * some features removed to help keep browser Oboe under\n the 5k micro-library limit\n * plug directly into event bus\n\n For the original go here:\n https://github.com/dscape/clarinet\n\n We receive the events:\n STREAM_DATA\n STREAM_END\n\n We emit the events:\n SAX_KEY\n SAX_VALUE_OPEN\n SAX_VALUE_CLOSE\n FAIL_EVENT\n */\n\nfunction clarinet (eventBus) {\n 'use strict'\n\n // shortcut some events on the bus\n var emitSaxKey = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"j\" /* SAX_KEY */]).emit\n var emitValueOpen = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"l\" /* SAX_VALUE_OPEN */]).emit\n var emitValueClose = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"k\" /* SAX_VALUE_CLOSE */]).emit\n var emitFail = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"b\" /* FAIL_EVENT */]).emit\n\n var MAX_BUFFER_LENGTH = 64 * 1024\n var stringTokenPattern = /[\\\\\"\\n]/g\n var _n = 0\n\n // states\n var BEGIN = _n++\n var VALUE = _n++ // general stuff\n var OPEN_OBJECT = _n++ // {\n var CLOSE_OBJECT = _n++ // }\n var OPEN_ARRAY = _n++ // [\n var CLOSE_ARRAY = _n++ // ]\n var STRING = _n++ // \"\"\n var OPEN_KEY = _n++ // , \"a\"\n var CLOSE_KEY = _n++ // :\n var TRUE = _n++ // r\n var TRUE2 = _n++ // u\n var TRUE3 = _n++ // e\n var FALSE = _n++ // a\n var FALSE2 = _n++ // l\n var FALSE3 = _n++ // s\n var FALSE4 = _n++ // e\n var NULL = _n++ // u\n var NULL2 = _n++ // l\n var NULL3 = _n++ // l\n var NUMBER_DECIMAL_POINT = _n++ // .\n var NUMBER_DIGIT = _n // [0-9]\n\n // setup initial parser values\n var bufferCheckPosition = MAX_BUFFER_LENGTH\n var latestError\n var c\n var p\n var textNode\n var numberNode = ''\n var slashed = false\n var closed = false\n var state = BEGIN\n var stack = []\n var unicodeS = null\n var unicodeI = 0\n var depth = 0\n var position = 0\n var column = 0 // mostly for error reporting\n var line = 1\n\n function checkBufferLength () {\n var maxActual = 0\n\n if (textNode !== undefined && textNode.length > MAX_BUFFER_LENGTH) {\n emitError('Max buffer length exceeded: textNode')\n maxActual = Math.max(maxActual, textNode.length)\n }\n if (numberNode.length > MAX_BUFFER_LENGTH) {\n emitError('Max buffer length exceeded: numberNode')\n maxActual = Math.max(maxActual, numberNode.length)\n }\n\n bufferCheckPosition = (MAX_BUFFER_LENGTH - maxActual) +\n position\n }\n\n eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"m\" /* STREAM_DATA */]).on(handleData)\n\n /* At the end of the http content close the clarinet\n This will provide an error if the total content provided was not\n valid json, ie if not all arrays, objects and Strings closed properly */\n eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"n\" /* STREAM_END */]).on(handleStreamEnd)\n\n function emitError (errorString) {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n\n latestError = Error(errorString + '\\nLn: ' + line +\n '\\nCol: ' + column +\n '\\nChr: ' + c)\n\n emitFail(Object(__WEBPACK_IMPORTED_MODULE_0__events__[\"o\" /* errorReport */])(undefined, undefined, latestError))\n }\n\n function handleStreamEnd () {\n if (state === BEGIN) {\n // Handle the case where the stream closes without ever receiving\n // any input. This isn't an error - response bodies can be blank,\n // particularly for 204 http responses\n\n // Because of how Oboe is currently implemented, we parse a\n // completely empty stream as containing an empty object.\n // This is because Oboe's done event is only fired when the\n // root object of the JSON stream closes.\n\n // This should be decoupled and attached instead to the input stream\n // from the http (or whatever) resource ending.\n // If this decoupling could happen the SAX parser could simply emit\n // zero events on a completely empty input.\n emitValueOpen({})\n emitValueClose()\n\n closed = true\n return\n }\n\n if (state !== VALUE || depth !== 0) { emitError('Unexpected end') }\n\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n\n closed = true\n }\n\n function whitespace (c) {\n return c === '\\r' || c === '\\n' || c === ' ' || c === '\\t'\n }\n\n function handleData (chunk) {\n // this used to throw the error but inside Oboe we will have already\n // gotten the error when it was emitted. The important thing is to\n // not continue with the parse.\n if (latestError) { return }\n\n if (closed) {\n return emitError('Cannot write after close')\n }\n\n var i = 0\n c = chunk[0]\n\n while (c) {\n if (i > 0) {\n p = c\n }\n c = chunk[i++]\n if (!c) break\n\n position++\n if (c === '\\n') {\n line++\n column = 0\n } else column++\n switch (state) {\n case BEGIN:\n if (c === '{') state = OPEN_OBJECT\n else if (c === '[') state = OPEN_ARRAY\n else if (!whitespace(c)) { return emitError('Non-whitespace before {[.') }\n continue\n\n case OPEN_KEY:\n case OPEN_OBJECT:\n if (whitespace(c)) continue\n if (state === OPEN_KEY) stack.push(CLOSE_KEY)\n else {\n if (c === '}') {\n emitValueOpen({})\n emitValueClose()\n state = stack.pop() || VALUE\n continue\n } else stack.push(CLOSE_OBJECT)\n }\n if (c === '\"') { state = STRING } else { return emitError('Malformed object key should start with \" ') }\n continue\n\n case CLOSE_KEY:\n case CLOSE_OBJECT:\n if (whitespace(c)) continue\n\n if (c === ':') {\n if (state === CLOSE_OBJECT) {\n stack.push(CLOSE_OBJECT)\n\n if (textNode !== undefined) {\n // was previously (in upstream Clarinet) one event\n // - object open came with the text of the first\n emitValueOpen({})\n emitSaxKey(textNode)\n textNode = undefined\n }\n depth++\n } else {\n if (textNode !== undefined) {\n emitSaxKey(textNode)\n textNode = undefined\n }\n }\n state = VALUE\n } else if (c === '}') {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n } else if (c === ',') {\n if (state === CLOSE_OBJECT) { stack.push(CLOSE_OBJECT) }\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n state = OPEN_KEY\n } else { return emitError('Bad object') }\n continue\n\n case OPEN_ARRAY: // after an array there always a value\n case VALUE:\n if (whitespace(c)) continue\n if (state === OPEN_ARRAY) {\n emitValueOpen([])\n depth++\n state = VALUE\n if (c === ']') {\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n continue\n } else {\n stack.push(CLOSE_ARRAY)\n }\n }\n if (c === '\"') state = STRING\n else if (c === '{') state = OPEN_OBJECT\n else if (c === '[') state = OPEN_ARRAY\n else if (c === 't') state = TRUE\n else if (c === 'f') state = FALSE\n else if (c === 'n') state = NULL\n else if (c === '-') { // keep and continue\n numberNode += c\n } else if (c === '0') {\n numberNode += c\n state = NUMBER_DIGIT\n } else if ('123456789'.indexOf(c) !== -1) {\n numberNode += c\n state = NUMBER_DIGIT\n } else { return emitError('Bad value') }\n continue\n\n case CLOSE_ARRAY:\n if (c === ',') {\n stack.push(CLOSE_ARRAY)\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n state = VALUE\n } else if (c === ']') {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n } else if (whitespace(c)) { continue } else { return emitError('Bad array') }\n continue\n\n case STRING:\n if (textNode === undefined) {\n textNode = ''\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i - 1\n\n // eslint-disable-next-line no-labels\n STRING_BIGLOOP: while (true) {\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n unicodeS += c\n c = chunk.charAt(i++)\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n textNode += String.fromCharCode(parseInt(unicodeS, 16))\n unicodeI = 0\n starti = i - 1\n } else {\n unicodeI++\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n // eslint-disable-next-line no-labels\n if (!c) break STRING_BIGLOOP\n }\n if (c === '\"' && !slashed) {\n state = stack.pop() || VALUE\n textNode += chunk.substring(starti, i - 1)\n break\n }\n if (c === '\\\\' && !slashed) {\n slashed = true\n textNode += chunk.substring(starti, i - 1)\n c = chunk.charAt(i++)\n if (!c) break\n }\n if (slashed) {\n slashed = false\n if (c === 'n') { textNode += '\\n' } else if (c === 'r') { textNode += '\\r' } else if (c === 't') { textNode += '\\t' } else if (c === 'f') { textNode += '\\f' } else if (c === 'b') { textNode += '\\b' } else if (c === 'u') {\n // \\uxxxx. meh!\n unicodeI = 1\n unicodeS = ''\n } else {\n textNode += c\n }\n c = chunk.charAt(i++)\n starti = i - 1\n if (!c) break\n else continue\n }\n\n stringTokenPattern.lastIndex = i\n var reResult = stringTokenPattern.exec(chunk)\n if (!reResult) {\n i = chunk.length + 1\n textNode += chunk.substring(starti, i - 1)\n break\n }\n i = reResult.index + 1\n c = chunk.charAt(reResult.index)\n if (!c) {\n textNode += chunk.substring(starti, i - 1)\n break\n }\n }\n continue\n\n case TRUE:\n if (!c) continue // strange buffers\n if (c === 'r') state = TRUE2\n else { return emitError('Invalid true started with t' + c) }\n continue\n\n case TRUE2:\n if (!c) continue\n if (c === 'u') state = TRUE3\n else { return emitError('Invalid true started with tr' + c) }\n continue\n\n case TRUE3:\n if (!c) continue\n if (c === 'e') {\n emitValueOpen(true)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid true started with tru' + c) }\n continue\n\n case FALSE:\n if (!c) continue\n if (c === 'a') state = FALSE2\n else { return emitError('Invalid false started with f' + c) }\n continue\n\n case FALSE2:\n if (!c) continue\n if (c === 'l') state = FALSE3\n else { return emitError('Invalid false started with fa' + c) }\n continue\n\n case FALSE3:\n if (!c) continue\n if (c === 's') state = FALSE4\n else { return emitError('Invalid false started with fal' + c) }\n continue\n\n case FALSE4:\n if (!c) continue\n if (c === 'e') {\n emitValueOpen(false)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid false started with fals' + c) }\n continue\n\n case NULL:\n if (!c) continue\n if (c === 'u') state = NULL2\n else { return emitError('Invalid null started with n' + c) }\n continue\n\n case NULL2:\n if (!c) continue\n if (c === 'l') state = NULL3\n else { return emitError('Invalid null started with nu' + c) }\n continue\n\n case NULL3:\n if (!c) continue\n if (c === 'l') {\n emitValueOpen(null)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid null started with nul' + c) }\n continue\n\n case NUMBER_DECIMAL_POINT:\n if (c === '.') {\n numberNode += c\n state = NUMBER_DIGIT\n } else { return emitError('Leading zero not followed by .') }\n continue\n\n case NUMBER_DIGIT:\n if ('0123456789'.indexOf(c) !== -1) numberNode += c\n else if (c === '.') {\n if (numberNode.indexOf('.') !== -1) { return emitError('Invalid number has two dots') }\n numberNode += c\n } else if (c === 'e' || c === 'E') {\n if (numberNode.indexOf('e') !== -1 ||\n numberNode.indexOf('E') !== -1) { return emitError('Invalid number has two exponential') }\n numberNode += c\n } else if (c === '+' || c === '-') {\n if (!(p === 'e' || p === 'E')) { return emitError('Invalid symbol in number') }\n numberNode += c\n } else {\n if (numberNode) {\n emitValueOpen(parseFloat(numberNode))\n emitValueClose()\n numberNode = ''\n }\n i-- // go back one\n state = stack.pop() || VALUE\n }\n continue\n\n default:\n return emitError('Unknown state: ' + state)\n }\n }\n if (position >= bufferCheckPosition) { checkBufferLength() }\n }\n}\n\n\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return httpTransport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return streamingHttp; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__functional__ = __webpack_require__(0);\n\n\n\n\n\n\nfunction httpTransport () {\n return new XMLHttpRequest()\n}\n\n/**\n * A wrapper around the browser XmlHttpRequest object that raises an\n * event whenever a new part of the response is available.\n *\n * In older browsers progressive reading is impossible so all the\n * content is given in a single call. For newer ones several events\n * should be raised, allowing progressive interpretation of the response.\n *\n * @param {Function} oboeBus an event bus local to this Oboe instance\n * @param {XMLHttpRequest} xhr the xhr to use as the transport. Under normal\n * operation, will have been created using httpTransport() above\n * but for tests a stub can be provided instead.\n * @param {String} method one of 'GET' 'POST' 'PUT' 'PATCH' 'DELETE'\n * @param {String} url the url to make a request to\n * @param {String|Null} data some content to be sent with the request.\n * Only valid if method is POST or PUT.\n * @param {Object} [headers] the http request headers to send\n * @param {boolean} withCredentials the XHR withCredentials property will be\n * set to this value\n */\nfunction streamingHttp (oboeBus, xhr, method, url, data, headers, withCredentials) {\n 'use strict'\n\n var emitStreamData = oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"m\" /* STREAM_DATA */]).emit\n var emitFail = oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"b\" /* FAIL_EVENT */]).emit\n var numberOfCharsAlreadyGivenToCallback = 0\n var stillToSendStartEvent = true\n\n // When an ABORTING message is put on the event bus abort\n // the ajax request\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* ABORTING */]).on(function () {\n // if we keep the onreadystatechange while aborting the XHR gives\n // a callback like a successful call so first remove this listener\n // by assigning null:\n xhr.onreadystatechange = null\n\n xhr.abort()\n })\n\n /**\n * Handle input from the underlying xhr: either a state change,\n * the progress event or the request being complete.\n */\n function handleProgress () {\n if (String(xhr.status)[0] === '2') {\n var textSoFar = xhr.responseText\n var newText = (' ' + textSoFar.substr(numberOfCharsAlreadyGivenToCallback)).substr(1)\n\n /* Raise the event for new text.\n\n On older browsers, the new text is the whole response.\n On newer/better ones, the fragment part that we got since\n last progress. */\n\n if (newText) {\n emitStreamData(newText)\n }\n\n numberOfCharsAlreadyGivenToCallback = Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"e\" /* len */])(textSoFar)\n }\n }\n\n if ('onprogress' in xhr) { // detect browser support for progressive delivery\n xhr.onprogress = handleProgress\n }\n\n function sendStartIfNotAlready (xhr) {\n // Internet Explorer is very unreliable as to when xhr.status etc can\n // be read so has to be protected with try/catch and tried again on\n // the next readyState if it fails\n try {\n stillToSendStartEvent && oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"c\" /* HTTP_START */]).emit(\n xhr.status,\n Object(__WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__[\"a\" /* parseResponseHeaders */])(xhr.getAllResponseHeaders()))\n stillToSendStartEvent = false\n } catch (e) { /* do nothing, will try again on next readyState */ }\n }\n\n xhr.onreadystatechange = function () {\n switch (xhr.readyState) {\n case 2: // HEADERS_RECEIVED\n case 3: // LOADING\n return sendStartIfNotAlready(xhr)\n\n case 4: // DONE\n sendStartIfNotAlready(xhr) // if xhr.status hasn't been available yet, it must be NOW, huh IE?\n\n // is this a 2xx http code?\n var successful = String(xhr.status)[0] === '2'\n\n if (successful) {\n // In Chrome 29 (not 28) no onprogress is emitted when a response\n // is complete before the onload. We need to always do handleInput\n // in case we get the load but have not had a final progress event.\n // This looks like a bug and may change in future but let's take\n // the safest approach and assume we might not have received a\n // progress event for each part of the response\n handleProgress()\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"n\" /* STREAM_END */]).emit()\n } else {\n emitFail(Object(__WEBPACK_IMPORTED_MODULE_1__events__[\"o\" /* errorReport */])(\n xhr.status,\n xhr.responseText\n ))\n }\n }\n }\n\n try {\n xhr.open(method, url, true)\n\n for (var headerName in headers) {\n xhr.setRequestHeader(headerName, headers[headerName])\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__[\"a\" /* isCrossOrigin */])(window.location, Object(__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__[\"b\" /* parseUrlOrigin */])(url))) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n }\n\n xhr.withCredentials = withCredentials\n\n xhr.send(data)\n } catch (e) {\n // To keep a consistent interface with Node, we can't emit an event here.\n // Node's streaming http adaptor receives the error as an asynchronous\n // event rather than as an exception. If we emitted now, the Oboe user\n // has had no chance to add a .fail listener so there is no way\n // the event could be useful. For both these reasons defer the\n // firing to the next JS frame.\n window.setTimeout(\n Object(__WEBPACK_IMPORTED_MODULE_4__functional__[\"j\" /* partialComplete */])(emitFail, Object(__WEBPACK_IMPORTED_MODULE_1__events__[\"o\" /* errorReport */])(undefined, undefined, e))\n , 0\n )\n }\n}\n\n\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return isCrossOrigin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return parseUrlOrigin; });\n/**\n * Detect if a given URL is cross-origin in the scope of the\n * current page.\n *\n * Browser only (since cross-origin has no meaning in Node.js)\n *\n * @param {Object} pageLocation - as in window.location\n * @param {Object} ajaxHost - an object like window.location describing the\n * origin of the url that we want to ajax in\n */\nfunction isCrossOrigin (pageLocation, ajaxHost) {\n /*\n * NB: defaultPort only knows http and https.\n * Returns undefined otherwise.\n */\n function defaultPort (protocol) {\n return { 'http:': 80, 'https:': 443 }[protocol]\n }\n\n function portOf (location) {\n // pageLocation should always have a protocol. ajaxHost if no port or\n // protocol is specified, should use the port of the containing page\n\n return String(location.port || defaultPort(location.protocol || pageLocation.protocol))\n }\n\n // if ajaxHost doesn't give a domain, port is the same as pageLocation\n // it can't give a protocol but not a domain\n // it can't give a port but not a domain\n\n return !!((ajaxHost.protocol && (ajaxHost.protocol !== pageLocation.protocol)) ||\n (ajaxHost.host && (ajaxHost.host !== pageLocation.host)) ||\n (ajaxHost.host && (portOf(ajaxHost) !== portOf(pageLocation)))\n )\n}\n\n/* turn any url into an object like window.location */\nfunction parseUrlOrigin (url) {\n // url could be domain-relative\n // url could give a domain\n\n // cross origin means:\n // same domain\n // same port\n // some protocol\n // so, same everything up to the first (single) slash\n // if such is given\n //\n // can ignore everything after that\n\n var URL_HOST_PATTERN = /(\\w+:)?(?:\\/\\/)([\\w.-]+)?(?::(\\d+))?\\/?/\n\n // if no match, use an empty array so that\n // subexpressions 1,2,3 are all undefined\n // and will ultimately return all empty\n // strings as the parse result:\n var urlHostMatch = URL_HOST_PATTERN.exec(url) || []\n\n return {\n protocol: urlHostMatch[1] || '',\n host: urlHostMatch[2] || '',\n port: urlHostMatch[3] || ''\n }\n}\n\n\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return parseResponseHeaders; });\n// based on gist https://gist.github.com/monsur/706839\n\n/**\n * XmlHttpRequest's getAllResponseHeaders() method returns a string of response\n * headers according to the format described here:\n * http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders-method\n * This method parses that string into a user-friendly key/value pair object.\n */\nfunction parseResponseHeaders (headerStr) {\n var headers = {}\n\n headerStr && headerStr.split('\\u000d\\u000a')\n .forEach(function (headerPair) {\n // Can't use split() here because it does the wrong thing\n // if the header value has the string \": \" in it.\n var index = headerPair.indexOf('\\u003a\\u0020')\n\n headers[headerPair.substring(0, index)] =\n headerPair.substring(index + 2)\n })\n\n return headers\n}\n\n\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","var trim = function(string) {\n return string.replace(/^\\s+|\\s+$/g, '');\n}\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n var headersArr = trim(headers).split('\\n')\n\n for (var i = 0; i < headersArr.length; i++) {\n var row = headersArr[i]\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n\n return result\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n","module.exports = require('./lib')(require('./lib/elliptic'))\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var isHexPrefixed = require('is-hex-prefixed');\n\n/**\n * Removes '0x' from a given `String` is present\n * @param {String} str the string value\n * @return {String|Optional} a string by pass if necessary\n */\nmodule.exports = function stripHexPrefix(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return isHexPrefixed(str) ? str.slice(2) : str;\n}\n","var unavailable = function unavailable() {\n throw \"This swarm.js function isn't available on the browser.\";\n};\n\nvar fs = {\n readFile: unavailable\n};\nvar files = {\n download: unavailable,\n safeDownloadArchived: unavailable,\n directoryTree: unavailable\n};\nvar os = {\n platform: unavailable,\n arch: unavailable\n};\nvar path = {\n join: unavailable,\n slice: unavailable\n};\nvar child_process = {\n spawn: unavailable\n};\nvar mimetype = {\n lookup: unavailable\n};\nvar defaultArchives = {};\nvar downloadUrl = null;\n\nvar request = require(\"xhr-request\");\n\nvar bytes = require(\"eth-lib/lib/bytes\");\n\nvar hash = require(\"./swarm-hash.js\");\n\nvar pick = require(\"./pick.js\");\n\nvar swarm = require(\"./swarm\");\n\nmodule.exports = swarm({\n fs: fs,\n files: files,\n os: os,\n path: path,\n child_process: child_process,\n defaultArchives: defaultArchives,\n mimetype: mimetype,\n request: request,\n downloadUrl: downloadUrl,\n bytes: bytes,\n hash: hash,\n pick: pick\n});","var picker = function picker(type) {\n return function () {\n return new Promise(function (resolve, reject) {\n var fileLoader = function fileLoader(e) {\n var directory = {};\n var totalFiles = e.target.files.length;\n var loadedFiles = 0;\n [].map.call(e.target.files, function (file) {\n var reader = new FileReader();\n\n reader.onload = function (e) {\n var data = new Uint8Array(e.target.result);\n\n if (type === \"directory\") {\n var path = file.webkitRelativePath;\n directory[path.slice(path.indexOf(\"/\") + 1)] = {\n type: \"text/plain\",\n data: data\n };\n if (++loadedFiles === totalFiles) resolve(directory);\n } else if (type === \"file\") {\n var _path = file.webkitRelativePath;\n resolve({\n \"type\": mimetype.lookup(_path),\n \"data\": data\n });\n } else {\n resolve(data);\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n };\n\n var fileInput;\n\n if (type === \"directory\") {\n fileInput = document.createElement(\"input\");\n fileInput.addEventListener(\"change\", fileLoader);\n fileInput.type = \"file\";\n fileInput.webkitdirectory = true;\n fileInput.mozdirectory = true;\n fileInput.msdirectory = true;\n fileInput.odirectory = true;\n fileInput.directory = true;\n } else {\n fileInput = document.createElement(\"input\");\n fileInput.addEventListener(\"change\", fileLoader);\n fileInput.type = \"file\";\n }\n\n ;\n var mouseEvent = document.createEvent(\"MouseEvents\");\n mouseEvent.initEvent(\"click\", true, false);\n fileInput.dispatchEvent(mouseEvent);\n });\n };\n};\n\nmodule.exports = {\n data: picker(\"data\"),\n file: picker(\"file\"),\n directory: picker(\"directory\")\n};","// Thanks https://github.com/axic/swarmhash\nvar keccak = require(\"eth-lib/lib/hash\").keccak256;\n\nvar Bytes = require(\"eth-lib/lib/bytes\");\n\nvar swarmHashBlock = function swarmHashBlock(length, data) {\n var lengthEncoded = Bytes.reverse(Bytes.pad(6, Bytes.fromNumber(length)));\n var bytes = Bytes.flatten([lengthEncoded, \"0x0000\", data]);\n return keccak(bytes).slice(2);\n}; // (Bytes | Uint8Array | String) -> String\n\n\nvar swarmHash = function swarmHash(data) {\n if (typeof data === \"string\" && data.slice(0, 2) !== \"0x\") {\n data = Bytes.fromString(data);\n } else if (typeof data !== \"string\" && data.length !== undefined) {\n data = Bytes.fromUint8Array(data);\n }\n\n var length = Bytes.length(data);\n\n if (length <= 4096) {\n return swarmHashBlock(length, data);\n }\n\n var maxSize = 4096;\n\n while (maxSize * (4096 / 32) < length) {\n maxSize *= 4096 / 32;\n }\n\n var innerNodes = [];\n\n for (var i = 0; i < length; i += maxSize) {\n var size = maxSize < length - i ? maxSize : length - i;\n innerNodes.push(swarmHash(Bytes.slice(data, i, i + size)));\n }\n\n return swarmHashBlock(length, Bytes.flatten(innerNodes));\n};\n\nmodule.exports = swarmHash;","// TODO: this is a temporary fix to hide those libraries from the browser. A\n// slightly better long-term solution would be to split this file into two,\n// separating the functions that are used on Node.js from the functions that\n// are used only on the browser.\nmodule.exports = function (_ref) {\n var fs = _ref.fs,\n files = _ref.files,\n os = _ref.os,\n path = _ref.path,\n child_process = _ref.child_process,\n mimetype = _ref.mimetype,\n defaultArchives = _ref.defaultArchives,\n request = _ref.request,\n downloadUrl = _ref.downloadUrl,\n bytes = _ref.bytes,\n hash = _ref.hash,\n pick = _ref.pick;\n\n // ∀ a . String -> JSON -> Map String a -o Map String a\n // Inserts a key/val pair in an object impurely.\n var impureInsert = function impureInsert(key) {\n return function (val) {\n return function (map) {\n return map[key] = val, map;\n };\n };\n }; // String -> JSON -> Map String JSON\n // Merges an array of keys and an array of vals into an object.\n\n\n var toMap = function toMap(keys) {\n return function (vals) {\n var map = {};\n\n for (var i = 0, l = keys.length; i < l; ++i) {\n map[keys[i]] = vals[i];\n }\n\n return map;\n };\n }; // ∀ a . Map String a -> Map String a -> Map String a\n // Merges two maps into one.\n\n\n var merge = function merge(a) {\n return function (b) {\n var map = {};\n\n for (var key in a) {\n map[key] = a[key];\n }\n\n for (var _key in b) {\n map[_key] = b[_key];\n }\n\n return map;\n };\n }; // ∀ a . [a] -> [a] -> Bool\n\n\n var equals = function equals(a) {\n return function (b) {\n if (a.length !== b.length) {\n return false;\n } else {\n for (var i = 0, l = a.length; i < l; ++i) {\n if (a[i] !== b[i]) return false;\n }\n }\n\n return true;\n };\n }; // String -> String -> String\n\n\n var rawUrl = function rawUrl(swarmUrl) {\n return function (hash) {\n return \"\".concat(swarmUrl, \"/bzz-raw:/\").concat(hash);\n };\n }; // String -> String -> Promise Uint8Array\n // Gets the raw contents of a Swarm hash address.\n\n\n var downloadData = function downloadData(swarmUrl) {\n return function (hash) {\n return new Promise(function (resolve, reject) {\n request(rawUrl(swarmUrl)(hash), {\n responseType: \"arraybuffer\"\n }, function (err, arrayBuffer, response) {\n if (err) {\n return reject(err);\n }\n\n if (response.statusCode >= 400) {\n return reject(new Error(\"Error \".concat(response.statusCode, \".\")));\n }\n\n return resolve(new Uint8Array(arrayBuffer));\n });\n });\n };\n }; // type Entry = {\"type\": String, \"hash\": String}\n // type File = {\"type\": String, \"data\": Uint8Array}\n // String -> String -> Promise (Map String Entry)\n // Solves the manifest of a Swarm address recursively.\n // Returns a map from full paths to entries.\n\n\n var downloadEntries = function downloadEntries(swarmUrl) {\n return function (hash) {\n var search = function search(hash) {\n return function (path) {\n return function (routes) {\n // Formats an entry to the Swarm.js type.\n var format = function format(entry) {\n return {\n type: entry.contentType,\n hash: entry.hash\n };\n }; // To download a single entry:\n // if type is bzz-manifest, go deeper\n // if not, add it to the routing table\n\n\n var downloadEntry = function downloadEntry(entry) {\n if (entry.path === undefined) {\n return Promise.resolve();\n } else {\n return entry.contentType === \"application/bzz-manifest+json\" ? search(entry.hash)(path + entry.path)(routes) : Promise.resolve(impureInsert(path + entry.path)(format(entry))(routes));\n }\n }; // Downloads the initial manifest and then each entry.\n\n\n return downloadData(swarmUrl)(hash).then(function (text) {\n return JSON.parse(toString(text)).entries;\n }).then(function (entries) {\n return Promise.all(entries.map(downloadEntry));\n }).then(function () {\n return routes;\n });\n };\n };\n };\n\n return search(hash)(\"\")({});\n };\n }; // String -> String -> Promise (Map String String)\n // Same as `downloadEntries`, but returns only hashes (no types).\n\n\n var downloadRoutes = function downloadRoutes(swarmUrl) {\n return function (hash) {\n return downloadEntries(swarmUrl)(hash).then(function (entries) {\n return toMap(Object.keys(entries))(Object.keys(entries).map(function (route) {\n return entries[route].hash;\n }));\n });\n };\n }; // String -> String -> Promise (Map String File)\n // Gets the entire directory tree in a Swarm address.\n // Returns a promise mapping paths to file contents.\n\n\n var downloadDirectory = function downloadDirectory(swarmUrl) {\n return function (hash) {\n return downloadEntries(swarmUrl)(hash).then(function (entries) {\n var paths = Object.keys(entries);\n var hashs = paths.map(function (path) {\n return entries[path].hash;\n });\n var types = paths.map(function (path) {\n return entries[path].type;\n });\n var datas = hashs.map(downloadData(swarmUrl));\n\n var files = function files(datas) {\n return datas.map(function (data, i) {\n return {\n type: types[i],\n data: data\n };\n });\n };\n\n return Promise.all(datas).then(function (datas) {\n return toMap(paths)(files(datas));\n });\n });\n };\n }; // String -> String -> String -> Promise String\n // Gets the raw contents of a Swarm hash address.\n // Returns a promise with the downloaded file path.\n\n\n var downloadDataToDisk = function downloadDataToDisk(swarmUrl) {\n return function (hash) {\n return function (filePath) {\n return files.download(rawUrl(swarmUrl)(hash))(filePath);\n };\n };\n }; // String -> String -> String -> Promise (Map String String)\n // Gets the entire directory tree in a Swarm address.\n // Returns a promise mapping paths to file contents.\n\n\n var downloadDirectoryToDisk = function downloadDirectoryToDisk(swarmUrl) {\n return function (hash) {\n return function (dirPath) {\n return downloadRoutes(swarmUrl)(hash).then(function (routingTable) {\n var downloads = [];\n\n for (var route in routingTable) {\n if (route.length > 0) {\n var filePath = path.join(dirPath, route);\n downloads.push(downloadDataToDisk(swarmUrl)(routingTable[route])(filePath));\n }\n\n ;\n }\n\n ;\n return Promise.all(downloads).then(function () {\n return dirPath;\n });\n });\n };\n };\n }; // String -> Uint8Array -> Promise String\n // Uploads raw data to Swarm.\n // Returns a promise with the uploaded hash.\n\n\n var uploadData = function uploadData(swarmUrl) {\n return function (data) {\n return new Promise(function (resolve, reject) {\n var params = {\n body: typeof data === \"string\" ? fromString(data) : data,\n method: \"POST\"\n };\n request(\"\".concat(swarmUrl, \"/bzz-raw:/\"), params, function (err, data) {\n if (err) {\n return reject(err);\n }\n\n return resolve(data);\n });\n });\n };\n }; // String -> String -> String -> File -> Promise String\n // Uploads a file to the Swarm manifest at a given hash, under a specific\n // route. Returns a promise containing the uploaded hash.\n // FIXME: for some reasons Swarm-Gateways is sometimes returning\n // error 404 (bad request), so we retry up to 3 times. Why?\n\n\n var uploadToManifest = function uploadToManifest(swarmUrl) {\n return function (hash) {\n return function (route) {\n return function (file) {\n var attempt = function attempt(n) {\n var slashRoute = route[0] === \"/\" ? route : \"/\" + route;\n var url = \"\".concat(swarmUrl, \"/bzz:/\").concat(hash).concat(slashRoute);\n var opt = {\n method: \"PUT\",\n headers: {\n \"Content-Type\": file.type\n },\n body: file.data\n };\n return new Promise(function (resolve, reject) {\n request(url, opt, function (err, data) {\n if (err) {\n return reject(err);\n }\n\n if (data.indexOf(\"error\") !== -1) {\n return reject(data);\n }\n\n return resolve(data);\n });\n })[\"catch\"](function (e) {\n return n > 0 && attempt(n - 1);\n });\n };\n\n return attempt(3);\n };\n };\n };\n }; // String -> {type: String, data: Uint8Array} -> Promise String\n\n\n var uploadFile = function uploadFile(swarmUrl) {\n return function (file) {\n return uploadDirectory(swarmUrl)({\n \"\": file\n });\n };\n }; // String -> String -> Promise String\n\n\n var uploadFileFromDisk = function uploadFileFromDisk(swarmUrl) {\n return function (filePath) {\n return fs.readFile(filePath).then(function (data) {\n return uploadFile(swarmUrl)({\n type: mimetype.lookup(filePath),\n data: data\n });\n });\n };\n }; // String -> Map String File -> Promise String\n // Uploads a directory to Swarm. The directory is\n // represented as a map of routes and files.\n // A default path is encoded by having a \"\" route.\n\n\n var uploadDirectory = function uploadDirectory(swarmUrl) {\n return function (directory) {\n return uploadData(swarmUrl)(\"{}\").then(function (hash) {\n var uploadRoute = function uploadRoute(route) {\n return function (hash) {\n return uploadToManifest(swarmUrl)(hash)(route)(directory[route]);\n };\n };\n\n var uploadToHash = function uploadToHash(hash, route) {\n return hash.then(uploadRoute(route));\n };\n\n return Object.keys(directory).reduce(uploadToHash, Promise.resolve(hash));\n });\n };\n }; // String -> Promise String\n\n\n var uploadDataFromDisk = function uploadDataFromDisk(swarmUrl) {\n return function (filePath) {\n return fs.readFile(filePath).then(uploadData(swarmUrl));\n };\n }; // String -> Nullable String -> String -> Promise String\n\n\n var uploadDirectoryFromDisk = function uploadDirectoryFromDisk(swarmUrl) {\n return function (defaultPath) {\n return function (dirPath) {\n return files.directoryTree(dirPath).then(function (fullPaths) {\n return Promise.all(fullPaths.map(function (path) {\n return fs.readFile(path);\n })).then(function (datas) {\n var paths = fullPaths.map(function (path) {\n return path.slice(dirPath.length);\n });\n var types = fullPaths.map(function (path) {\n return mimetype.lookup(path) || \"text/plain\";\n });\n return toMap(paths)(datas.map(function (data, i) {\n return {\n type: types[i],\n data: data\n };\n }));\n });\n }).then(function (directory) {\n return merge(defaultPath ? {\n \"\": directory[defaultPath]\n } : {})(directory);\n }).then(uploadDirectory(swarmUrl));\n };\n };\n }; // String -> UploadInfo -> Promise String\n // Simplified multi-type upload which calls the correct\n // one based on the type of the argument given.\n\n\n var _upload = function upload(swarmUrl) {\n return function (arg) {\n // Upload raw data from browser\n if (arg.pick === \"data\") {\n return pick.data().then(uploadData(swarmUrl)); // Upload a file from browser\n } else if (arg.pick === \"file\") {\n return pick.file().then(uploadFile(swarmUrl)); // Upload a directory from browser\n } else if (arg.pick === \"directory\") {\n return pick.directory().then(uploadDirectory(swarmUrl)); // Upload directory/file from disk\n } else if (arg.path) {\n switch (arg.kind) {\n case \"data\":\n return uploadDataFromDisk(swarmUrl)(arg.path);\n\n case \"file\":\n return uploadFileFromDisk(swarmUrl)(arg.path);\n\n case \"directory\":\n return uploadDirectoryFromDisk(swarmUrl)(arg.defaultFile)(arg.path);\n }\n\n ; // Upload UTF-8 string or raw data (buffer)\n } else if (arg.length || typeof arg === \"string\") {\n return uploadData(swarmUrl)(arg); // Upload directory with JSON\n } else if (arg instanceof Object) {\n return uploadDirectory(swarmUrl)(arg);\n }\n\n return Promise.reject(new Error(\"Bad arguments\"));\n };\n }; // String -> String -> Nullable String -> Promise (String | Uint8Array | Map String Uint8Array)\n // Simplified multi-type download which calls the correct function based on\n // the type of the argument given, and on whether the Swwarm address has a\n // directory or a file.\n\n\n var _download = function download(swarmUrl) {\n return function (hash) {\n return function (path) {\n return isDirectory(swarmUrl)(hash).then(function (isDir) {\n if (isDir) {\n return path ? downloadDirectoryToDisk(swarmUrl)(hash)(path) : downloadDirectory(swarmUrl)(hash);\n } else {\n return path ? downloadDataToDisk(swarmUrl)(hash)(path) : downloadData(swarmUrl)(hash);\n }\n });\n };\n };\n }; // String -> Promise String\n // Downloads the Swarm binaries into a path. Returns a promise that only\n // resolves when the exact Swarm file is there, and verified to be correct.\n // If it was already there to begin with, skips the download.\n\n\n var downloadBinary = function downloadBinary(path, archives) {\n var system = os.platform().replace(\"win32\", \"windows\") + \"-\" + (os.arch() === \"x64\" ? \"amd64\" : \"386\");\n var archive = (archives || defaultArchives)[system];\n var archiveUrl = downloadUrl + archive.archive + \".tar.gz\";\n var archiveMD5 = archive.archiveMD5;\n var binaryMD5 = archive.binaryMD5;\n return files.safeDownloadArchived(archiveUrl)(archiveMD5)(binaryMD5)(path);\n }; // type SwarmSetup = {\n // account : String,\n // password : String,\n // dataDir : String,\n // binPath : String,\n // ensApi : String,\n // onDownloadProgress : Number ~> (),\n // archives : [{\n // archive: String,\n // binaryMD5: String,\n // archiveMD5: String\n // }]\n // }\n // SwarmSetup ~> Promise Process\n // Starts the Swarm process.\n\n\n var startProcess = function startProcess(swarmSetup) {\n return new Promise(function (resolve, reject) {\n var spawn = child_process.spawn;\n\n var hasString = function hasString(str) {\n return function (buffer) {\n return ('' + buffer).indexOf(str) !== -1;\n };\n };\n\n var account = swarmSetup.account,\n password = swarmSetup.password,\n dataDir = swarmSetup.dataDir,\n ensApi = swarmSetup.ensApi,\n privateKey = swarmSetup.privateKey;\n var STARTUP_TIMEOUT_SECS = 3;\n var WAITING_PASSWORD = 0;\n var STARTING = 1;\n var LISTENING = 2;\n var PASSWORD_PROMPT_HOOK = \"Passphrase\";\n var LISTENING_HOOK = \"Swarm http proxy started\";\n var state = WAITING_PASSWORD;\n var swarmProcess = spawn(swarmSetup.binPath, ['--bzzaccount', account || privateKey, '--datadir', dataDir, '--ens-api', ensApi]);\n\n var handleProcessOutput = function handleProcessOutput(data) {\n if (state === WAITING_PASSWORD && hasString(PASSWORD_PROMPT_HOOK)(data)) {\n setTimeout(function () {\n state = STARTING;\n swarmProcess.stdin.write(password + '\\n');\n }, 500);\n } else if (hasString(LISTENING_HOOK)(data)) {\n state = LISTENING;\n clearTimeout(timeout);\n resolve(swarmProcess);\n }\n };\n\n swarmProcess.stdout.on('data', handleProcessOutput);\n swarmProcess.stderr.on('data', handleProcessOutput); //swarmProcess.on('close', () => setTimeout(restart, 2000));\n\n var restart = function restart() {\n return startProcess(swarmSetup).then(resolve)[\"catch\"](reject);\n };\n\n var error = function error() {\n return reject(new Error(\"Couldn't start swarm process.\"));\n };\n\n var timeout = setTimeout(error, 20000);\n });\n }; // Process ~> Promise ()\n // Stops the Swarm process.\n\n\n var stopProcess = function stopProcess(process) {\n return new Promise(function (resolve, reject) {\n process.stderr.removeAllListeners('data');\n process.stdout.removeAllListeners('data');\n process.stdin.removeAllListeners('error');\n process.removeAllListeners('error');\n process.removeAllListeners('exit');\n process.kill('SIGINT');\n var killTimeout = setTimeout(function () {\n return process.kill('SIGKILL');\n }, 8000);\n process.once('close', function () {\n clearTimeout(killTimeout);\n resolve();\n });\n });\n }; // SwarmSetup -> (SwarmAPI -> Promise ()) -> Promise ()\n // Receives a Swarm configuration object and a callback function. It then\n // checks if a local Swarm node is running. If no local Swarm is found, it\n // downloads the Swarm binaries to the dataDir (if not there), checksums,\n // starts the Swarm process and calls the callback function with an API\n // object using the local node. That callback must return a promise which\n // will resolve when it is done using the API, so that this function can\n // close the Swarm process properly. Returns a promise that resolves when the\n // user is done with the API and the Swarm process is closed.\n // TODO: check if Swarm process is already running (improve `isAvailable`)\n\n\n var local = function local(swarmSetup) {\n return function (useAPI) {\n return _isAvailable(\"http://localhost:8500\").then(function (isAvailable) {\n return isAvailable ? useAPI(at(\"http://localhost:8500\")).then(function () {}) : downloadBinary(swarmSetup.binPath, swarmSetup.archives).onData(function (data) {\n return (swarmSetup.onProgress || function () {})(data.length);\n }).then(function () {\n return startProcess(swarmSetup);\n }).then(function (process) {\n return useAPI(at(\"http://localhost:8500\")).then(function () {\n return process;\n });\n }).then(stopProcess);\n });\n };\n }; // String ~> Promise Bool\n // Returns true if Swarm is available on `url`.\n // Perfoms a test upload to determine that.\n // TODO: improve this?\n\n\n var _isAvailable = function isAvailable(swarmUrl) {\n var testFile = \"test\";\n var testHash = \"c9a99c7d326dcc6316f32fe2625b311f6dc49a175e6877681ded93137d3569e7\";\n return uploadData(swarmUrl)(testFile).then(function (hash) {\n return hash === testHash;\n })[\"catch\"](function () {\n return false;\n });\n }; // String -> String ~> Promise Bool\n // Returns a Promise which is true if that Swarm address is a directory.\n // Determines that by checking that it (i) is a JSON, (ii) has a .entries.\n // TODO: improve this?\n\n\n var isDirectory = function isDirectory(swarmUrl) {\n return function (hash) {\n return downloadData(swarmUrl)(hash).then(function (data) {\n try {\n return !!JSON.parse(toString(data)).entries;\n } catch (e) {\n return false;\n }\n });\n };\n }; // Uncurries a function; used to allow the f(x,y,z) style on exports.\n\n\n var uncurry = function uncurry(f) {\n return function (a, b, c, d, e) {\n var p; // Hardcoded because efficiency (`arguments` is very slow).\n\n if (typeof a !== \"undefined\") p = f(a);\n if (typeof b !== \"undefined\") p = f(b);\n if (typeof c !== \"undefined\") p = f(c);\n if (typeof d !== \"undefined\") p = f(d);\n if (typeof e !== \"undefined\") p = f(e);\n return p;\n };\n }; // () -> Promise Bool\n // Not sure how to mock Swarm to test it properly. Ideas?\n\n\n var test = function test() {\n return Promise.resolve(true);\n }; // Uint8Array -> String\n\n\n var toString = function toString(uint8Array) {\n return bytes.toString(bytes.fromUint8Array(uint8Array));\n }; // String -> Uint8Array\n\n\n var fromString = function fromString(string) {\n return bytes.toUint8Array(bytes.fromString(string));\n }; // String -> SwarmAPI\n // Fixes the `swarmUrl`, returning an API where you don't have to pass it.\n\n\n var at = function at(swarmUrl) {\n return {\n download: function download(hash, path) {\n return _download(swarmUrl)(hash)(path);\n },\n downloadData: uncurry(downloadData(swarmUrl)),\n downloadDataToDisk: uncurry(downloadDataToDisk(swarmUrl)),\n downloadDirectory: uncurry(downloadDirectory(swarmUrl)),\n downloadDirectoryToDisk: uncurry(downloadDirectoryToDisk(swarmUrl)),\n downloadEntries: uncurry(downloadEntries(swarmUrl)),\n downloadRoutes: uncurry(downloadRoutes(swarmUrl)),\n isAvailable: function isAvailable() {\n return _isAvailable(swarmUrl);\n },\n upload: function upload(arg) {\n return _upload(swarmUrl)(arg);\n },\n uploadData: uncurry(uploadData(swarmUrl)),\n uploadFile: uncurry(uploadFile(swarmUrl)),\n uploadFileFromDisk: uncurry(uploadFile(swarmUrl)),\n uploadDataFromDisk: uncurry(uploadDataFromDisk(swarmUrl)),\n uploadDirectory: uncurry(uploadDirectory(swarmUrl)),\n uploadDirectoryFromDisk: uncurry(uploadDirectoryFromDisk(swarmUrl)),\n uploadToManifest: uncurry(uploadToManifest(swarmUrl)),\n pick: pick,\n hash: hash,\n fromString: fromString,\n toString: toString\n };\n };\n\n return {\n at: at,\n local: local,\n download: _download,\n downloadBinary: downloadBinary,\n downloadData: downloadData,\n downloadDataToDisk: downloadDataToDisk,\n downloadDirectory: downloadDirectory,\n downloadDirectoryToDisk: downloadDirectoryToDisk,\n downloadEntries: downloadEntries,\n downloadRoutes: downloadRoutes,\n isAvailable: _isAvailable,\n startProcess: startProcess,\n stopProcess: stopProcess,\n upload: _upload,\n uploadData: uploadData,\n uploadDataFromDisk: uploadDataFromDisk,\n uploadFile: uploadFile,\n uploadFileFromDisk: uploadFileFromDisk,\n uploadDirectory: uploadDirectory,\n uploadDirectoryFromDisk: uploadDirectoryFromDisk,\n uploadToManifest: uploadToManifest,\n pick: pick,\n hash: hash,\n fromString: fromString,\n toString: toString\n };\n};","var generate = function generate(num, fn) {\n var a = [];\n for (var i = 0; i < num; ++i) {\n a.push(fn(i));\n }return a;\n};\n\nvar replicate = function replicate(num, val) {\n return generate(num, function () {\n return val;\n });\n};\n\nvar concat = function concat(a, b) {\n return a.concat(b);\n};\n\nvar flatten = function flatten(a) {\n var r = [];\n for (var j = 0, J = a.length; j < J; ++j) {\n for (var i = 0, I = a[j].length; i < I; ++i) {\n r.push(a[j][i]);\n }\n }return r;\n};\n\nvar chunksOf = function chunksOf(n, a) {\n var b = [];\n for (var i = 0, l = a.length; i < l; i += n) {\n b.push(a.slice(i, i + n));\n }return b;\n};\n\nmodule.exports = {\n generate: generate,\n replicate: replicate,\n concat: concat,\n flatten: flatten,\n chunksOf: chunksOf\n};","var A = require(\"./array.js\");\n\nvar at = function at(bytes, index) {\n return parseInt(bytes.slice(index * 2 + 2, index * 2 + 4), 16);\n};\n\nvar random = function random(bytes) {\n var rnd = void 0;\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.getRandomValues) rnd = window.crypto.getRandomValues(new Uint8Array(bytes));else if (typeof require !== \"undefined\") rnd = require(\"c\" + \"rypto\").randomBytes(bytes);else throw \"Safe random numbers not available.\";\n var hex = \"0x\";\n for (var i = 0; i < bytes; ++i) {\n hex += (\"00\" + rnd[i].toString(16)).slice(-2);\n }return hex;\n};\n\nvar length = function length(a) {\n return (a.length - 2) / 2;\n};\n\nvar flatten = function flatten(a) {\n return \"0x\" + a.reduce(function (r, s) {\n return r + s.slice(2);\n }, \"\");\n};\n\nvar slice = function slice(i, j, bs) {\n return \"0x\" + bs.slice(i * 2 + 2, j * 2 + 2);\n};\n\nvar reverse = function reverse(hex) {\n var rev = \"0x\";\n for (var i = 0, l = length(hex); i < l; ++i) {\n rev += hex.slice((l - i) * 2, (l - i + 1) * 2);\n }\n return rev;\n};\n\nvar pad = function pad(l, hex) {\n return hex.length === l * 2 + 2 ? hex : pad(l, \"0x\" + \"0\" + hex.slice(2));\n};\n\nvar padRight = function padRight(l, hex) {\n return hex.length === l * 2 + 2 ? hex : padRight(l, hex + \"0\");\n};\n\nvar toArray = function toArray(hex) {\n var arr = [];\n for (var i = 2, l = hex.length; i < l; i += 2) {\n arr.push(parseInt(hex.slice(i, i + 2), 16));\n }return arr;\n};\n\nvar fromArray = function fromArray(arr) {\n var hex = \"0x\";\n for (var i = 0, l = arr.length; i < l; ++i) {\n var b = arr[i];\n hex += (b < 16 ? \"0\" : \"\") + b.toString(16);\n }\n return hex;\n};\n\nvar toUint8Array = function toUint8Array(hex) {\n return new Uint8Array(toArray(hex));\n};\n\nvar fromUint8Array = function fromUint8Array(arr) {\n return fromArray([].slice.call(arr, 0));\n};\n\nvar fromNumber = function fromNumber(num) {\n var hex = num.toString(16);\n return hex.length % 2 === 0 ? \"0x\" + hex : \"0x0\" + hex;\n};\n\nvar toNumber = function toNumber(hex) {\n return parseInt(hex.slice(2), 16);\n};\n\nvar concat = function concat(a, b) {\n return a.concat(b.slice(2));\n};\n\nvar fromNat = function fromNat(bn) {\n return bn === \"0x0\" ? \"0x\" : bn.length % 2 === 0 ? bn : \"0x0\" + bn.slice(2);\n};\n\nvar toNat = function toNat(bn) {\n return bn[2] === \"0\" ? \"0x\" + bn.slice(3) : bn;\n};\n\nvar fromAscii = function fromAscii(ascii) {\n var hex = \"0x\";\n for (var i = 0; i < ascii.length; ++i) {\n hex += (\"00\" + ascii.charCodeAt(i).toString(16)).slice(-2);\n }return hex;\n};\n\nvar toAscii = function toAscii(hex) {\n var ascii = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n ascii += String.fromCharCode(parseInt(hex.slice(i, i + 2), 16));\n }return ascii;\n};\n\n// From https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330\nvar fromString = function fromString(s) {\n var makeByte = function makeByte(uint8) {\n var b = uint8.toString(16);\n return b.length < 2 ? \"0\" + b : b;\n };\n var bytes = \"0x\";\n for (var ci = 0; ci != s.length; ci++) {\n var c = s.charCodeAt(ci);\n if (c < 128) {\n bytes += makeByte(c);\n continue;\n }\n if (c < 2048) {\n bytes += makeByte(c >> 6 | 192);\n } else {\n if (c > 0xd7ff && c < 0xdc00) {\n if (++ci == s.length) return null;\n var c2 = s.charCodeAt(ci);\n if (c2 < 0xdc00 || c2 > 0xdfff) return null;\n c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n bytes += makeByte(c >> 18 | 240);\n bytes += makeByte(c >> 12 & 63 | 128);\n } else {\n // c <= 0xffff\n bytes += makeByte(c >> 12 | 224);\n }\n bytes += makeByte(c >> 6 & 63 | 128);\n }\n bytes += makeByte(c & 63 | 128);\n }\n return bytes;\n};\n\nvar toString = function toString(bytes) {\n var s = '';\n var i = 0;\n var l = length(bytes);\n while (i < l) {\n var c = at(bytes, i++);\n if (c > 127) {\n if (c > 191 && c < 224) {\n if (i >= l) return null;\n c = (c & 31) << 6 | at(bytes, i) & 63;\n } else if (c > 223 && c < 240) {\n if (i + 1 >= l) return null;\n c = (c & 15) << 12 | (at(bytes, i) & 63) << 6 | at(bytes, ++i) & 63;\n } else if (c > 239 && c < 248) {\n if (i + 2 >= l) return null;\n c = (c & 7) << 18 | (at(bytes, i) & 63) << 12 | (at(bytes, ++i) & 63) << 6 | at(bytes, ++i) & 63;\n } else return null;\n ++i;\n }\n if (c <= 0xffff) s += String.fromCharCode(c);else if (c <= 0x10ffff) {\n c -= 0x10000;\n s += String.fromCharCode(c >> 10 | 0xd800);\n s += String.fromCharCode(c & 0x3FF | 0xdc00);\n } else return null;\n }\n return s;\n};\n\nmodule.exports = {\n random: random,\n length: length,\n concat: concat,\n flatten: flatten,\n slice: slice,\n reverse: reverse,\n pad: pad,\n padRight: padRight,\n fromAscii: fromAscii,\n toAscii: toAscii,\n fromString: fromString,\n toString: toString,\n fromNumber: fromNumber,\n toNumber: toNumber,\n fromNat: fromNat,\n toNat: toNat,\n fromArray: fromArray,\n toArray: toArray,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array\n};","// This was ported from https://github.com/emn178/js-sha3, with some minor\n// modifications and pruning. It is licensed under MIT:\n//\n// Copyright 2015-2016 Chen, Yi-Cyuan\n// \n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n// \n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar HEX_CHARS = '0123456789abcdef'.split('');\nvar KECCAK_PADDING = [1, 256, 65536, 16777216];\nvar SHIFT = [0, 8, 16, 24];\nvar RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n\nvar Keccak = function Keccak(bits) {\n return {\n blocks: [],\n reset: true,\n block: 0,\n start: 0,\n blockCount: 1600 - (bits << 1) >> 5,\n outputBlocks: bits >> 5,\n s: function (s) {\n return [].concat(s, s, s, s, s);\n }([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n };\n};\n\nvar update = function update(state, message) {\n var length = message.length,\n blocks = state.blocks,\n byteCount = state.blockCount << 2,\n blockCount = state.blockCount,\n outputBlocks = state.outputBlocks,\n s = state.s,\n index = 0,\n i,\n code;\n\n // update\n while (index < length) {\n if (state.reset) {\n state.reset = false;\n blocks[0] = state.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (typeof message !== \"string\") {\n for (i = state.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = state.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n state.lastByteIndex = i;\n if (i >= byteCount) {\n state.start = i - byteCount;\n state.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n state.reset = true;\n } else {\n state.start = i;\n }\n }\n\n // finalize\n i = state.lastByteIndex;\n blocks[i >> 2] |= KECCAK_PADDING[i & 3];\n if (state.lastByteIndex === byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n\n // toString\n var hex = '',\n i = 0,\n j = 0,\n block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[block >> 4 & 0x0F] + HEX_CHARS[block & 0x0F] + HEX_CHARS[block >> 12 & 0x0F] + HEX_CHARS[block >> 8 & 0x0F] + HEX_CHARS[block >> 20 & 0x0F] + HEX_CHARS[block >> 16 & 0x0F] + HEX_CHARS[block >> 28 & 0x0F] + HEX_CHARS[block >> 24 & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n return \"0x\" + hex;\n};\n\nvar f = function f(s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ (c2 << 1 | c3 >>> 31);\n l = c9 ^ (c3 << 1 | c2 >>> 31);\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ (c4 << 1 | c5 >>> 31);\n l = c1 ^ (c5 << 1 | c4 >>> 31);\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ (c6 << 1 | c7 >>> 31);\n l = c3 ^ (c7 << 1 | c6 >>> 31);\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ (c8 << 1 | c9 >>> 31);\n l = c5 ^ (c9 << 1 | c8 >>> 31);\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ (c0 << 1 | c1 >>> 31);\n l = c7 ^ (c1 << 1 | c0 >>> 31);\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = s[11] << 4 | s[10] >>> 28;\n b33 = s[10] << 4 | s[11] >>> 28;\n b14 = s[20] << 3 | s[21] >>> 29;\n b15 = s[21] << 3 | s[20] >>> 29;\n b46 = s[31] << 9 | s[30] >>> 23;\n b47 = s[30] << 9 | s[31] >>> 23;\n b28 = s[40] << 18 | s[41] >>> 14;\n b29 = s[41] << 18 | s[40] >>> 14;\n b20 = s[2] << 1 | s[3] >>> 31;\n b21 = s[3] << 1 | s[2] >>> 31;\n b2 = s[13] << 12 | s[12] >>> 20;\n b3 = s[12] << 12 | s[13] >>> 20;\n b34 = s[22] << 10 | s[23] >>> 22;\n b35 = s[23] << 10 | s[22] >>> 22;\n b16 = s[33] << 13 | s[32] >>> 19;\n b17 = s[32] << 13 | s[33] >>> 19;\n b48 = s[42] << 2 | s[43] >>> 30;\n b49 = s[43] << 2 | s[42] >>> 30;\n b40 = s[5] << 30 | s[4] >>> 2;\n b41 = s[4] << 30 | s[5] >>> 2;\n b22 = s[14] << 6 | s[15] >>> 26;\n b23 = s[15] << 6 | s[14] >>> 26;\n b4 = s[25] << 11 | s[24] >>> 21;\n b5 = s[24] << 11 | s[25] >>> 21;\n b36 = s[34] << 15 | s[35] >>> 17;\n b37 = s[35] << 15 | s[34] >>> 17;\n b18 = s[45] << 29 | s[44] >>> 3;\n b19 = s[44] << 29 | s[45] >>> 3;\n b10 = s[6] << 28 | s[7] >>> 4;\n b11 = s[7] << 28 | s[6] >>> 4;\n b42 = s[17] << 23 | s[16] >>> 9;\n b43 = s[16] << 23 | s[17] >>> 9;\n b24 = s[26] << 25 | s[27] >>> 7;\n b25 = s[27] << 25 | s[26] >>> 7;\n b6 = s[36] << 21 | s[37] >>> 11;\n b7 = s[37] << 21 | s[36] >>> 11;\n b38 = s[47] << 24 | s[46] >>> 8;\n b39 = s[46] << 24 | s[47] >>> 8;\n b30 = s[8] << 27 | s[9] >>> 5;\n b31 = s[9] << 27 | s[8] >>> 5;\n b12 = s[18] << 20 | s[19] >>> 12;\n b13 = s[19] << 20 | s[18] >>> 12;\n b44 = s[29] << 7 | s[28] >>> 25;\n b45 = s[28] << 7 | s[29] >>> 25;\n b26 = s[38] << 8 | s[39] >>> 24;\n b27 = s[39] << 8 | s[38] >>> 24;\n b8 = s[48] << 14 | s[49] >>> 18;\n b9 = s[49] << 14 | s[48] >>> 18;\n\n s[0] = b0 ^ ~b2 & b4;\n s[1] = b1 ^ ~b3 & b5;\n s[10] = b10 ^ ~b12 & b14;\n s[11] = b11 ^ ~b13 & b15;\n s[20] = b20 ^ ~b22 & b24;\n s[21] = b21 ^ ~b23 & b25;\n s[30] = b30 ^ ~b32 & b34;\n s[31] = b31 ^ ~b33 & b35;\n s[40] = b40 ^ ~b42 & b44;\n s[41] = b41 ^ ~b43 & b45;\n s[2] = b2 ^ ~b4 & b6;\n s[3] = b3 ^ ~b5 & b7;\n s[12] = b12 ^ ~b14 & b16;\n s[13] = b13 ^ ~b15 & b17;\n s[22] = b22 ^ ~b24 & b26;\n s[23] = b23 ^ ~b25 & b27;\n s[32] = b32 ^ ~b34 & b36;\n s[33] = b33 ^ ~b35 & b37;\n s[42] = b42 ^ ~b44 & b46;\n s[43] = b43 ^ ~b45 & b47;\n s[4] = b4 ^ ~b6 & b8;\n s[5] = b5 ^ ~b7 & b9;\n s[14] = b14 ^ ~b16 & b18;\n s[15] = b15 ^ ~b17 & b19;\n s[24] = b24 ^ ~b26 & b28;\n s[25] = b25 ^ ~b27 & b29;\n s[34] = b34 ^ ~b36 & b38;\n s[35] = b35 ^ ~b37 & b39;\n s[44] = b44 ^ ~b46 & b48;\n s[45] = b45 ^ ~b47 & b49;\n s[6] = b6 ^ ~b8 & b0;\n s[7] = b7 ^ ~b9 & b1;\n s[16] = b16 ^ ~b18 & b10;\n s[17] = b17 ^ ~b19 & b11;\n s[26] = b26 ^ ~b28 & b20;\n s[27] = b27 ^ ~b29 & b21;\n s[36] = b36 ^ ~b38 & b30;\n s[37] = b37 ^ ~b39 & b31;\n s[46] = b46 ^ ~b48 & b40;\n s[47] = b47 ^ ~b49 & b41;\n s[8] = b8 ^ ~b0 & b2;\n s[9] = b9 ^ ~b1 & b3;\n s[18] = b18 ^ ~b10 & b12;\n s[19] = b19 ^ ~b11 & b13;\n s[28] = b28 ^ ~b20 & b22;\n s[29] = b29 ^ ~b21 & b23;\n s[38] = b38 ^ ~b30 & b32;\n s[39] = b39 ^ ~b31 & b33;\n s[48] = b48 ^ ~b40 & b42;\n s[49] = b49 ^ ~b41 & b43;\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n};\n\nvar keccak = function keccak(bits) {\n return function (str) {\n var msg;\n if (str.slice(0, 2) === \"0x\") {\n msg = [];\n for (var i = 2, l = str.length; i < l; i += 2) {\n msg.push(parseInt(str.slice(i, i + 2), 16));\n }\n } else {\n msg = str;\n }\n return update(Keccak(bits, bits), msg);\n };\n};\n\nmodule.exports = {\n keccak256: keccak(256),\n keccak512: keccak(512),\n keccak256s: keccak(256),\n keccak512s: keccak(512)\n};","module.exports = urlSetQuery\nfunction urlSetQuery (url, query) {\n if (query) {\n // remove optional leading symbols\n query = query.trim().replace(/^(\\?|#|&)/, '')\n\n // don't append empty query\n query = query ? ('?' + query) : query\n\n var parts = url.split(/[\\?\\#]/)\n var start = parts[0]\n if (query && /\\:\\/\\/[^\\/]*$/.test(start)) {\n // e.g. http://foo.com -> http://foo.com/\n start = start + '/'\n }\n var match = url.match(/(\\#.*)$/)\n url = start + query\n if (match) { // add hash back in\n url = url + match[0]\n }\n }\n return url\n}\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, typedArray) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nvar trySlices = function tryAllSlices(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, name) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tgetter(value);\n\t\t\t\tfound = $slice(name, 1);\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","var queryString = require('query-string')\nvar setQuery = require('url-set-query')\nvar assign = require('object-assign')\nvar ensureHeader = require('./lib/ensure-header.js')\n\n// this is replaced in the browser\nvar request = require('./lib/request.js')\n\nvar mimeTypeJson = 'application/json'\nvar noop = function () {}\n\nmodule.exports = xhrRequest\nfunction xhrRequest (url, opt, cb) {\n if (!url || typeof url !== 'string') {\n throw new TypeError('must specify a URL')\n }\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (cb && typeof cb !== 'function') {\n throw new TypeError('expected cb to be undefined or a function')\n }\n\n cb = cb || noop\n opt = opt || {}\n\n var defaultResponse = opt.json ? 'json' : 'text'\n opt = assign({ responseType: defaultResponse }, opt)\n\n var headers = opt.headers || {}\n var method = (opt.method || 'GET').toUpperCase()\n var query = opt.query\n if (query) {\n if (typeof query !== 'string') {\n query = queryString.stringify(query)\n }\n url = setQuery(url, query)\n }\n\n // allow json response\n if (opt.responseType === 'json') {\n ensureHeader(headers, 'Accept', mimeTypeJson)\n }\n\n // if body content is json\n if (opt.json && method !== 'GET' && method !== 'HEAD') {\n ensureHeader(headers, 'Content-Type', mimeTypeJson)\n opt.body = JSON.stringify(opt.body)\n }\n\n opt.method = method\n opt.url = url\n opt.headers = headers\n delete opt.query\n delete opt.json\n\n return request(opt, cb)\n}\n","module.exports = ensureHeader\nfunction ensureHeader (headers, key, value) {\n var lower = key.toLowerCase()\n if (!headers[key] && !headers[lower]) {\n headers[key] = value\n }\n}\n","module.exports = getResponse\nfunction getResponse (opt, resp) {\n if (!resp) return null\n return {\n statusCode: resp.statusCode,\n headers: resp.headers,\n method: opt.method,\n url: opt.url,\n // the XHR object in browser, http response in Node\n rawRequest: resp.rawRequest ? resp.rawRequest : resp\n }\n}\n","var xhr = require('xhr')\nvar normalize = require('./normalize-response')\nvar noop = function () {}\n\nmodule.exports = xhrRequest\nfunction xhrRequest (opt, cb) {\n delete opt.uri\n\n // for better JSON.parse error handling than xhr module\n var useJson = false\n if (opt.responseType === 'json') {\n opt.responseType = 'text'\n useJson = true\n }\n\n var req = xhr(opt, function xhrRequestResult (err, resp, body) {\n if (useJson && !err) {\n try {\n var text = resp.rawRequest.responseText\n body = JSON.parse(text)\n } catch (e) {\n err = e\n }\n }\n\n resp = normalize(opt, resp)\n if (err) cb(err, null, resp)\n else cb(err, body, resp)\n cb = noop\n })\n\n // Patch abort() so that it also calls the callback, but with an error\n var onabort = req.onabort\n req.onabort = function () {\n var ret = onabort.apply(req, Array.prototype.slice.call(arguments))\n cb(new Error('XHR Aborted'))\n cb = noop\n return ret\n }\n\n return req\n}\n","\"use strict\";\nvar window = require(\"global/window\")\nvar isFunction = require(\"is-function\")\nvar parseHeaders = require(\"parse-headers\")\nvar xtend = require(\"xtend\")\n\nmodule.exports = createXHR\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function(method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function(uri, options, callback) {\n options = initParams(uri, options, callback)\n options.method = method.toUpperCase()\n return _createXHR(options)\n }\n})\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i])\n }\n}\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri\n\n if (isFunction(options)) {\n callback = options\n if (typeof uri === \"string\") {\n params = {uri:uri}\n }\n } else {\n params = xtend(options, {uri: uri})\n }\n\n params.callback = callback\n return params\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback)\n return _createXHR(options)\n}\n\nfunction _createXHR(options) {\n if(typeof options.callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n\n var called = false\n var callback = function cbOnce(err, response, body){\n if(!called){\n called = true\n options.callback(err, response, body)\n }\n }\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0)\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else {\n body = xhr.responseText || getXml(xhr)\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n return callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n return callback(err, response, response.body)\n }\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n if (\"json\" in options && options.json !== false) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json === true ? body : options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.onabort = function(){\n aborted = true;\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n if (aborted) return\n aborted = true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n xhr.send(body || null)\n\n return xhr\n\n\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML\n }\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\"\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML\n }\n } catch (e) {}\n\n return null\n}\n\nfunction noop() {}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar swarm = require(\"swarm-js\");\nvar Bzz = function Bzz(provider) {\n this.givenProvider = Bzz.givenProvider;\n if (provider && provider._requestManager) {\n provider = provider.currentProvider;\n }\n // only allow file picker when in browser\n if (typeof document !== 'undefined') {\n this.pick = swarm.pick;\n }\n this.setProvider(provider);\n};\n// set default ethereum provider\n/* jshint ignore:start */\nBzz.givenProvider = null;\nif (typeof ethereum !== 'undefined' && ethereum.bzz) {\n Bzz.givenProvider = ethereum.bzz;\n}\n/* jshint ignore:end */\nBzz.prototype.setProvider = function (provider) {\n // is ethereum provider\n if (!!provider && typeof provider === 'object' && typeof provider.bzz === 'string') {\n provider = provider.bzz;\n // is no string, set default\n }\n // else if(!_.isString(provider)) {\n // provider = 'http://swarm-gateways.net'; // default to gateway\n // }\n if (typeof provider === 'string') {\n this.currentProvider = provider;\n }\n else {\n this.currentProvider = null;\n var noProviderError = new Error('No provider set, please set one using bzz.setProvider().');\n this.download = this.upload = this.isAvailable = function () {\n throw noProviderError;\n };\n return false;\n }\n // add functions\n this.download = swarm.at(provider).download;\n this.upload = swarm.at(provider).upload;\n this.isAvailable = swarm.at(provider).isAvailable;\n return true;\n};\nmodule.exports = Bzz;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file errors.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n\"use strict\";\nmodule.exports = {\n ErrorResponse: function (result) {\n var message = !!result && !!result.error && !!result.error.message ? result.error.message : JSON.stringify(result);\n var data = (!!result.error && !!result.error.data) ? result.error.data : null;\n var err = new Error('Returned error: ' + message);\n err.data = data;\n return err;\n },\n InvalidNumberOfParams: function (got, expected, method) {\n return new Error('Invalid number of parameters for \"' + method + '\". Got ' + got + ' expected ' + expected + '!');\n },\n InvalidConnection: function (host, event) {\n return this.ConnectionError('CONNECTION ERROR: Couldn\\'t connect to node ' + host + '.', event);\n },\n InvalidProvider: function () {\n return new Error('Provider not set or invalid');\n },\n InvalidResponse: function (result) {\n var message = !!result && !!result.error && !!result.error.message ? result.error.message : 'Invalid JSON RPC response: ' + JSON.stringify(result);\n return new Error(message);\n },\n ConnectionTimeout: function (ms) {\n return new Error('CONNECTION TIMEOUT: timeout of ' + ms + ' ms achived');\n },\n ConnectionNotOpenError: function (event) {\n return this.ConnectionError('connection not open on send()', event);\n },\n ConnectionCloseError: function (event) {\n if (typeof event === 'object' && event.code && event.reason) {\n return this.ConnectionError('CONNECTION ERROR: The connection got closed with ' +\n 'the close code `' + event.code + '` and the following ' +\n 'reason string `' + event.reason + '`', event);\n }\n return new Error('CONNECTION ERROR: The connection closed unexpectedly');\n },\n MaxAttemptsReachedOnReconnectingError: function () {\n return new Error('Maximum number of reconnect attempts reached!');\n },\n PendingRequestsOnReconnectingError: function () {\n return new Error('CONNECTION ERROR: Provider started to reconnect before the response got received!');\n },\n ConnectionError: function (msg, event) {\n const error = new Error(msg);\n if (event) {\n error.code = event.code;\n error.reason = event.reason;\n if (event.description) {\n error.description = event.description;\n }\n }\n return error;\n },\n RevertInstructionError: function (reason, signature) {\n var error = new Error('Your request got reverted with the following reason string: ' + reason);\n error.reason = reason;\n error.signature = signature;\n return error;\n },\n TransactionRevertInstructionError: function (reason, signature, receipt) {\n var error = new Error('Transaction has been reverted by the EVM:\\n' + JSON.stringify(receipt, null, 2));\n error.reason = reason;\n error.signature = signature;\n error.receipt = receipt;\n return error;\n },\n TransactionError: function (message, receipt) {\n var error = new Error(message);\n error.receipt = receipt;\n return error;\n },\n NoContractAddressFoundError: function (receipt) {\n return this.TransactionError('The transaction receipt didn\\'t contain a contract address.', receipt);\n },\n ContractCodeNotStoredError: function (receipt) {\n return this.TransactionError('The contract code couldn\\'t be stored, please check your gas limit.', receipt);\n },\n TransactionRevertedWithoutReasonError: function (receipt) {\n return this.TransactionError('Transaction has been reverted by the EVM:\\n' + JSON.stringify(receipt, null, 2), receipt);\n },\n TransactionOutOfGasError: function (receipt) {\n return this.TransactionError('Transaction ran out of gas. Please provide more gas:\\n' + JSON.stringify(receipt, null, 2), receipt);\n },\n ResolverMethodMissingError: function (address, name) {\n return new Error('The resolver at ' + address + 'does not implement requested method: \"' + name + '\".');\n },\n ContractMissingABIError: function () {\n return new Error('You must provide the json interface of the contract when instantiating a contract object.');\n },\n ContractOnceRequiresCallbackError: function () {\n return new Error('Once requires a callback as the second parameter.');\n },\n ContractEventDoesNotExistError: function (eventName) {\n return new Error('Event \"' + eventName + '\" doesn\\'t exist in this contract.');\n },\n ContractReservedEventError: function (type) {\n return new Error('The event \"' + type + '\" is a reserved event name, you can\\'t use it.');\n },\n ContractMissingDeployDataError: function () {\n return new Error('No \"data\" specified in neither the given options, nor the default options.');\n },\n ContractNoAddressDefinedError: function () {\n return new Error('This contract object doesn\\'t have address set yet, please set an address first.');\n },\n ContractNoFromAddressDefinedError: function () {\n return new Error('No \"from\" address specified in neither the given options, nor the default options.');\n }\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file formatters.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n\"use strict\";\nvar utils = require('web3-utils');\nvar Iban = require('web3-eth-iban');\n/**\n * Will format the given storage key array values to hex strings.\n *\n * @method inputStorageKeysFormatter\n *\n * @param {Array} keys\n *\n * @returns {Array}\n */\nvar inputStorageKeysFormatter = function (keys) {\n return keys.map(utils.numberToHex);\n};\n/**\n * Will format the given proof response from the node.\n *\n * @method outputProofFormatter\n *\n * @param {object} proof\n *\n * @returns {object}\n */\nvar outputProofFormatter = function (proof) {\n proof.address = utils.toChecksumAddress(proof.address);\n proof.nonce = utils.hexToNumberString(proof.nonce);\n proof.balance = utils.hexToNumberString(proof.balance);\n return proof;\n};\n/**\n * Should the format output to a big number\n *\n * @method outputBigNumberFormatter\n *\n * @param {String|Number|BigNumber|BN} number\n *\n * @returns {BN} object\n */\nvar outputBigNumberFormatter = function (number) {\n return utils.toBN(number).toString(10);\n};\n/**\n * Returns true if the given blockNumber is 'latest', 'pending', 'earliest, 'finalized' or 'safe'\n *\n * @method isPredefinedBlockNumber\n *\n * @param {String} blockNumber\n *\n * @returns {Boolean}\n */\nvar isPredefinedBlockNumber = function (blockNumber) {\n return ['latest', 'pending', 'earliest', 'finalized', 'safe'].includes(blockNumber);\n};\n/**\n * Returns the given block number as hex string or does return the defaultBlock property of the current module\n *\n * @method inputDefaultBlockNumberFormatter\n *\n * @param {String|Number|BN|BigNumber} blockNumber\n *\n * @returns {String}\n */\nvar inputDefaultBlockNumberFormatter = function (blockNumber) {\n if (this && (blockNumber === undefined || blockNumber === null)) {\n return inputBlockNumberFormatter(this.defaultBlock);\n }\n return inputBlockNumberFormatter(blockNumber);\n};\n/**\n * Returns the given block number as hex string or the predefined block number 'latest', 'pending', 'earliest', 'finalized', 'safe', 'genesis'\n *\n * @param {String|Number|BN|BigNumber} blockNumber\n *\n * @returns {String}\n */\nvar inputBlockNumberFormatter = function (blockNumber) {\n if (blockNumber === undefined) {\n return undefined;\n }\n if (isPredefinedBlockNumber(blockNumber)) {\n return blockNumber;\n }\n if (blockNumber === 'genesis') {\n return '0x0';\n }\n return (utils.isHexStrict(blockNumber)) ? ((typeof blockNumber === 'string') ? blockNumber.toLowerCase() : blockNumber) : utils.numberToHex(blockNumber);\n};\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method _txInputFormatter\n * @param {Object} transaction options\n * @returns object\n */\nvar _txInputFormatter = function (options) {\n if (options.to) { // it might be contract creation\n options.to = inputAddressFormatter(options.to);\n }\n if (options.data && options.input) {\n throw new Error('You can\\'t have \"data\" and \"input\" as properties of transactions at the same time, please use either \"data\" or \"input\" instead.');\n }\n if (!options.data && options.input) {\n options.data = options.input;\n delete options.input;\n }\n if (options.data && !options.data.startsWith('0x')) {\n options.data = '0x' + options.data;\n }\n if (options.data && !utils.isHex(options.data)) {\n throw new Error('The data field must be HEX encoded data.');\n }\n // allow both\n if (options.gas || options.gasLimit) {\n options.gas = options.gas || options.gasLimit;\n }\n if (options.maxPriorityFeePerGas || options.maxFeePerGas) {\n delete options.gasPrice;\n }\n ['gasPrice', 'gas', 'value', 'maxPriorityFeePerGas', 'maxFeePerGas', 'nonce', 'type'].filter(function (key) {\n return options[key] !== undefined;\n }).forEach(function (key) {\n options[key] = utils.numberToHex(options[key]);\n });\n return options;\n};\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method inputCallFormatter\n * @param {Object} transaction options\n * @returns object\n */\nvar inputCallFormatter = function (options) {\n options = _txInputFormatter(options);\n var from = options.from || (this ? this.defaultAccount : null);\n if (from) {\n options.from = inputAddressFormatter(from);\n }\n return options;\n};\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method inputTransactionFormatter\n * @param {Object} options\n * @returns object\n */\nvar inputTransactionFormatter = function (options) {\n options = _txInputFormatter(options);\n // check from, only if not number, or object\n if (!(typeof options.from === 'number') && !(!!options.from && typeof options.from === 'object')) {\n options.from = options.from || (this ? this.defaultAccount : null);\n if (!options.from && !(typeof options.from === 'number')) {\n throw new Error('The send transactions \"from\" field must be defined!');\n }\n options.from = inputAddressFormatter(options.from);\n }\n return options;\n};\n/**\n * Hex encodes the data passed to eth_sign and personal_sign\n *\n * @method inputSignFormatter\n * @param {String} data\n * @returns {String}\n */\nvar inputSignFormatter = function (data) {\n return (utils.isHexStrict(data)) ? data : utils.utf8ToHex(data);\n};\n/**\n * Formats the output of a transaction to its proper values\n *\n * @method outputTransactionFormatter\n * @param {Object} tx\n * @returns {Object}\n */\nvar outputTransactionFormatter = function (tx, hexFormat) {\n if (!hexFormat) {\n if (tx.blockNumber !== null)\n tx.blockNumber = utils.hexToNumber(tx.blockNumber);\n if (tx.transactionIndex !== null)\n tx.transactionIndex = utils.hexToNumber(tx.transactionIndex);\n tx.nonce = utils.hexToNumber(tx.nonce);\n tx.gas = utils.hexToNumber(tx.gas);\n if (tx.type)\n tx.type = utils.hexToNumber(tx.type);\n }\n if (tx.gasPrice)\n tx.gasPrice = outputBigNumberFormatter(tx.gasPrice);\n if (tx.maxFeePerGas)\n tx.maxFeePerGas = outputBigNumberFormatter(tx.maxFeePerGas);\n if (tx.maxPriorityFeePerGas)\n tx.maxPriorityFeePerGas = outputBigNumberFormatter(tx.maxPriorityFeePerGas);\n tx.value = outputBigNumberFormatter(tx.value);\n if (tx.to && utils.isAddress(tx.to)) { // tx.to could be `0x0` or `null` while contract creation\n tx.to = utils.toChecksumAddress(tx.to);\n }\n else {\n tx.to = null; // set to `null` if invalid address\n }\n if (tx.from) {\n tx.from = utils.toChecksumAddress(tx.from);\n }\n return tx;\n};\n/**\n * Formats the output of a transaction receipt to its proper values\n *\n * @method outputTransactionReceiptFormatter\n * @param {Object} receipt\n * @returns {Object}\n */\nvar outputTransactionReceiptFormatter = function (receipt) {\n if (typeof receipt !== 'object') {\n throw new Error('Received receipt is invalid: ' + receipt);\n }\n if (!this.hexFormat) {\n if (receipt.blockNumber !== null)\n receipt.blockNumber = utils.hexToNumber(receipt.blockNumber);\n if (receipt.transactionIndex !== null)\n receipt.transactionIndex = utils.hexToNumber(receipt.transactionIndex);\n receipt.cumulativeGasUsed = utils.hexToNumber(receipt.cumulativeGasUsed);\n receipt.gasUsed = utils.hexToNumber(receipt.gasUsed);\n if (receipt.effectiveGasPrice) {\n receipt.effectiveGasPrice = utils.hexToNumber(receipt.effectiveGasPrice);\n }\n }\n if (Array.isArray(receipt.logs)) {\n receipt.logs = receipt.logs.map(outputLogFormatter);\n }\n if (receipt.contractAddress) {\n receipt.contractAddress = utils.toChecksumAddress(receipt.contractAddress);\n }\n if (typeof receipt.status !== 'undefined' && receipt.status !== null) {\n receipt.status = Boolean(parseInt(receipt.status));\n }\n return receipt;\n};\n/**\n * Formats the output of a block to its proper values\n *\n * @method outputBlockFormatter\n * @param {Object} block\n * @returns {Object}\n */\nvar outputBlockFormatter = function (block, hexFormat) {\n if (!hexFormat) {\n // transform to number\n block.gasLimit = utils.hexToNumber(block.gasLimit);\n block.gasUsed = utils.hexToNumber(block.gasUsed);\n block.size = utils.hexToNumber(block.size);\n block.timestamp = utils.hexToNumber(block.timestamp);\n if (block.number !== null)\n block.number = utils.hexToNumber(block.number);\n }\n if (block.difficulty)\n block.difficulty = outputBigNumberFormatter(block.difficulty);\n if (block.totalDifficulty)\n block.totalDifficulty = outputBigNumberFormatter(block.totalDifficulty);\n if (Array.isArray(block.transactions)) {\n block.transactions.forEach(function (item) {\n if (!(typeof item === 'string'))\n return outputTransactionFormatter(item, hexFormat);\n });\n }\n if (block.miner)\n block.miner = utils.toChecksumAddress(block.miner);\n if (block.baseFeePerGas)\n block.baseFeePerGas = utils.hexToNumber(block.baseFeePerGas);\n return block;\n};\n/**\n * Formats the input of a log\n *\n * @method inputLogFormatter\n * @param {Object} log object\n * @returns {Object} log\n */\nvar inputLogFormatter = function (options) {\n var toTopic = function (value) {\n if (value === null || typeof value === 'undefined')\n return null;\n value = String(value);\n if (value.indexOf('0x') === 0)\n return value;\n else\n return utils.fromUtf8(value);\n };\n if (options === undefined)\n options = {};\n // If options !== undefined, don't blow out existing data\n if (options.fromBlock === undefined)\n options = { ...options, fromBlock: 'latest' };\n if (options.fromBlock || options.fromBlock === 0)\n options.fromBlock = inputBlockNumberFormatter(options.fromBlock);\n if (options.toBlock || options.toBlock === 0)\n options.toBlock = inputBlockNumberFormatter(options.toBlock);\n // make sure topics, get converted to hex\n options.topics = options.topics || [];\n options.topics = options.topics.map(function (topic) {\n return (Array.isArray(topic)) ? topic.map(toTopic) : toTopic(topic);\n });\n toTopic = null;\n if (options.address) {\n options.address = (Array.isArray(options.address)) ? options.address.map(function (addr) {\n return inputAddressFormatter(addr);\n }) : inputAddressFormatter(options.address);\n }\n return options;\n};\n/**\n * Formats the output of a log\n *\n * @method outputLogFormatter\n * @param {Object} log object\n * @returns {Object} log\n */\nvar outputLogFormatter = function (log) {\n // generate a custom log id\n if (typeof log.blockHash === 'string' &&\n typeof log.transactionHash === 'string' &&\n typeof log.logIndex === 'string') {\n var shaId = utils.sha3(log.blockHash.replace('0x', '') + log.transactionHash.replace('0x', '') + log.logIndex.replace('0x', ''));\n log.id = 'log_' + shaId.replace('0x', '').slice(0, 8);\n }\n else if (!log.id) {\n log.id = null;\n }\n if (log.blockNumber !== null)\n log.blockNumber = utils.hexToNumber(log.blockNumber);\n if (log.transactionIndex !== null)\n log.transactionIndex = utils.hexToNumber(log.transactionIndex);\n if (log.logIndex !== null)\n log.logIndex = utils.hexToNumber(log.logIndex);\n if (log.address) {\n log.address = utils.toChecksumAddress(log.address);\n }\n return log;\n};\n/**\n * Formats the input of a whisper post and converts all values to HEX\n *\n * @method inputPostFormatter\n * @param {Object} transaction object\n * @returns {Object}\n */\nvar inputPostFormatter = function (post) {\n // post.payload = utils.toHex(post.payload);\n if (post.ttl)\n post.ttl = utils.numberToHex(post.ttl);\n if (post.workToProve)\n post.workToProve = utils.numberToHex(post.workToProve);\n if (post.priority)\n post.priority = utils.numberToHex(post.priority);\n // fallback\n if (!Array.isArray(post.topics)) {\n post.topics = post.topics ? [post.topics] : [];\n }\n // format the following options\n post.topics = post.topics.map(function (topic) {\n // convert only if not hex\n return (topic.indexOf('0x') === 0) ? topic : utils.fromUtf8(topic);\n });\n return post;\n};\n/**\n * Formats the output of a received post message\n *\n * @method outputPostFormatter\n * @param {Object}\n * @returns {Object}\n */\nvar outputPostFormatter = function (post) {\n post.expiry = utils.hexToNumber(post.expiry);\n post.sent = utils.hexToNumber(post.sent);\n post.ttl = utils.hexToNumber(post.ttl);\n post.workProved = utils.hexToNumber(post.workProved);\n // post.payloadRaw = post.payload;\n // post.payload = utils.hexToAscii(post.payload);\n // if (utils.isJson(post.payload)) {\n // post.payload = JSON.parse(post.payload);\n // }\n // format the following options\n if (!post.topics) {\n post.topics = [];\n }\n post.topics = post.topics.map(function (topic) {\n return utils.toUtf8(topic);\n });\n return post;\n};\nvar inputAddressFormatter = function (address) {\n var iban = new Iban(address);\n if (iban.isValid() && iban.isDirect()) {\n return iban.toAddress().toLowerCase();\n }\n else if (utils.isAddress(address)) {\n return '0x' + address.toLowerCase().replace('0x', '');\n }\n throw new Error(`Provided address ${address} is invalid, the capitalization checksum test failed, or it's an indirect IBAN address which can't be converted.`);\n};\nvar outputSyncingFormatter = function (result) {\n result.startingBlock = utils.hexToNumber(result.startingBlock);\n result.currentBlock = utils.hexToNumber(result.currentBlock);\n result.highestBlock = utils.hexToNumber(result.highestBlock);\n if (result.knownStates) {\n result.knownStates = utils.hexToNumber(result.knownStates);\n result.pulledStates = utils.hexToNumber(result.pulledStates);\n }\n return result;\n};\nmodule.exports = {\n inputDefaultBlockNumberFormatter: inputDefaultBlockNumberFormatter,\n inputBlockNumberFormatter: inputBlockNumberFormatter,\n inputCallFormatter: inputCallFormatter,\n inputTransactionFormatter: inputTransactionFormatter,\n inputAddressFormatter: inputAddressFormatter,\n inputPostFormatter: inputPostFormatter,\n inputLogFormatter: inputLogFormatter,\n inputSignFormatter: inputSignFormatter,\n inputStorageKeysFormatter: inputStorageKeysFormatter,\n outputProofFormatter: outputProofFormatter,\n outputBigNumberFormatter: outputBigNumberFormatter,\n outputTransactionFormatter: outputTransactionFormatter,\n outputTransactionReceiptFormatter: outputTransactionReceiptFormatter,\n outputBlockFormatter: outputBlockFormatter,\n outputLogFormatter: outputLogFormatter,\n outputPostFormatter: outputPostFormatter,\n outputSyncingFormatter: outputSyncingFormatter\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar errors = require('./errors');\nvar formatters = require('./formatters');\nmodule.exports = {\n errors: errors,\n formatters: formatters\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n'use strict';\nvar errors = require('web3-core-helpers').errors;\nvar formatters = require('web3-core-helpers').formatters;\nvar utils = require('web3-utils');\nvar promiEvent = require('web3-core-promievent');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar EthersTransactionUtils = require('@ethersproject/transactions');\nvar Method = function Method(options) {\n if (!options.call || !options.name) {\n throw new Error('When creating a method you need to provide at least the \"name\" and \"call\" property.');\n }\n this.name = options.name;\n this.call = options.call;\n this.params = options.params || 0;\n this.inputFormatter = options.inputFormatter;\n this.outputFormatter = options.outputFormatter;\n this.transformPayload = options.transformPayload;\n this.extraFormatters = options.extraFormatters;\n this.abiCoder = options.abiCoder; // Will be used to encode the revert reason string\n this.requestManager = options.requestManager;\n // reference to eth.accounts\n this.accounts = options.accounts;\n this.defaultBlock = options.defaultBlock || 'latest';\n this.defaultAccount = options.defaultAccount || null;\n this.transactionBlockTimeout = options.transactionBlockTimeout || 50;\n this.transactionConfirmationBlocks = options.transactionConfirmationBlocks || 24;\n this.transactionPollingTimeout = options.transactionPollingTimeout || 750;\n this.transactionPollingInterval = options.transactionPollingInterval || 1000;\n this.blockHeaderTimeout = options.blockHeaderTimeout || 10; // 10 seconds\n this.defaultCommon = options.defaultCommon;\n this.defaultChain = options.defaultChain;\n this.defaultHardfork = options.defaultHardfork;\n this.handleRevert = options.handleRevert;\n};\nMethod.prototype.setRequestManager = function (requestManager, accounts) {\n this.requestManager = requestManager;\n // reference to eth.accounts\n if (accounts) {\n this.accounts = accounts;\n }\n};\nMethod.prototype.createFunction = function (requestManager, accounts) {\n var func = this.buildCall();\n Object.defineProperty(func, 'call', { configurable: true, writable: true, value: this.call });\n this.setRequestManager(requestManager || this.requestManager, accounts || this.accounts);\n return func;\n};\nMethod.prototype.attachToObject = function (obj) {\n var func = this.buildCall();\n Object.defineProperty(func, 'call', { configurable: true, writable: true, value: this.call });\n var name = this.name.split('.');\n if (name.length > 1) {\n obj[name[0]] = obj[name[0]] || {};\n obj[name[0]][name[1]] = func;\n }\n else {\n obj[name[0]] = func;\n }\n};\n/**\n * Should be used to determine name of the jsonrpc method based on arguments\n *\n * @method getCall\n * @param {Array} arguments\n * @return {String} name of jsonrpc method\n */\nMethod.prototype.getCall = function (args) {\n return typeof this.call === 'function' ? this.call(args) : this.call;\n};\n/**\n * Should be used to extract callback from array of arguments. Modifies input param\n *\n * @method extractCallback\n * @param {Array} arguments\n * @return {Function|Null} callback, if exists\n */\nMethod.prototype.extractCallback = function (args) {\n if (typeof (args[args.length - 1]) === 'function') {\n return args.pop(); // modify the args array!\n }\n};\n/**\n * Should be called to check if the number of arguments is correct\n *\n * @method validateArgs\n * @param {Array} arguments\n * @throws {Error} if it is not\n */\nMethod.prototype.validateArgs = function (args) {\n if (args.length !== this.params) {\n throw errors.InvalidNumberOfParams(args.length, this.params, this.name);\n }\n};\n/**\n * Should be called to format input args of method\n *\n * @method formatInput\n * @param {Array}\n * @return {Array}\n */\nMethod.prototype.formatInput = function (args) {\n var _this = this;\n if (!this.inputFormatter) {\n return args;\n }\n return this.inputFormatter.map(function (formatter, index) {\n // bind this for defaultBlock, and defaultAccount\n return formatter ? formatter.call(_this, args[index]) : args[index];\n });\n};\n/**\n * Should be called to format output(result) of method\n *\n * @method formatOutput\n * @param {Object}\n * @return {Object}\n */\nMethod.prototype.formatOutput = function (result) {\n var _this = this;\n if (Array.isArray(result)) {\n return result.map(function (res) {\n return _this.outputFormatter && res ? _this.outputFormatter(res, this?.hexFormat) : res;\n });\n }\n else {\n return this.outputFormatter && result ? this.outputFormatter(result, this?.hexFormat) : result;\n }\n};\n/**\n * Should create payload from given input args\n *\n * @method toPayload\n * @param {Array} args\n * @return {Object}\n */\nMethod.prototype.toPayload = function (args) {\n var call = this.getCall(args);\n var callback = this.extractCallback(args);\n var params = this.formatInput(args);\n this.validateArgs(params);\n var payload = {\n method: call,\n params: params,\n callback: callback\n };\n if (this.transformPayload) {\n payload = this.transformPayload(payload);\n }\n return payload;\n};\nMethod.prototype._confirmTransaction = function (defer, result, payload) {\n var method = this, promiseResolved = false, canUnsubscribe = true, timeoutCount = 0, confirmationCount = 0, intervalId = null, blockHeaderTimeoutId = null, lastBlock = null, receiptJSON = '', gasProvided = ((!!payload.params[0] && typeof payload.params[0] === 'object') && payload.params[0].gas) ? payload.params[0].gas : null, isContractDeployment = (!!payload.params[0] && typeof payload.params[0] === 'object') &&\n payload.params[0].data &&\n payload.params[0].from &&\n !payload.params[0].to, hasBytecode = isContractDeployment && payload.params[0].data.length > 2;\n // add custom send Methods\n var _ethereumCalls = [\n new Method({\n name: 'getBlockByNumber',\n call: 'eth_getBlockByNumber',\n params: 2,\n inputFormatter: [formatters.inputBlockNumberFormatter, function (val) {\n return !!val;\n }],\n outputFormatter: formatters.outputBlockFormatter\n }),\n new Method({\n name: 'getTransactionReceipt',\n call: 'eth_getTransactionReceipt',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatters.outputTransactionReceiptFormatter\n }),\n new Method({\n name: 'getCode',\n call: 'eth_getCode',\n params: 2,\n inputFormatter: [formatters.inputAddressFormatter, formatters.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getTransactionByHash',\n call: 'eth_getTransactionByHash',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatters.outputTransactionFormatter\n }),\n new Subscriptions({\n name: 'subscribe',\n type: 'eth',\n subscriptions: {\n 'newBlockHeaders': {\n subscriptionName: 'newHeads',\n params: 0,\n outputFormatter: formatters.outputBlockFormatter\n }\n }\n })\n ];\n // attach methods to this._ethereumCall\n var _ethereumCall = {};\n _ethereumCalls.forEach(mthd => {\n mthd.attachToObject(_ethereumCall);\n mthd.requestManager = method.requestManager; // assign rather than call setRequestManager()\n });\n // fire \"receipt\" and confirmation events and resolve after\n var checkConfirmation = function (existingReceipt, isPolling, err, blockHeader, sub) {\n if (!err) {\n // create fake unsubscribe\n if (!sub) {\n sub = {\n unsubscribe: function () {\n clearInterval(intervalId);\n clearTimeout(blockHeaderTimeoutId);\n }\n };\n }\n // if we have a valid receipt we don't need to send a request\n return (existingReceipt ? promiEvent.resolve(existingReceipt) : _ethereumCall.getTransactionReceipt(result))\n // catch error from requesting receipt\n .catch(function (err) {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError({\n message: 'Failed to check for transaction receipt:',\n data: err\n }, defer.eventEmitter, defer.reject);\n })\n // if CONFIRMATION listener exists check for confirmations, by setting canUnsubscribe = false\n .then(async function (receipt) {\n if (!receipt || !receipt.blockHash) {\n throw new Error('Receipt missing or blockHash null');\n }\n // apply extra formatters\n if (method.extraFormatters && method.extraFormatters.receiptFormatter) {\n receipt = method.extraFormatters.receiptFormatter(receipt);\n }\n // check if confirmation listener exists\n if (defer.eventEmitter.listeners('confirmation').length > 0) {\n var block;\n // If there was an immediately retrieved receipt, it's already\n // been confirmed by the direct call to checkConfirmation needed\n // for parity instant-seal\n if (existingReceipt === undefined || confirmationCount !== 0) {\n // Get latest block to emit with confirmation\n var latestBlock = await _ethereumCall.getBlockByNumber('latest');\n var latestBlockHash = latestBlock ? latestBlock.hash : null;\n if (isPolling) { // Check if actually a new block is existing on polling\n if (lastBlock) {\n block = await _ethereumCall.getBlockByNumber(lastBlock.number + 1);\n if (block) {\n lastBlock = block;\n defer.eventEmitter.emit('confirmation', confirmationCount, receipt, latestBlockHash);\n }\n }\n else {\n block = await _ethereumCall.getBlockByNumber(receipt.blockNumber);\n lastBlock = block;\n defer.eventEmitter.emit('confirmation', confirmationCount, receipt, latestBlockHash);\n }\n }\n else {\n defer.eventEmitter.emit('confirmation', confirmationCount, receipt, latestBlockHash);\n }\n }\n if ((isPolling && block) || !isPolling) {\n confirmationCount++;\n }\n canUnsubscribe = false;\n if (confirmationCount === method.transactionConfirmationBlocks + 1) { // add 1 so we account for conf 0\n sub.unsubscribe();\n defer.eventEmitter.removeAllListeners();\n }\n }\n return receipt;\n })\n // CHECK for CONTRACT DEPLOYMENT\n .then(async function (receipt) {\n if (isContractDeployment && !promiseResolved) {\n if (!receipt.contractAddress) {\n if (canUnsubscribe) {\n sub.unsubscribe();\n promiseResolved = true;\n }\n utils._fireError(errors.NoContractAddressFoundError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n return;\n }\n var code;\n try {\n code = await _ethereumCall.getCode(receipt.contractAddress);\n }\n catch (err) {\n // ignore;\n }\n if (!code) {\n return;\n }\n // If deployment is status.true and there was a real\n // bytecode string, assume it was successful.\n var deploymentSuccess = receipt.status === true && hasBytecode;\n if (deploymentSuccess || code.length > 2) {\n defer.eventEmitter.emit('receipt', receipt);\n // if contract, return instance instead of receipt\n if (method.extraFormatters && method.extraFormatters.contractDeployFormatter) {\n defer.resolve(method.extraFormatters.contractDeployFormatter(receipt));\n }\n else {\n defer.resolve(receipt);\n }\n // need to remove listeners, as they aren't removed automatically when succesfull\n if (canUnsubscribe) {\n defer.eventEmitter.removeAllListeners();\n }\n }\n else {\n utils._fireError(errors.ContractCodeNotStoredError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n if (canUnsubscribe) {\n sub.unsubscribe();\n }\n promiseResolved = true;\n }\n return receipt;\n })\n // CHECK for normal tx check for receipt only\n .then(async function (receipt) {\n if (!isContractDeployment && !promiseResolved) {\n if (!receipt.outOfGas &&\n (!gasProvided || gasProvided !== receipt.gasUsed) &&\n (receipt.status === true || receipt.status === '0x1' || typeof receipt.status === 'undefined')) {\n defer.eventEmitter.emit('receipt', receipt);\n defer.resolve(receipt);\n // need to remove listeners, as they aren't removed automatically when succesfull\n if (canUnsubscribe) {\n defer.eventEmitter.removeAllListeners();\n }\n }\n else {\n receiptJSON = JSON.stringify(receipt, null, 2);\n if (receipt.status === false || receipt.status === '0x0') {\n try {\n var revertMessage = null;\n if (method.handleRevert &&\n (method.call === 'eth_sendTransaction' || method.call === 'eth_sendRawTransaction')) {\n var txReplayOptions = payload.params[0];\n // If send was raw, fetch the transaction and reconstitute the\n // original params so they can be replayed with `eth_call`\n if (method.call === 'eth_sendRawTransaction') {\n var rawTransactionHex = payload.params[0];\n var parsedTx = EthersTransactionUtils.parse(rawTransactionHex);\n txReplayOptions = formatters.inputTransactionFormatter({\n data: parsedTx.data,\n to: parsedTx.to,\n from: parsedTx.from,\n gas: parsedTx.gasLimit.toHexString(),\n gasPrice: parsedTx.gasPrice ? parsedTx.gasPrice.toHexString() : undefined,\n value: parsedTx.value.toHexString()\n });\n }\n // Get revert reason string with eth_call\n revertMessage = await method.getRevertReason(txReplayOptions, receipt.blockNumber);\n if (revertMessage) { // Only throw a revert error if a revert reason is existing\n utils._fireError(errors.TransactionRevertInstructionError(revertMessage.reason, revertMessage.signature, receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n else {\n throw false; // Throw false and let the try/catch statement handle the error correctly after\n }\n }\n else {\n throw false; // Throw false and let the try/catch statement handle the error correctly after\n }\n }\n catch (error) {\n // Throw an normal revert error if no revert reason is given or the detection of it is disabled\n utils._fireError(errors.TransactionRevertedWithoutReasonError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n }\n else {\n // Throw OOG if status is not existing and provided gas and used gas are equal\n utils._fireError(errors.TransactionOutOfGasError(receipt), defer.eventEmitter, defer.reject, null, receipt);\n }\n }\n if (canUnsubscribe) {\n sub.unsubscribe();\n }\n promiseResolved = true;\n }\n })\n // time out the transaction if not mined after 50 blocks\n .catch(function () {\n timeoutCount++;\n // check to see if we are http polling\n if (!!isPolling) {\n // polling timeout is different than transactionBlockTimeout blocks since we are triggering every second\n if (timeoutCount - 1 >= method.transactionPollingTimeout) {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError(errors.TransactionError('Transaction was not mined within ' + method.transactionPollingTimeout + ' seconds, please make sure your transaction was properly sent. Be aware that it might still be mined!'), defer.eventEmitter, defer.reject);\n }\n }\n else {\n if (timeoutCount - 1 >= method.transactionBlockTimeout) {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError(errors.TransactionError('Transaction was not mined within ' + method.transactionBlockTimeout + ' blocks, please make sure your transaction was properly sent. Be aware that it might still be mined!'), defer.eventEmitter, defer.reject);\n }\n }\n });\n }\n else {\n sub.unsubscribe();\n promiseResolved = true;\n utils._fireError({\n message: 'Failed to subscribe to new newBlockHeaders to confirm the transaction receipts.',\n data: err\n }, defer.eventEmitter, defer.reject);\n }\n };\n // start watching for confirmation depending on the support features of the provider\n var startWatching = function (existingReceipt) {\n let blockHeaderArrived = false;\n const startInterval = () => {\n intervalId = setInterval(checkConfirmation.bind(null, existingReceipt, true), method.transactionPollingInterval);\n };\n // If provider do not support event subscription use polling\n if (!this.requestManager.provider.on) {\n return startInterval();\n }\n // Subscribe to new block headers to look for tx receipt\n _ethereumCall.subscribe('newBlockHeaders', function (err, blockHeader, sub) {\n blockHeaderArrived = true;\n if (err || !blockHeader) {\n // fall back to polling\n return startInterval();\n }\n checkConfirmation(existingReceipt, false, err, blockHeader, sub);\n });\n // Fallback to polling if tx receipt didn't arrived in \"blockHeaderTimeout\" [10 seconds]\n blockHeaderTimeoutId = setTimeout(() => {\n if (!blockHeaderArrived) {\n startInterval();\n }\n }, this.blockHeaderTimeout * 1000);\n }.bind(this);\n // first check if we already have a confirmed transaction\n _ethereumCall.getTransactionReceipt(result)\n .then(function (receipt) {\n if (receipt && receipt.blockHash) {\n if (defer.eventEmitter.listeners('confirmation').length > 0) {\n // We must keep on watching for new Blocks, if a confirmation listener is present\n startWatching(receipt);\n }\n checkConfirmation(receipt, false);\n }\n else if (!promiseResolved) {\n startWatching();\n }\n })\n .catch(function () {\n if (!promiseResolved)\n startWatching();\n });\n};\nvar getWallet = function (from, accounts) {\n var wallet = null;\n // is index given\n if (typeof from === 'number') {\n wallet = accounts.wallet[from];\n // is account given\n }\n else if (!!from && typeof from === 'object' && from.address && from.privateKey) {\n wallet = from;\n // search in wallet for address\n }\n else {\n wallet = accounts.wallet[from.toLowerCase()];\n }\n return wallet;\n};\nMethod.prototype.buildCall = function () {\n var method = this, isSendTx = (method.call === 'eth_sendTransaction' || method.call === 'eth_sendRawTransaction'), // || method.call === 'personal_sendTransaction'\n isCall = (method.call === 'eth_call');\n // actual send function\n var send = function () {\n let args = Array.prototype.slice.call(arguments);\n var defer = promiEvent(!isSendTx), payload = method.toPayload(args);\n method.hexFormat = false;\n if (method.call === 'eth_getTransactionReceipt'\n || method.call === 'eth_getTransactionByHash'\n || method.name === 'getBlock') {\n method.hexFormat = (payload.params.length < args.length && args[args.length - 1] === 'hex');\n }\n // CALLBACK function\n var sendTxCallback = function (err, result) {\n if (method.handleRevert && isCall && method.abiCoder) {\n var reasonData;\n // Ganache / Geth <= 1.9.13 return the reason data as a successful eth_call response\n // Geth >= 1.9.15 attaches the reason data to an error object.\n // Geth 1.9.14 is missing revert reason (https://github.com/ethereum/web3.js/issues/3520)\n if (!err && method.isRevertReasonString(result)) {\n reasonData = result.substring(10);\n }\n else if (err && err.data) {\n // workaround embedded error details got from some providers like MetaMask\n if (typeof err.data === 'object') {\n // Ganache has no `originalError` sub-object unlike others\n var originalError = err.data.originalError ?? err.data;\n reasonData = originalError.data.substring(10);\n }\n else {\n reasonData = err.data.substring(10);\n }\n }\n if (reasonData) {\n var reason = method.abiCoder.decodeParameter('string', '0x' + reasonData);\n var signature = 'Error(String)';\n utils._fireError(errors.RevertInstructionError(reason, signature), defer.eventEmitter, defer.reject, payload.callback, {\n reason: reason,\n signature: signature\n });\n return;\n }\n }\n try {\n result = method.formatOutput(result);\n }\n catch (e) {\n err = e;\n }\n if (result instanceof Error) {\n err = result;\n }\n if (!err) {\n if (payload.callback) {\n payload.callback(null, result);\n }\n }\n else {\n if (err.error) {\n err = err.error;\n }\n return utils._fireError(err, defer.eventEmitter, defer.reject, payload.callback);\n }\n // return PROMISE\n if (!isSendTx) {\n if (!err) {\n defer.resolve(result);\n }\n // return PROMIEVENT\n }\n else {\n defer.eventEmitter.emit('transactionHash', result);\n method._confirmTransaction(defer, result, payload);\n }\n };\n // SENDS the SIGNED SIGNATURE\n var sendSignedTx = function (sign) {\n var signedPayload = { ...payload,\n method: 'eth_sendRawTransaction',\n params: [sign.rawTransaction]\n };\n method.requestManager.send(signedPayload, sendTxCallback);\n };\n var sendRequest = function (payload, method) {\n if (method && method.accounts && method.accounts.wallet && method.accounts.wallet.length) {\n var wallet;\n // ETH_SENDTRANSACTION\n if (payload.method === 'eth_sendTransaction') {\n var tx = payload.params[0];\n wallet = getWallet((!!tx && typeof tx === 'object') ? tx.from : null, method.accounts);\n // If wallet was found, sign tx, and send using sendRawTransaction\n if (wallet && wallet.privateKey) {\n var tx = JSON.parse(JSON.stringify(tx));\n delete tx.from;\n if (method.defaultChain && !tx.chain) {\n tx.chain = method.defaultChain;\n }\n if (method.defaultHardfork && !tx.hardfork) {\n tx.hardfork = method.defaultHardfork;\n }\n if (method.defaultCommon && !tx.common) {\n tx.common = method.defaultCommon;\n }\n method.accounts.signTransaction(tx, wallet.privateKey)\n .then(sendSignedTx)\n .catch(function (err) {\n if (typeof defer.eventEmitter.listeners === 'function' && defer.eventEmitter.listeners('error').length) {\n try {\n defer.eventEmitter.emit('error', err);\n }\n catch (err) {\n // Ignore userland error prevent it to bubble up within web3.\n }\n defer.eventEmitter.removeAllListeners();\n defer.eventEmitter.catch(function () {\n });\n }\n defer.reject(err);\n });\n return;\n }\n // ETH_SIGN\n }\n else if (payload.method === 'eth_sign') {\n var data = payload.params[1];\n wallet = getWallet(payload.params[0], method.accounts);\n // If wallet was found, sign tx, and send using sendRawTransaction\n if (wallet && wallet.privateKey) {\n var sign = method.accounts.sign(data, wallet.privateKey);\n if (payload.callback) {\n payload.callback(null, sign.signature);\n }\n defer.resolve(sign.signature);\n return;\n }\n }\n }\n return method.requestManager.send(payload, sendTxCallback);\n };\n const hasSendTxObject = isSendTx\n && !!payload.params[0]\n && typeof payload.params[0] === 'object';\n if (hasSendTxObject &&\n payload.params[0].type === '0x1'\n && typeof payload.params[0].accessList === 'undefined') {\n payload.params[0].accessList = [];\n }\n // Send the actual transaction\n if (hasSendTxObject\n && (typeof payload.params[0].gasPrice === 'undefined'\n && (typeof payload.params[0].maxPriorityFeePerGas === 'undefined'\n || typeof payload.params[0].maxFeePerGas === 'undefined'))) {\n _handleTxPricing(method, payload.params[0]).then(txPricing => {\n if (txPricing.gasPrice !== undefined) {\n payload.params[0].gasPrice = txPricing.gasPrice;\n }\n else if (txPricing.maxPriorityFeePerGas !== undefined\n && txPricing.maxFeePerGas !== undefined) {\n payload.params[0].maxPriorityFeePerGas = txPricing.maxPriorityFeePerGas;\n payload.params[0].maxFeePerGas = txPricing.maxFeePerGas;\n }\n if (isSendTx) {\n setTimeout(() => {\n defer.eventEmitter.emit('sending', payload);\n }, 0);\n }\n sendRequest(payload, method);\n });\n }\n else {\n if (isSendTx) {\n setTimeout(() => {\n defer.eventEmitter.emit('sending', payload);\n }, 0);\n }\n sendRequest(payload, method);\n }\n if (isSendTx) {\n setTimeout(() => {\n defer.eventEmitter.emit('sent', payload);\n }, 0);\n }\n return defer.eventEmitter;\n };\n // necessary to attach things to the method\n send.method = method;\n // necessary for batch requests\n send.request = this.request.bind(this);\n return send;\n};\nfunction _handleTxPricing(method, tx) {\n return new Promise((resolve, reject) => {\n try {\n var getBlockByNumber = (new Method({\n name: 'getBlockByNumber',\n call: 'eth_getBlockByNumber',\n params: 2,\n inputFormatter: [function (blockNumber) {\n return blockNumber ? utils.toHex(blockNumber) : 'latest';\n }, function () {\n return false;\n }]\n })).createFunction(method.requestManager);\n var getGasPrice = (new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0\n })).createFunction(method.requestManager);\n Promise.all([\n getBlockByNumber(),\n getGasPrice()\n ]).then(responses => {\n const [block, gasPrice] = responses;\n if ((tx.type === '0x2' || tx.type === undefined) &&\n (block && block.baseFeePerGas)) {\n // The network supports EIP-1559\n // Taken from https://github.com/ethers-io/ethers.js/blob/ba6854bdd5a912fe873d5da494cb5c62c190adde/packages/abstract-provider/src.ts/index.ts#L230\n let maxPriorityFeePerGas, maxFeePerGas;\n if (tx.gasPrice) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n maxPriorityFeePerGas = tx.gasPrice;\n maxFeePerGas = tx.gasPrice;\n delete tx.gasPrice;\n }\n else {\n maxPriorityFeePerGas = tx.maxPriorityFeePerGas || '0x9502F900'; // 2.5 Gwei\n maxFeePerGas = tx.maxFeePerGas ||\n utils.toHex(utils.toBN(block.baseFeePerGas)\n .mul(utils.toBN(2))\n .add(utils.toBN(maxPriorityFeePerGas)));\n }\n resolve({ maxFeePerGas, maxPriorityFeePerGas });\n }\n else {\n if (tx.maxPriorityFeePerGas || tx.maxFeePerGas)\n throw Error(\"Network doesn't support eip-1559\");\n resolve({ gasPrice });\n }\n });\n }\n catch (error) {\n reject(error);\n }\n });\n}\n/**\n * Returns the revert reason string if existing or otherwise false.\n *\n * @method getRevertReason\n *\n * @param {Object} txOptions\n * @param {Number} blockNumber\n *\n * @returns {Promise}\n */\nMethod.prototype.getRevertReason = function (txOptions, blockNumber) {\n var self = this;\n return new Promise(function (resolve, reject) {\n (new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n abiCoder: self.abiCoder,\n handleRevert: true\n }))\n .createFunction(self.requestManager)(txOptions, utils.numberToHex(blockNumber))\n .then(function () {\n resolve(false);\n })\n .catch(function (error) {\n if (error.reason) {\n resolve({\n reason: error.reason,\n signature: error.signature\n });\n }\n else {\n reject(error);\n }\n });\n });\n};\n/**\n * Checks if the given hex string is a revert message from the EVM\n *\n * @method isRevertReasonString\n *\n * @param {String} data - Hex string prefixed with 0x\n *\n * @returns {Boolean}\n */\nMethod.prototype.isRevertReasonString = function (data) {\n return typeof data === 'string' && ((data.length - 2) / 2) % 32 === 4 && data.substring(0, 10) === '0x08c379a0';\n};\n/**\n * Should be called to create the pure JSONRPC request which can be used in a batch request\n *\n * @method request\n * @return {Object} jsonrpc request\n */\nMethod.prototype.request = function () {\n var payload = this.toPayload(Array.prototype.slice.call(arguments));\n payload.format = this.formatOutput.bind(this);\n return payload;\n};\nmodule.exports = Method;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2016\n */\n\"use strict\";\nvar EventEmitter = require('eventemitter3');\n/**\n * This function generates a defer promise and adds eventEmitter functionality to it\n *\n * @method eventifiedPromise\n */\nvar PromiEvent = function PromiEvent(justPromise) {\n var resolve, reject, eventEmitter = new Promise(function () {\n resolve = arguments[0];\n reject = arguments[1];\n });\n if (justPromise) {\n return {\n resolve: resolve,\n reject: reject,\n eventEmitter: eventEmitter\n };\n }\n // get eventEmitter\n var emitter = new EventEmitter();\n // add eventEmitter to the promise\n eventEmitter._events = emitter._events;\n eventEmitter.emit = emitter.emit;\n eventEmitter.on = emitter.on;\n eventEmitter.once = emitter.once;\n eventEmitter.off = emitter.off;\n eventEmitter.listeners = emitter.listeners;\n eventEmitter.addListener = emitter.addListener;\n eventEmitter.removeListener = emitter.removeListener;\n eventEmitter.removeAllListeners = emitter.removeAllListeners;\n return {\n resolve: resolve,\n reject: reject,\n eventEmitter: eventEmitter\n };\n};\nPromiEvent.resolve = function (value) {\n var promise = PromiEvent(true);\n promise.resolve(value);\n return promise.eventEmitter;\n};\nmodule.exports = PromiEvent;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file batch.js\n * @author Marek Kotewicz \n * @date 2015\n */\n\"use strict\";\nvar Jsonrpc = require('./jsonrpc');\nvar errors = require('web3-core-helpers').errors;\nvar Batch = function (requestManager) {\n this.requestManager = requestManager;\n this.requests = [];\n};\n/**\n * Should be called to add create new request to batch request\n *\n * @method add\n * @param {Object} jsonrpc requet object\n */\nBatch.prototype.add = function (request) {\n this.requests.push(request);\n};\n/**\n * Should be called to execute batch request\n *\n * @method execute\n */\nBatch.prototype.execute = function () {\n var requests = this.requests;\n var sortResponses = this._sortResponses.bind(this);\n this.requestManager.sendBatch(requests, function (err, results) {\n results = sortResponses(results);\n requests.map(function (request, index) {\n return results[index] || {};\n }).forEach(function (result, index) {\n if (requests[index].callback) {\n if (result && result.error) {\n return requests[index].callback(errors.ErrorResponse(result));\n }\n if (!Jsonrpc.isValidResponse(result)) {\n return requests[index].callback(errors.InvalidResponse(result));\n }\n try {\n requests[index].callback(null, requests[index].format ? requests[index].format(result.result) : result.result);\n }\n catch (err) {\n requests[index].callback(err);\n }\n }\n });\n });\n};\n// Sort responses\nBatch.prototype._sortResponses = function (responses) {\n return (responses || []).sort((a, b) => a.id - b.id);\n};\nmodule.exports = Batch;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file givenProvider.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar givenProvider = null;\n// ADD GIVEN PROVIDER\n/* jshint ignore:start */\nvar global = typeof globalThis === 'object' ? globalThis : undefined;\nif (!global) {\n try {\n global = Function('return this')();\n }\n catch (e) {\n global = self;\n }\n}\n// EIP-1193: window.ethereum\nif (typeof global.ethereum !== 'undefined') {\n givenProvider = global.ethereum;\n // Legacy web3.currentProvider\n}\nelse if (typeof global.web3 !== 'undefined' && global.web3.currentProvider) {\n if (global.web3.currentProvider.sendAsync) {\n global.web3.currentProvider.send = global.web3.currentProvider.sendAsync;\n delete global.web3.currentProvider.sendAsync;\n }\n // if connection is 'ipcProviderWrapper', add subscription support\n if (!global.web3.currentProvider.on &&\n global.web3.currentProvider.connection &&\n global.web3.currentProvider.connection.constructor.name === 'ipcProviderWrapper') {\n global.web3.currentProvider.on = function (type, callback) {\n if (typeof callback !== 'function')\n throw new Error('The second parameter callback must be a function.');\n switch (type) {\n case 'data':\n this.connection.on('data', function (data) {\n var result = '';\n data = data.toString();\n try {\n result = JSON.parse(data);\n }\n catch (e) {\n return callback(new Error('Couldn\\'t parse response data' + data));\n }\n // notification\n if (!result.id && result.method.indexOf('_subscription') !== -1) {\n callback(null, result);\n }\n });\n break;\n default:\n this.connection.on(type, callback);\n break;\n }\n };\n }\n givenProvider = global.web3.currentProvider;\n}\n/* jshint ignore:end */\nmodule.exports = givenProvider;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nconst { callbackify } = require('util');\nvar errors = require('web3-core-helpers').errors;\nvar Jsonrpc = require('./jsonrpc.js');\nvar BatchManager = require('./batch.js');\nvar givenProvider = require('./givenProvider.js');\n/**\n * It's responsible for passing messages to providers\n * It's also responsible for polling the ethereum node for incoming messages\n * Default poll timeout is 1 second\n * Singleton\n *\n * @param {string|Object}provider\n * @param {Net.Socket} net\n *\n * @constructor\n */\nvar RequestManager = function RequestManager(provider, net) {\n this.provider = null;\n this.providers = RequestManager.providers;\n this.setProvider(provider, net);\n this.subscriptions = new Map();\n};\nRequestManager.givenProvider = givenProvider;\nRequestManager.providers = {\n WebsocketProvider: require('web3-providers-ws'),\n HttpProvider: require('web3-providers-http'),\n IpcProvider: require('web3-providers-ipc')\n};\n/**\n * Should be used to set provider of request manager\n *\n * @method setProvider\n *\n * @param {Object} provider\n * @param {net.Socket} net\n *\n * @returns void\n */\nRequestManager.prototype.setProvider = function (provider, net) {\n var _this = this;\n // autodetect provider\n if (provider && typeof provider === 'string' && this.providers) {\n // HTTP\n if (/^http(s)?:\\/\\//i.test(provider)) {\n provider = new this.providers.HttpProvider(provider);\n // WS\n }\n else if (/^ws(s)?:\\/\\//i.test(provider)) {\n provider = new this.providers.WebsocketProvider(provider);\n // IPC\n }\n else if (provider && typeof net === 'object' && typeof net.connect === 'function') {\n provider = new this.providers.IpcProvider(provider, net);\n }\n else if (provider) {\n throw new Error('Can\\'t autodetect provider for \"' + provider + '\"');\n }\n }\n // reset the old one before changing, if still connected\n if (this.provider && this.provider.connected)\n this.clearSubscriptions();\n this.provider = provider || null;\n // listen to incoming notifications\n if (this.provider && this.provider.on) {\n if (typeof provider.request === 'function') { // EIP-1193 provider\n this.provider.on('message', function (payload) {\n if (payload && payload.type === 'eth_subscription' && payload.data) {\n const data = payload.data;\n if (data.subscription && _this.subscriptions.has(data.subscription)) {\n _this.subscriptions.get(data.subscription).callback(null, data.result);\n }\n }\n });\n }\n else { // legacy provider subscription event\n this.provider.on('data', function data(result, deprecatedResult) {\n result = result || deprecatedResult; // this is for possible old providers, which may had the error first handler\n // if result is a subscription, call callback for that subscription\n if (result.method && result.params && result.params.subscription && _this.subscriptions.has(result.params.subscription)) {\n _this.subscriptions.get(result.params.subscription).callback(null, result.params.result);\n }\n });\n }\n // resubscribe if the provider has reconnected\n this.provider.on('connect', function connect() {\n _this.subscriptions.forEach(function (subscription) {\n subscription.subscription.resubscribe();\n });\n });\n // notify all subscriptions about the error condition\n this.provider.on('error', function error(error) {\n _this.subscriptions.forEach(function (subscription) {\n subscription.callback(error);\n });\n });\n // notify all subscriptions about bad close conditions\n const disconnect = function disconnect(event) {\n if (!_this._isCleanCloseEvent(event) || _this._isIpcCloseError(event)) {\n _this.subscriptions.forEach(function (subscription) {\n subscription.callback(errors.ConnectionCloseError(event));\n _this.subscriptions.delete(subscription.subscription.id);\n });\n if (_this.provider && _this.provider.emit) {\n _this.provider.emit('error', errors.ConnectionCloseError(event));\n }\n }\n if (_this.provider && _this.provider.emit) {\n _this.provider.emit('end', event);\n }\n };\n this.provider.on('disconnect', disconnect);\n // TODO add end, timeout??\n }\n};\n/**\n * Asynchronously send request to provider.\n * Prefers to use the `request` method available on the provider as specified in [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193).\n * If `request` is not available, falls back to `sendAsync` and `send` respectively.\n * @method send\n * @param {Object} data\n * @param {Function} callback\n */\nRequestManager.prototype.send = function (data, callback) {\n callback = callback || function () { };\n if (!this.provider) {\n return callback(errors.InvalidProvider());\n }\n const { method, params } = data;\n const jsonrpcPayload = Jsonrpc.toPayload(method, params);\n const jsonrpcResultCallback = this._jsonrpcResultCallback(callback, jsonrpcPayload);\n if (this.provider.request) {\n const callbackRequest = callbackify(this.provider.request.bind(this.provider));\n const requestArgs = { method, params };\n callbackRequest(requestArgs, callback);\n }\n else if (this.provider.sendAsync) {\n this.provider.sendAsync(jsonrpcPayload, jsonrpcResultCallback);\n }\n else if (this.provider.send) {\n this.provider.send(jsonrpcPayload, jsonrpcResultCallback);\n }\n else {\n throw new Error('Provider does not have a request or send method to use.');\n }\n};\n/**\n * Asynchronously send batch request.\n * Only works if provider supports batch methods through `sendAsync` or `send`.\n * @method sendBatch\n * @param {Array} data - array of payload objects\n * @param {Function} callback\n */\nRequestManager.prototype.sendBatch = function (data, callback) {\n if (!this.provider) {\n return callback(errors.InvalidProvider());\n }\n var payload = Jsonrpc.toBatchPayload(data);\n this.provider[this.provider.sendAsync ? 'sendAsync' : 'send'](payload, function (err, results) {\n if (err) {\n return callback(err);\n }\n if (!Array.isArray(results)) {\n return callback(errors.InvalidResponse(results));\n }\n callback(null, results);\n });\n};\n/**\n * Waits for notifications\n *\n * @method addSubscription\n * @param {Subscription} subscription the subscription\n * @param {String} type the subscription namespace (eth, personal, etc)\n * @param {Function} callback the callback to call for incoming notifications\n */\nRequestManager.prototype.addSubscription = function (subscription, callback) {\n if (this.provider.on) {\n this.subscriptions.set(subscription.id, {\n callback: callback,\n subscription: subscription\n });\n }\n else {\n throw new Error('The provider doesn\\'t support subscriptions: ' + this.provider.constructor.name);\n }\n};\n/**\n * Waits for notifications\n *\n * @method removeSubscription\n * @param {String} id the subscription id\n * @param {Function} callback fired once the subscription is removed\n */\nRequestManager.prototype.removeSubscription = function (id, callback) {\n if (this.subscriptions.has(id)) {\n var type = this.subscriptions.get(id).subscription.options.type;\n // remove subscription first to avoid reentry\n this.subscriptions.delete(id);\n // then, try to actually unsubscribe\n this.send({\n method: type + '_unsubscribe',\n params: [id]\n }, callback);\n return;\n }\n if (typeof callback === 'function') {\n // call the callback if the subscription was already removed\n callback(null);\n }\n};\n/**\n * Should be called to reset the subscriptions\n *\n * @method reset\n *\n * @returns {boolean}\n */\nRequestManager.prototype.clearSubscriptions = function (keepIsSyncing) {\n try {\n var _this = this;\n // uninstall all subscriptions\n if (this.subscriptions.size > 0) {\n this.subscriptions.forEach(function (value, id) {\n if (!keepIsSyncing || value.name !== 'syncing')\n _this.removeSubscription(id);\n });\n }\n // reset notification callbacks etc.\n if (this.provider.reset)\n this.provider.reset();\n return true;\n }\n catch (e) {\n throw new Error(`Error while clearing subscriptions: ${e}`);\n }\n};\n/**\n * Evaluates WS close event\n *\n * @method _isCleanClose\n *\n * @param {CloseEvent | boolean} event WS close event or exception flag\n *\n * @returns {boolean}\n */\nRequestManager.prototype._isCleanCloseEvent = function (event) {\n return typeof event === 'object' && ([1000].includes(event.code) || event.wasClean === true);\n};\n/**\n * Detects Ipc close error. The node.net module emits ('close', isException)\n *\n * @method _isIpcCloseError\n *\n * @param {CloseEvent | boolean} event WS close event or exception flag\n *\n * @returns {boolean}\n */\nRequestManager.prototype._isIpcCloseError = function (event) {\n return typeof event === 'boolean' && event;\n};\n/**\n * The jsonrpc result callback for RequestManager.send\n *\n * @method _jsonrpcResultCallback\n *\n * @param {Function} callback the callback to use\n * @param {Object} payload the jsonrpc payload\n *\n * @returns {Function} return callback of form (err, result)\n *\n */\nRequestManager.prototype._jsonrpcResultCallback = function (callback, payload) {\n return function (err, result) {\n if (result && result.id && payload.id !== result.id) {\n return callback(new Error(`Wrong response id ${result.id} (expected: ${payload.id}) in ${JSON.stringify(payload)}`));\n }\n if (err) {\n return callback(err);\n }\n if (result && result.error) {\n return callback(errors.ErrorResponse(result));\n }\n if (!Jsonrpc.isValidResponse(result)) {\n return callback(errors.InvalidResponse(result));\n }\n callback(null, result.result);\n };\n};\nmodule.exports = {\n Manager: RequestManager,\n BatchManager: BatchManager\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/** @file jsonrpc.js\n * @authors:\n * Fabian Vogelsteller \n * Marek Kotewicz \n * Aaron Kumavis \n * @date 2015\n */\n\"use strict\";\n// Initialize Jsonrpc as a simple object with utility functions.\nvar Jsonrpc = {\n // This is the starting counter for the Jsonrpc.id.\n // Pick a random number between 0 and the maximum safe integer\n messageId: Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)\n};\n/**\n * Should be called to valid json create payload object\n *\n * @method toPayload\n * @param {Function} method of jsonrpc call, required\n * @param {Array} params, an array of method params, optional\n * @returns {Object} valid jsonrpc payload object\n */\nJsonrpc.toPayload = function (method, params) {\n if (!method) {\n throw new Error('JSONRPC method should be specified for params: \"' + JSON.stringify(params) + '\"!');\n }\n if (Jsonrpc.messageId === Number.MAX_SAFE_INTEGER) {\n // if the maximum safe integer has been reached, restart from a random number\n Jsonrpc.messageId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n }\n else {\n // advance message ID\n Jsonrpc.messageId++;\n }\n return {\n jsonrpc: '2.0',\n id: Jsonrpc.messageId,\n method: method,\n params: params || []\n };\n};\n/**\n * Should be called to check if jsonrpc response is valid\n *\n * @method isValidResponse\n * @param {Object}\n * @returns {Boolean} true if response is valid, otherwise false\n */\nJsonrpc.isValidResponse = function (response) {\n return Array.isArray(response) ? response.every(validateSingleMessage) : validateSingleMessage(response);\n function validateSingleMessage(message) {\n return !!message &&\n !message.error &&\n message.jsonrpc === '2.0' &&\n (typeof message.id === 'number' || typeof message.id === 'string') &&\n message.result !== undefined; // only undefined is not valid json object\n }\n};\n/**\n * Should be called to create batch payload object\n *\n * @method toBatchPayload\n * @param {Array} messages, an array of objects with method (required) and params (optional) fields\n * @returns {Array} batch payload\n */\nJsonrpc.toBatchPayload = function (messages) {\n return messages.map(function (message) {\n return Jsonrpc.toPayload(message.method, message.params);\n });\n};\nmodule.exports = Jsonrpc;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar Subscription = require('./subscription.js');\nvar Subscriptions = function Subscriptions(options) {\n this.name = options.name;\n this.type = options.type;\n this.subscriptions = options.subscriptions || {};\n this.requestManager = null;\n};\nSubscriptions.prototype.setRequestManager = function (rm) {\n this.requestManager = rm;\n};\nSubscriptions.prototype.attachToObject = function (obj) {\n var func = this.buildCall();\n var name = this.name.split('.');\n if (name.length > 1) {\n obj[name[0]] = obj[name[0]] || {};\n obj[name[0]][name[1]] = func;\n }\n else {\n obj[name[0]] = func;\n }\n};\nSubscriptions.prototype.buildCall = function () {\n var _this = this;\n return function () {\n if (!_this.subscriptions[arguments[0]]) {\n console.warn('Subscription ' + JSON.stringify(arguments[0]) + ' doesn\\'t exist. Subscribing anyway.');\n }\n var subscription = new Subscription({\n subscription: _this.subscriptions[arguments[0]] || {},\n requestManager: _this.requestManager,\n type: _this.type\n });\n return subscription.subscribe.apply(subscription, arguments);\n };\n};\nmodule.exports = {\n subscriptions: Subscriptions,\n subscription: Subscription\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file subscription.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar errors = require('web3-core-helpers').errors;\nvar EventEmitter = require('eventemitter3');\nvar formatters = require('web3-core-helpers').formatters;\nfunction identity(value) {\n return value;\n}\nfunction Subscription(options) {\n EventEmitter.call(this);\n this.id = null;\n this.callback = identity;\n this.arguments = null;\n this.lastBlock = null; // \"from\" block tracker for backfilling events on reconnection\n this.options = {\n subscription: options.subscription,\n type: options.type,\n requestManager: options.requestManager\n };\n}\n// INHERIT\nSubscription.prototype = Object.create(EventEmitter.prototype);\nSubscription.prototype.constructor = Subscription;\n/**\n * Should be used to extract callback from array of arguments. Modifies input param\n *\n * @method extractCallback\n * @param {Array} arguments\n * @return {Function|Null} callback, if exists\n */\nSubscription.prototype._extractCallback = function (args) {\n if (typeof args[args.length - 1] === 'function') {\n return args.pop(); // modify the args array!\n }\n};\n/**\n * Should be called to check if the number of arguments is correct\n *\n * @method validateArgs\n * @param {Array} arguments\n * @throws {Error} if it is not\n */\nSubscription.prototype._validateArgs = function (args) {\n var subscription = this.options.subscription;\n if (!subscription)\n subscription = {};\n if (!subscription.params)\n subscription.params = 0;\n if (args.length !== subscription.params) {\n throw errors.InvalidNumberOfParams(args.length, subscription.params, subscription.subscriptionName);\n }\n};\n/**\n * Should be called to format input args of method\n *\n * @method formatInput\n * @param {Array}\n * @return {Array}\n */\nSubscription.prototype._formatInput = function (args) {\n var subscription = this.options.subscription;\n if (!subscription) {\n return args;\n }\n if (!subscription.inputFormatter) {\n return args;\n }\n var formattedArgs = subscription.inputFormatter.map(function (formatter, index) {\n return formatter ? formatter(args[index]) : args[index];\n });\n return formattedArgs;\n};\n/**\n * Should be called to format output(result) of method\n *\n * @method formatOutput\n * @param result {Object}\n * @return {Object}\n */\nSubscription.prototype._formatOutput = function (result) {\n var subscription = this.options.subscription;\n return (subscription && subscription.outputFormatter && result) ? subscription.outputFormatter(result) : result;\n};\n/**\n * Should create payload from given input args\n *\n * @method toPayload\n * @param {Array} args\n * @return {Object}\n */\nSubscription.prototype._toPayload = function (args) {\n var params = [];\n this.callback = this._extractCallback(args) || identity;\n if (!this.subscriptionMethod) {\n this.subscriptionMethod = args.shift();\n // replace subscription with given name\n if (this.options.subscription.subscriptionName) {\n this.subscriptionMethod = this.options.subscription.subscriptionName;\n }\n }\n if (!this.arguments) {\n this.arguments = this._formatInput(args);\n this._validateArgs(this.arguments);\n args = []; // make empty after validation\n }\n // re-add subscriptionName\n params.push(this.subscriptionMethod);\n params = params.concat(this.arguments);\n if (args.length) {\n throw new Error('Only a callback is allowed as parameter on an already instantiated subscription.');\n }\n return {\n method: this.options.type + '_subscribe',\n params: params\n };\n};\n/**\n * Unsubscribes and clears callbacks\n *\n * @method unsubscribe\n * @return {Object}\n */\nSubscription.prototype.unsubscribe = function (callback) {\n this.options.requestManager.removeSubscription(this.id, callback);\n this.id = null;\n this.lastBlock = null;\n this.removeAllListeners();\n};\n/**\n * Subscribes and watches for changes\n *\n * @method subscribe\n * @param {String} subscription the subscription\n * @param {Object} options the options object with address topics and fromBlock\n * @return {Object}\n */\nSubscription.prototype.subscribe = function () {\n var _this = this;\n var args = Array.prototype.slice.call(arguments);\n var payload = this._toPayload(args);\n if (!payload) {\n return this;\n }\n // throw error, if provider is not set\n if (!this.options.requestManager.provider) {\n setTimeout(function () {\n var err1 = new Error('No provider set.');\n _this.callback(err1, null, _this);\n _this.emit('error', err1);\n }, 0);\n return this;\n }\n // throw error, if provider doesnt support subscriptions\n if (!this.options.requestManager.provider.on) {\n setTimeout(function () {\n var err2 = new Error('The current provider doesn\\'t support subscriptions: ' +\n _this.options.requestManager.provider.constructor.name);\n _this.callback(err2, null, _this);\n _this.emit('error', err2);\n }, 0);\n return this;\n }\n // Re-subscription only: continue fetching from the last block we received.\n // a dropped connection may have resulted in gaps in the logs...\n if (this.lastBlock && !!this.options.params && typeof this.options.params === 'object') {\n payload.params[1] = this.options.params;\n payload.params[1].fromBlock = formatters.inputBlockNumberFormatter(this.lastBlock + 1);\n }\n // if id is there unsubscribe first\n if (this.id) {\n this.unsubscribe();\n }\n // store the params in the options object\n this.options.params = payload.params[1];\n // get past logs, if fromBlock is available\n if (payload.params[0] === 'logs' && !!payload.params[1] && typeof payload.params[1] === 'object' && payload.params[1].hasOwnProperty('fromBlock') && isFinite(payload.params[1].fromBlock)) {\n // send the subscription request\n // copy the params to avoid race-condition with deletion below this block\n var blockParams = Object.assign({}, payload.params[1]);\n this.options.requestManager.send({\n method: 'eth_getLogs',\n params: [blockParams]\n }, function (err, logs) {\n if (!err) {\n logs.forEach(function (log) {\n var output = _this._formatOutput(log);\n _this.callback(null, output, _this);\n _this.emit('data', output);\n });\n // TODO subscribe here? after the past logs?\n }\n else {\n setTimeout(function () {\n _this.callback(err, null, _this);\n _this.emit('error', err);\n }, 0);\n }\n });\n }\n // create subscription\n // TODO move to separate function? so that past logs can go first?\n if (typeof payload.params[1] === 'object')\n delete payload.params[1].fromBlock;\n this.options.requestManager.send(payload, function (err, result) {\n if (!err && result) {\n _this.id = result;\n _this.method = payload.params[0];\n // call callback on notifications\n _this.options.requestManager.addSubscription(_this, function (error, result) {\n if (!error) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.forEach(function (resultItem) {\n var output = _this._formatOutput(resultItem);\n // Track current block (for gaps introduced by dropped connections)\n _this.lastBlock = !!output && typeof output === 'object' ? output.blockNumber : null;\n if (typeof _this.options.subscription.subscriptionHandler === 'function') {\n return _this.options.subscription.subscriptionHandler.call(_this, output);\n }\n else {\n _this.emit('data', output);\n }\n // call the callback, last so that unsubscribe there won't affect the emit above\n _this.callback(null, output, _this);\n });\n }\n else {\n _this.callback(error, false, _this);\n _this.emit('error', error);\n }\n });\n _this.emit('connected', result);\n }\n else {\n setTimeout(function () {\n _this.callback(err, false, _this);\n _this.emit('error', err);\n }, 0);\n }\n });\n // return an object to cancel the subscription\n return this;\n};\n/**\n * Resubscribe\n *\n * @method resubscribe\n *\n * @returns {void}\n */\nSubscription.prototype.resubscribe = function () {\n this.options.requestManager.removeSubscription(this.id); // unsubscribe\n this.id = null;\n this.subscribe(this.callback);\n};\nmodule.exports = Subscription;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file extend.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar formatters = require('web3-core-helpers').formatters;\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar extend = function (pckg) {\n /* jshint maxcomplexity:5 */\n var ex = function (extension) {\n var extendedObject;\n if (extension.property) {\n if (!pckg[extension.property]) {\n pckg[extension.property] = {};\n }\n extendedObject = pckg[extension.property];\n }\n else {\n extendedObject = pckg;\n }\n if (extension.methods) {\n extension.methods.forEach(function (method) {\n if (!(method instanceof Method)) {\n method = new Method(method);\n }\n method.attachToObject(extendedObject);\n method.setRequestManager(pckg._requestManager);\n });\n }\n return pckg;\n };\n ex.formatters = formatters;\n ex.utils = utils;\n ex.Method = Method;\n return ex;\n};\nmodule.exports = extend;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\nconst requestManager = require(\"web3-core-requestmanager\");\nconst extend = require(\"./extend\");\nconst packageInit = (pkg, args) => {\n args = Array.prototype.slice.call(args);\n if (!pkg) {\n throw new Error('You need to instantiate using the \"new\" keyword.');\n }\n // make property of pkg._provider, which can properly set providers\n Object.defineProperty(pkg, 'currentProvider', {\n get: () => {\n return pkg._provider;\n },\n set: (value) => {\n return pkg.setProvider(value);\n },\n enumerable: true,\n configurable: true\n });\n // inherit from parent package or create a new RequestManager\n if (args[0] && args[0]._requestManager) {\n pkg._requestManager = args[0]._requestManager;\n }\n else {\n pkg._requestManager = new requestManager.Manager(args[0], args[1]);\n }\n // add givenProvider\n pkg.givenProvider = requestManager.Manager.givenProvider;\n pkg.providers = requestManager.Manager.providers;\n pkg._provider = pkg._requestManager.provider;\n // add SETPROVIDER function (don't overwrite if already existing)\n if (!pkg.setProvider) {\n pkg.setProvider = (provider, net) => {\n pkg._requestManager.setProvider(provider, net);\n pkg._provider = pkg._requestManager.provider;\n return true;\n };\n }\n pkg.setRequestManager = (manager) => {\n pkg._requestManager = manager;\n pkg._provider = manager.provider;\n };\n // attach batch request creation\n pkg.BatchRequest = requestManager.BatchManager.bind(null, pkg._requestManager);\n // attach extend function\n pkg.extend = extend(pkg);\n};\nconst addProviders = (pkg) => {\n pkg.givenProvider = requestManager.Manager.givenProvider;\n pkg.providers = requestManager.Manager.providers;\n};\nmodule.exports = {\n packageInit,\n addProviders\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Marek Kotewicz \n * @author Fabian Vogelsteller \n * @date 2018\n */\nvar Buffer = require('buffer').Buffer;\nvar utils = require('web3-utils');\nvar EthersAbiCoder = require('@ethersproject/abi').AbiCoder;\nvar ParamType = require('@ethersproject/abi').ParamType;\nvar ethersAbiCoder = new EthersAbiCoder(function (type, value) {\n if (type.match(/^u?int/) && !Array.isArray(value) && (!(!!value && typeof value === 'object') || value.constructor.name !== 'BN')) {\n return value.toString();\n }\n return value;\n});\n// result method\nfunction Result() {\n}\n/**\n * ABICoder prototype should be used to encode/decode solidity params of any type\n */\nvar ABICoder = function () {\n};\n/**\n * Encodes the function name to its ABI representation, which are the first 4 bytes of the sha3 of the function name including types.\n *\n * @method encodeFunctionSignature\n * @param {String|Object} functionName\n * @return {String} encoded function name\n */\nABICoder.prototype.encodeFunctionSignature = function (functionName) {\n if (typeof functionName === 'function' || typeof functionName === 'object' && functionName) {\n functionName = utils._jsonInterfaceMethodToString(functionName);\n }\n return utils.sha3(functionName).slice(0, 10);\n};\n/**\n * Encodes the function name to its ABI representation, which are the first 4 bytes of the sha3 of the function name including types.\n *\n * @method encodeEventSignature\n * @param {String|Object} functionName\n * @return {String} encoded function name\n */\nABICoder.prototype.encodeEventSignature = function (functionName) {\n if (typeof functionName === 'function' || typeof functionName === 'object' && functionName) {\n functionName = utils._jsonInterfaceMethodToString(functionName);\n }\n return utils.sha3(functionName);\n};\n/**\n * Should be used to encode plain param\n *\n * @method encodeParameter\n *\n * @param {String|Object} type\n * @param {any} param\n *\n * @return {String} encoded plain param\n */\nABICoder.prototype.encodeParameter = function (type, param) {\n return this.encodeParameters([type], [param]);\n};\n/**\n * Should be used to encode list of params\n *\n * @method encodeParameters\n *\n * @param {Array} types\n * @param {Array} params\n *\n * @return {String} encoded list of params\n */\nABICoder.prototype.encodeParameters = function (types, params) {\n var self = this;\n types = self.mapTypes(types);\n params = params.map(function (param, index) {\n let type = types[index];\n if (typeof type === 'object' && type.type) {\n // We may get a named type of shape {name, type}\n type = type.type;\n }\n param = self.formatParam(type, param);\n // Format params for tuples\n if (typeof type === 'string' && type.includes('tuple')) {\n const coder = ethersAbiCoder._getCoder(ParamType.from(type));\n const modifyParams = (coder, param) => {\n if (coder.name === 'array') {\n if (!coder.type.match(/\\[(\\d+)\\]/)) {\n return param.map(p => modifyParams(ethersAbiCoder._getCoder(ParamType.from(coder.type.replace('[]', ''))), p));\n }\n const arrayLength = parseInt(coder.type.match(/\\[(\\d+)\\]/)[1]);\n if (param.length !== arrayLength) {\n throw new Error('Array length does not matches with the given input');\n }\n return param.map(p => modifyParams(ethersAbiCoder._getCoder(ParamType.from(coder.type.replace(/\\[\\d+\\]/, ''))), p));\n }\n coder.coders.forEach((c, i) => {\n if (c.name === 'tuple') {\n modifyParams(c, param[i]);\n }\n else {\n param[i] = self.formatParam(c.name, param[i]);\n }\n });\n };\n modifyParams(coder, param);\n }\n return param;\n });\n return ethersAbiCoder.encode(types, params);\n};\n/**\n * Map types if simplified format is used\n *\n * @method mapTypes\n * @param {Array} types\n * @return {Array}\n */\nABICoder.prototype.mapTypes = function (types) {\n var self = this;\n var mappedTypes = [];\n types.forEach(function (type) {\n // Remap `function` type params to bytes24 since Ethers does not\n // recognize former type. Solidity docs say `Function` is a bytes24\n // encoding the contract address followed by the function selector hash.\n if (typeof type === 'object' && type.type === 'function') {\n type = Object.assign({}, type, { type: \"bytes24\" });\n }\n if (self.isSimplifiedStructFormat(type)) {\n var structName = Object.keys(type)[0];\n mappedTypes.push(Object.assign(self.mapStructNameAndType(structName), {\n components: self.mapStructToCoderFormat(type[structName])\n }));\n return;\n }\n mappedTypes.push(type);\n });\n return mappedTypes;\n};\n/**\n * Check if type is simplified struct format\n *\n * @method isSimplifiedStructFormat\n * @param {string | Object} type\n * @returns {boolean}\n */\nABICoder.prototype.isSimplifiedStructFormat = function (type) {\n return typeof type === 'object' && typeof type.components === 'undefined' && typeof type.name === 'undefined';\n};\n/**\n * Maps the correct tuple type and name when the simplified format in encode/decodeParameter is used\n *\n * @method mapStructNameAndType\n * @param {string} structName\n * @return {{type: string, name: *}}\n */\nABICoder.prototype.mapStructNameAndType = function (structName) {\n var type = 'tuple';\n if (structName.indexOf('[]') > -1) {\n type = 'tuple[]';\n structName = structName.slice(0, -2);\n }\n return { type: type, name: structName };\n};\n/**\n * Maps the simplified format in to the expected format of the ABICoder\n *\n * @method mapStructToCoderFormat\n * @param {Object} struct\n * @return {Array}\n */\nABICoder.prototype.mapStructToCoderFormat = function (struct) {\n var self = this;\n var components = [];\n Object.keys(struct).forEach(function (key) {\n if (typeof struct[key] === 'object') {\n components.push(Object.assign(self.mapStructNameAndType(key), {\n components: self.mapStructToCoderFormat(struct[key])\n }));\n return;\n }\n components.push({\n name: key,\n type: struct[key]\n });\n });\n return components;\n};\n/**\n * Handle some formatting of params for backwards compatability with Ethers V4\n *\n * @method formatParam\n * @param {String} - type\n * @param {any} - param\n * @return {any} - The formatted param\n */\nABICoder.prototype.formatParam = function (type, param) {\n const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\n const paramTypeBytesArray = new RegExp(/^bytes([0-9]*)\\[\\]$/);\n const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n const paramTypeNumberArray = new RegExp(/^(u?int)([0-9]*)\\[\\]$/);\n // Format BN to string\n if (utils.isBN(param) || utils.isBigNumber(param)) {\n return param.toString(10);\n }\n if (type.match(paramTypeBytesArray) || type.match(paramTypeNumberArray)) {\n return param.map(p => this.formatParam(type.replace('[]', ''), p));\n }\n // Format correct width for u?int[0-9]*\n let match = type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size / 8 < param.length) {\n param = param.startsWith(\"-\")\n // pad to correct bit width, with - at the beginning\n ? `-${utils.leftPad(param.substring(1), size)}`\n // pad to correct bit width\n : utils.leftPad(param, size);\n }\n }\n // Format correct length for bytes[0-9]+\n match = type.match(paramTypeBytes);\n if (match) {\n if (Buffer.isBuffer(param)) {\n param = utils.toHex(param);\n }\n // format to correct length\n let size = parseInt(match[1]);\n if (size) {\n let maxSize = size * 2;\n if (param.substring(0, 2) === '0x') {\n maxSize += 2;\n }\n if (param.length < maxSize) {\n // pad to correct length\n param = utils.rightPad(param, size * 2);\n }\n }\n // format odd-length bytes to even-length\n if (param.length % 2 === 1) {\n param = '0x0' + param.substring(2);\n }\n }\n return param;\n};\n/**\n * Encodes a function call from its json interface and parameters.\n *\n * @method encodeFunctionCall\n * @param {Array} jsonInterface\n * @param {Array} params\n * @return {String} The encoded ABI for this function call\n */\nABICoder.prototype.encodeFunctionCall = function (jsonInterface, params) {\n return this.encodeFunctionSignature(jsonInterface) + this.encodeParameters(jsonInterface.inputs, params).replace('0x', '');\n};\n/**\n * Should be used to decode bytes to plain param\n *\n * @method decodeParameter\n * @param {String} type\n * @param {String} bytes\n * @return {Object} plain param\n */\nABICoder.prototype.decodeParameter = function (type, bytes) {\n return this.decodeParameters([type], bytes)[0];\n};\n/**\n * Should be used to decode list of params\n *\n * @method decodeParameter\n * @param {Array} outputs\n * @param {String} bytes\n * @return {Array} array of plain params\n */\nABICoder.prototype.decodeParameters = function (outputs, bytes) {\n return this.decodeParametersWith(outputs, bytes, false);\n};\n/**\n * Should be used to decode list of params\n *\n * @method decodeParameter\n * @param {Array} outputs\n * @param {String} bytes\n * @param {Boolean} loose\n * @return {Array} array of plain params\n */\nABICoder.prototype.decodeParametersWith = function (outputs, bytes, loose) {\n if (outputs.length > 0 && (!bytes || bytes === '0x' || bytes === '0X')) {\n throw new Error('Returned values aren\\'t valid, did it run Out of Gas? ' +\n 'You might also see this error if you are not using the ' +\n 'correct ABI for the contract you are retrieving data from, ' +\n 'requesting data from a block number that does not exist, ' +\n 'or querying a node which is not fully synced.');\n }\n var res = ethersAbiCoder.decode(this.mapTypes(outputs), '0x' + bytes.replace(/0x/i, ''), loose);\n var returnValue = new Result();\n returnValue.__length__ = 0;\n outputs.forEach(function (output, i) {\n var decodedValue = res[returnValue.__length__];\n const isStringObject = typeof output === 'object' && output.type && output.type === 'string';\n const isStringType = typeof output === 'string' && output === 'string';\n // only convert `0x` to null if it's not string value\n decodedValue = (decodedValue === '0x' && !isStringObject && !isStringType) ? null : decodedValue;\n returnValue[i] = decodedValue;\n if ((typeof output === 'function' || !!output && typeof output === 'object') && output.name) {\n returnValue[output.name] = decodedValue;\n }\n returnValue.__length__++;\n });\n return returnValue;\n};\n/**\n * Decodes events non- and indexed parameters.\n *\n * @method decodeLog\n * @param {Object} inputs\n * @param {String} data\n * @param {Array} topics\n * @return {Array} array of plain params\n */\nABICoder.prototype.decodeLog = function (inputs, data, topics) {\n var _this = this;\n topics = Array.isArray(topics) ? topics : [topics];\n data = data || '';\n var notIndexedInputs = [];\n var indexedParams = [];\n var topicCount = 0;\n // TODO check for anonymous logs?\n inputs.forEach(function (input, i) {\n if (input.indexed) {\n indexedParams[i] = (['bool', 'int', 'uint', 'address', 'fixed', 'ufixed'].find(function (staticType) {\n return input.type.indexOf(staticType) !== -1;\n })) ? _this.decodeParameter(input.type, topics[topicCount]) : topics[topicCount];\n topicCount++;\n }\n else {\n notIndexedInputs[i] = input;\n }\n });\n var nonIndexedData = data;\n var notIndexedParams = (nonIndexedData) ? this.decodeParametersWith(notIndexedInputs, nonIndexedData, true) : [];\n var returnValue = new Result();\n returnValue.__length__ = 0;\n inputs.forEach(function (res, i) {\n returnValue[i] = (res.type === 'string') ? '' : null;\n if (typeof notIndexedParams[i] !== 'undefined') {\n returnValue[i] = notIndexedParams[i];\n }\n if (typeof indexedParams[i] !== 'undefined') {\n returnValue[i] = indexedParams[i];\n }\n if (res.name) {\n returnValue[res.name] = returnValue[i];\n }\n returnValue.__length__++;\n });\n return returnValue;\n};\nvar coder = new ABICoder();\nmodule.exports = coder;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file accounts.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n'use strict';\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar Account = require('eth-lib/lib/account');\nvar cryp = require('crypto');\nvar scrypt = require('scrypt-js');\nvar uuid = require('uuid');\nvar utils = require('web3-utils');\nvar helpers = require('web3-core-helpers');\nvar { TransactionFactory } = require('@ethereumjs/tx');\nvar Common = require('@ethereumjs/common').default;\nvar HardForks = require('@ethereumjs/common').Hardfork;\nvar ethereumjsUtil = require('@ethereumjs/util');\nvar isNot = function (value) {\n return (typeof value === 'undefined') || value === null;\n};\nvar isExist = function (value) {\n return (typeof value !== 'undefined') && value !== null;\n};\nvar Accounts = function Accounts() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n // remove unecessary core functions\n delete this.BatchRequest;\n delete this.extend;\n var _ethereumCall = [\n new Method({\n name: 'getNetworkId',\n call: 'net_version',\n params: 0,\n outputFormatter: parseInt\n }),\n new Method({\n name: 'getChainId',\n call: 'eth_chainId',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0\n }),\n new Method({\n name: 'getTransactionCount',\n call: 'eth_getTransactionCount',\n params: 2,\n inputFormatter: [function (address) {\n if (utils.isAddress(address)) {\n return address;\n }\n else {\n throw new Error('Address ' + address + ' is not a valid address to get the \"transactionCount\".');\n }\n }, function () {\n return 'latest';\n }]\n }),\n new Method({\n name: 'getBlockByNumber',\n call: 'eth_getBlockByNumber',\n params: 2,\n inputFormatter: [function (blockNumber) {\n return blockNumber ? utils.toHex(blockNumber) : 'latest';\n }, function () {\n return false;\n }]\n }),\n ];\n // attach methods to this._ethereumCall\n this._ethereumCall = {};\n _ethereumCall.forEach((method) => {\n method.attachToObject(_this._ethereumCall);\n method.setRequestManager(_this._requestManager);\n });\n this.wallet = new Wallet(this);\n};\nAccounts.prototype._addAccountFunctions = function (account) {\n var _this = this;\n // add sign functions\n account.signTransaction = function signTransaction(tx, callback) {\n return _this.signTransaction(tx, account.privateKey, callback);\n };\n account.sign = function sign(data) {\n return _this.sign(data, account.privateKey);\n };\n account.encrypt = function encrypt(password, options) {\n return _this.encrypt(account.privateKey, password, options);\n };\n return account;\n};\nAccounts.prototype.create = function create(entropy) {\n return this._addAccountFunctions(Account.create(entropy || utils.randomHex(32)));\n};\nAccounts.prototype.privateKeyToAccount = function privateKeyToAccount(privateKey, ignoreLength) {\n if (!privateKey.startsWith('0x')) {\n privateKey = '0x' + privateKey;\n }\n // 64 hex characters + hex-prefix\n if (!ignoreLength && privateKey.length !== 66) {\n throw new Error(\"Private key must be 32 bytes long\");\n }\n return this._addAccountFunctions(Account.fromPrivate(privateKey));\n};\nAccounts.prototype.signTransaction = function signTransaction(tx, privateKey, callback) {\n var _this = this, error = false, transactionOptions = {}, hasTxSigningOptions = !!(tx && ((tx.chain && tx.hardfork) || tx.common));\n callback = callback || function () { };\n if (!tx) {\n error = new Error('No transaction object given!');\n callback(error);\n return Promise.reject(error);\n }\n if (isExist(tx.common) && isNot(tx.common.customChain)) {\n error = new Error('If tx.common is provided it must have tx.common.customChain');\n callback(error);\n return Promise.reject(error);\n }\n if (isExist(tx.common) && isNot(tx.common.customChain.chainId)) {\n error = new Error('If tx.common is provided it must have tx.common.customChain and tx.common.customChain.chainId');\n callback(error);\n return Promise.reject(error);\n }\n if (isExist(tx.common) && isExist(tx.common.customChain.chainId) && isExist(tx.chainId) && tx.chainId !== tx.common.customChain.chainId) {\n error = new Error('Chain Id doesnt match in tx.chainId tx.common.customChain.chainId');\n callback(error);\n return Promise.reject(error);\n }\n function signed(tx) {\n const error = _validateTransactionForSigning(tx);\n if (error) {\n callback(error);\n return Promise.reject(error);\n }\n try {\n var transaction = helpers.formatters.inputCallFormatter(Object.assign({}, tx));\n transaction.data = transaction.data || '0x';\n transaction.value = transaction.value || '0x';\n transaction.gasLimit = transaction.gasLimit || transaction.gas;\n if (transaction.type === '0x1' && transaction.accessList === undefined)\n transaction.accessList = [];\n // Because tx has no @ethereumjs/tx signing options we use fetched vals.\n if (!hasTxSigningOptions) {\n transactionOptions.common = Common.forCustomChain('mainnet', {\n name: 'custom-network',\n networkId: transaction.networkId,\n chainId: transaction.chainId\n }, transaction.hardfork || HardForks.London);\n delete transaction.networkId;\n }\n else {\n if (transaction.common) {\n transactionOptions.common = Common.forCustomChain(transaction.common.baseChain || 'mainnet', {\n name: transaction.common.customChain.name || 'custom-network',\n networkId: transaction.common.customChain.networkId,\n chainId: transaction.common.customChain.chainId\n }, transaction.common.hardfork || HardForks.London);\n delete transaction.common;\n }\n if (transaction.chain) {\n transactionOptions.chain = transaction.chain;\n delete transaction.chain;\n }\n if (transaction.hardfork) {\n transactionOptions.hardfork = transaction.hardfork;\n delete transaction.hardfork;\n }\n }\n if (privateKey.startsWith('0x')) {\n privateKey = privateKey.substring(2);\n }\n var ethTx = TransactionFactory.fromTxData(transaction, transactionOptions);\n var signedTx = ethTx.sign(Buffer.from(privateKey, 'hex'));\n var validationErrors = signedTx.validate(true);\n if (validationErrors.length > 0) {\n let errorString = 'Signer Error: ';\n for (const validationError of validationErrors) {\n errorString += `${errorString} ${validationError}.`;\n }\n throw new Error(errorString);\n }\n var rlpEncoded = signedTx.serialize().toString('hex');\n var rawTransaction = '0x' + rlpEncoded;\n var transactionHash = utils.keccak256(rawTransaction);\n var result = {\n messageHash: '0x' + Buffer.from(signedTx.getMessageToSign(true)).toString('hex'),\n v: '0x' + signedTx.v.toString('hex'),\n r: '0x' + signedTx.r.toString('hex'),\n s: '0x' + signedTx.s.toString('hex'),\n rawTransaction: rawTransaction,\n transactionHash: transactionHash\n };\n callback(null, result);\n return result;\n }\n catch (e) {\n callback(e);\n return Promise.reject(e);\n }\n }\n tx.type = _handleTxType(tx);\n // Resolve immediately if nonce, chainId, price and signing options are provided\n if (tx.nonce !== undefined &&\n tx.chainId !== undefined &&\n (tx.gasPrice !== undefined ||\n (tx.maxFeePerGas !== undefined &&\n tx.maxPriorityFeePerGas !== undefined)) &&\n hasTxSigningOptions) {\n return Promise.resolve(signed(tx));\n }\n // Otherwise, get the missing info from the Ethereum Node\n return Promise.all([\n ((isNot(tx.common) || isNot(tx.common.customChain.chainId)) ? //tx.common.customChain.chainId is not optional inside tx.common if tx.common is provided\n (isNot(tx.chainId) ? _this._ethereumCall.getChainId() : tx.chainId)\n : undefined),\n isNot(tx.nonce) ? _this._ethereumCall.getTransactionCount(_this.privateKeyToAccount(privateKey).address) : tx.nonce,\n isNot(hasTxSigningOptions) ? _this._ethereumCall.getNetworkId() : 1,\n _handleTxPricing(_this, tx)\n ]).then(function (args) {\n const [txchainId, txnonce, txnetworkId, txgasInfo] = args;\n if ((isNot(txchainId) && isNot(tx.common) && isNot(tx.common.customChain.chainId)) || isNot(txnonce) || isNot(txnetworkId) || isNot(txgasInfo)) {\n throw new Error('One of the values \"chainId\", \"networkId\", \"gasPrice\", or \"nonce\" couldn\\'t be fetched: ' + JSON.stringify(args));\n }\n return signed({\n ...tx,\n ...((isNot(tx.common) || isNot(tx.common.customChain.chainId)) ? { chainId: txchainId } : {}),\n nonce: txnonce,\n networkId: txnetworkId,\n ...txgasInfo // Will either be gasPrice or maxFeePerGas and maxPriorityFeePerGas\n });\n });\n};\nfunction _validateTransactionForSigning(tx) {\n if (tx.common && (tx.chain && tx.hardfork)) {\n return new Error('Please provide the @ethereumjs/common object or the chain and hardfork property but not all together.');\n }\n if ((tx.chain && !tx.hardfork) || (tx.hardfork && !tx.chain)) {\n return new Error('When specifying chain and hardfork, both values must be defined. ' +\n 'Received \"chain\": ' + tx.chain + ', \"hardfork\": ' + tx.hardfork);\n }\n if ((!tx.gas && !tx.gasLimit) &&\n (!tx.maxPriorityFeePerGas && !tx.maxFeePerGas)) {\n return new Error('\"gas\" is missing');\n }\n if (tx.gas && tx.gasPrice) {\n if (tx.gas < 0 || tx.gasPrice < 0) {\n return new Error('Gas or gasPrice is lower than 0');\n }\n }\n else {\n if (tx.maxPriorityFeePerGas < 0 || tx.maxFeePerGas < 0) {\n return new Error('maxPriorityFeePerGas or maxFeePerGas is lower than 0');\n }\n }\n if (tx.nonce < 0 || tx.chainId < 0) {\n return new Error('Nonce or chainId is lower than 0');\n }\n return;\n}\nfunction _handleTxType(tx) {\n // Taken from https://github.com/ethers-io/ethers.js/blob/2a7ce0e72a1e0c9469e10392b0329e75e341cf18/packages/abstract-signer/src.ts/index.ts#L215\n const hasEip1559 = (tx.maxFeePerGas !== undefined || tx.maxPriorityFeePerGas !== undefined);\n let txType;\n if (tx.type !== undefined) {\n txType = utils.toHex(tx.type);\n }\n else if (tx.type === undefined && hasEip1559) {\n txType = '0x2';\n }\n if (tx.gasPrice !== undefined && (txType === '0x2' || hasEip1559))\n throw Error(\"eip-1559 transactions don't support gasPrice\");\n if ((txType === '0x1' || txType === '0x0') && hasEip1559)\n throw Error(\"pre-eip-1559 transaction don't support maxFeePerGas/maxPriorityFeePerGas\");\n if (hasEip1559 ||\n ((tx.common && tx.common.hardfork && tx.common.hardfork.toLowerCase() === HardForks.London) ||\n (tx.hardfork && tx.hardfork.toLowerCase() === HardForks.London))) {\n txType = '0x2';\n }\n else if (tx.accessList ||\n ((tx.common && tx.common.hardfork && tx.common.hardfork.toLowerCase() === HardForks.Berlin) ||\n (tx.hardfork && tx.hardfork.toLowerCase() === HardForks.Berlin))) {\n txType = '0x1';\n }\n return txType;\n}\nfunction _handleTxPricing(_this, tx) {\n return new Promise((resolve, reject) => {\n try {\n if ((tx.type === undefined || tx.type < '0x2')\n && tx.gasPrice !== undefined) {\n // Legacy transaction, return provided gasPrice\n resolve({ gasPrice: tx.gasPrice });\n }\n else if (tx.type === '0x2' && tx.maxFeePerGas && tx.maxPriorityFeePerGas) {\n // EIP-1559 transaction, return provided maxFeePerGas and maxPriorityFeePerGas\n resolve({ maxFeePerGas: tx.maxFeePerGas, maxPriorityFeePerGas: tx.maxPriorityFeePerGas });\n }\n else {\n Promise.all([\n _this._ethereumCall.getBlockByNumber(),\n _this._ethereumCall.getGasPrice()\n ]).then(responses => {\n const [block, gasPrice] = responses;\n if ((tx.type === '0x2') &&\n block && block.baseFeePerGas) {\n // The network supports EIP-1559\n // Taken from https://github.com/ethers-io/ethers.js/blob/ba6854bdd5a912fe873d5da494cb5c62c190adde/packages/abstract-provider/src.ts/index.ts#L230\n let maxPriorityFeePerGas, maxFeePerGas;\n if (tx.gasPrice) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n maxPriorityFeePerGas = tx.gasPrice;\n maxFeePerGas = tx.gasPrice;\n delete tx.gasPrice;\n }\n else {\n maxPriorityFeePerGas = tx.maxPriorityFeePerGas || '0x9502F900'; // 2.5 Gwei\n maxFeePerGas = tx.maxFeePerGas ||\n utils.toHex(utils.toBN(block.baseFeePerGas)\n .mul(utils.toBN(2))\n .add(utils.toBN(maxPriorityFeePerGas)));\n }\n resolve({ maxFeePerGas, maxPriorityFeePerGas });\n }\n else {\n if (tx.maxPriorityFeePerGas || tx.maxFeePerGas)\n throw Error(\"Network doesn't support eip-1559\");\n resolve({ gasPrice });\n }\n }).catch((error) => {\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n }\n });\n}\n/* jshint ignore:start */\nAccounts.prototype.recoverTransaction = function recoverTransaction(rawTx, txOptions = {}) {\n // Rely on EthereumJs/tx to determine the type of transaction\n const data = Buffer.from(rawTx.slice(2), \"hex\");\n const tx = TransactionFactory.fromSerializedData(data);\n //update checksum\n return utils.toChecksumAddress(tx.getSenderAddress().toString(\"hex\"));\n};\n/* jshint ignore:end */\nAccounts.prototype.hashMessage = function hashMessage(data) {\n var messageHex = utils.isHexStrict(data) ? data : utils.utf8ToHex(data);\n var messageBytes = utils.hexToBytes(messageHex);\n var messageBuffer = Buffer.from(messageBytes);\n var preamble = '\\x19Ethereum Signed Message:\\n' + messageBytes.length;\n var preambleBuffer = Buffer.from(preamble);\n var ethMessage = Buffer.concat([preambleBuffer, messageBuffer]);\n return ethereumjsUtil.bufferToHex(utils.keccak256(ethMessage));\n};\nAccounts.prototype.sign = function sign(data, privateKey) {\n if (!privateKey.startsWith('0x')) {\n privateKey = '0x' + privateKey;\n }\n // 64 hex characters + hex-prefix\n if (privateKey.length !== 66) {\n throw new Error(\"Private key must be 32 bytes long\");\n }\n var hash = this.hashMessage(data);\n var signature = Account.sign(hash, privateKey);\n var vrs = Account.decodeSignature(signature);\n return {\n message: data,\n messageHash: hash,\n v: vrs[0],\n r: vrs[1],\n s: vrs[2],\n signature: signature\n };\n};\nAccounts.prototype.recover = function recover(message, signature, preFixed) {\n var args = [].slice.apply(arguments);\n if (!!message && typeof message === 'object') {\n return this.recover(message.messageHash, Account.encodeSignature([message.v, message.r, message.s]), true);\n }\n if (!preFixed) {\n message = this.hashMessage(message);\n }\n if (args.length >= 4) {\n preFixed = args.slice(-1)[0];\n preFixed = typeof preFixed === 'boolean' ? !!preFixed : false;\n return this.recover(message, Account.encodeSignature(args.slice(1, 4)), preFixed); // v, r, s\n }\n return Account.recover(message, signature);\n};\n// Taken from https://github.com/ethereumjs/ethereumjs-wallet\nAccounts.prototype.decrypt = function (v3Keystore, password, nonStrict) {\n /* jshint maxcomplexity: 10 */\n if (!(typeof password === 'string')) {\n throw new Error('No password given.');\n }\n var json = (!!v3Keystore && typeof v3Keystore === 'object') ? v3Keystore : JSON.parse(nonStrict ? v3Keystore.toLowerCase() : v3Keystore);\n if (json.version !== 3) {\n throw new Error('Not a valid V3 wallet');\n }\n var derivedKey;\n var kdfparams;\n if (json.crypto.kdf === 'scrypt') {\n kdfparams = json.crypto.kdfparams;\n // FIXME: support progress reporting callback\n derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);\n }\n else if (json.crypto.kdf === 'pbkdf2') {\n kdfparams = json.crypto.kdfparams;\n if (kdfparams.prf !== 'hmac-sha256') {\n throw new Error('Unsupported parameters to PBKDF2');\n }\n derivedKey = cryp.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');\n }\n else {\n throw new Error('Unsupported key derivation scheme');\n }\n var ciphertext = Buffer.from(json.crypto.ciphertext, 'hex');\n var mac = utils.sha3(Buffer.from([...derivedKey.slice(16, 32), ...ciphertext])).replace('0x', '');\n if (mac !== json.crypto.mac) {\n throw new Error('Key derivation failed - possibly wrong password');\n }\n var decipher = cryp.createDecipheriv(json.crypto.cipher, derivedKey.slice(0, 16), Buffer.from(json.crypto.cipherparams.iv, 'hex'));\n var seed = '0x' + Buffer.from([...decipher.update(ciphertext), ...decipher.final()]).toString('hex');\n return this.privateKeyToAccount(seed, true);\n};\nAccounts.prototype.encrypt = function (privateKey, password, options) {\n /* jshint maxcomplexity: 20 */\n var account = this.privateKeyToAccount(privateKey, true);\n options = options || {};\n var salt = options.salt || cryp.randomBytes(32);\n var iv = options.iv || cryp.randomBytes(16);\n var derivedKey;\n var kdf = options.kdf || 'scrypt';\n var kdfparams = {\n dklen: options.dklen || 32,\n salt: salt.toString('hex')\n };\n if (kdf === 'pbkdf2') {\n kdfparams.c = options.c || 262144;\n kdfparams.prf = 'hmac-sha256';\n derivedKey = cryp.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');\n }\n else if (kdf === 'scrypt') {\n // FIXME: support progress reporting callback\n kdfparams.n = options.n || 8192; // 2048 4096 8192 16384\n kdfparams.r = options.r || 8;\n kdfparams.p = options.p || 1;\n derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);\n }\n else {\n throw new Error('Unsupported kdf');\n }\n var cipher = cryp.createCipheriv(options.cipher || 'aes-128-ctr', derivedKey.slice(0, 16), iv);\n if (!cipher) {\n throw new Error('Unsupported cipher');\n }\n var ciphertext = Buffer.from([\n ...cipher.update(Buffer.from(account.privateKey.replace('0x', ''), 'hex')),\n ...cipher.final()\n ]);\n var mac = utils.sha3(Buffer.from([...derivedKey.slice(16, 32), ...ciphertext])).replace('0x', '');\n return {\n version: 3,\n id: uuid.v4({ random: options.uuid || cryp.randomBytes(16) }),\n address: account.address.toLowerCase().replace('0x', ''),\n crypto: {\n ciphertext: ciphertext.toString('hex'),\n cipherparams: {\n iv: iv.toString('hex')\n },\n cipher: options.cipher || 'aes-128-ctr',\n kdf: kdf,\n kdfparams: kdfparams,\n mac: mac.toString('hex')\n }\n };\n};\n// Note: this is trying to follow closely the specs on\n// http://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html\nfunction Wallet(accounts) {\n this._accounts = accounts;\n this.length = 0;\n this.defaultKeyName = 'web3js_wallet';\n}\nWallet.prototype._findSafeIndex = function (pointer) {\n pointer = pointer || 0;\n if (this.hasOwnProperty(pointer)) {\n return this._findSafeIndex(pointer + 1);\n }\n else {\n return pointer;\n }\n};\nWallet.prototype._currentIndexes = function () {\n var keys = Object.keys(this);\n var indexes = keys\n .map(function (key) {\n return parseInt(key);\n })\n .filter(function (n) {\n return (n < 9e20);\n });\n return indexes;\n};\nWallet.prototype.create = function (numberOfAccounts, entropy) {\n for (var i = 0; i < numberOfAccounts; ++i) {\n this.add(this._accounts.create(entropy).privateKey);\n }\n return this;\n};\nWallet.prototype.add = function (account) {\n if (typeof account === 'string') {\n account = this._accounts.privateKeyToAccount(account);\n }\n if (!this[account.address]) {\n account = this._accounts.privateKeyToAccount(account.privateKey);\n account.index = this._findSafeIndex();\n this[account.index] = account;\n this[account.address] = account;\n this[account.address.toLowerCase()] = account;\n this.length++;\n return account;\n }\n else {\n return this[account.address];\n }\n};\nWallet.prototype.remove = function (addressOrIndex) {\n var account = this[addressOrIndex];\n if (account && account.address) {\n // address\n this[account.address].privateKey = null;\n delete this[account.address];\n // address lowercase\n if (this[account.address.toLowerCase()]) {\n this[account.address.toLowerCase()].privateKey = null;\n delete this[account.address.toLowerCase()];\n }\n // index\n this[account.index].privateKey = null;\n delete this[account.index];\n this.length--;\n return true;\n }\n else {\n return false;\n }\n};\nWallet.prototype.clear = function () {\n var _this = this;\n var indexes = this._currentIndexes();\n indexes.forEach(function (index) {\n _this.remove(index);\n });\n return this;\n};\nWallet.prototype.encrypt = function (password, options) {\n var _this = this;\n var indexes = this._currentIndexes();\n var accounts = indexes.map(function (index) {\n return _this[index].encrypt(password, options);\n });\n return accounts;\n};\nWallet.prototype.decrypt = function (encryptedWallet, password) {\n var _this = this;\n encryptedWallet.forEach(function (keystore) {\n var account = _this._accounts.decrypt(keystore, password);\n if (account) {\n _this.add(account);\n }\n else {\n throw new Error('Couldn\\'t decrypt accounts. Password wrong?');\n }\n });\n return this;\n};\nWallet.prototype.save = function (password, keyName) {\n localStorage.setItem(keyName || this.defaultKeyName, JSON.stringify(this.encrypt(password)));\n return true;\n};\nWallet.prototype.load = function (password, keyName) {\n var keystore = localStorage.getItem(keyName || this.defaultKeyName);\n if (keystore) {\n try {\n keystore = JSON.parse(keystore);\n }\n catch (e) {\n }\n }\n return this.decrypt(keystore || [], password);\n};\nif (!storageAvailable('localStorage')) {\n delete Wallet.prototype.save;\n delete Wallet.prototype.load;\n}\n/**\n * Checks whether a storage type is available or not\n * For more info on how this works, please refer to MDN documentation\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#Feature-detecting_localStorage\n *\n * @method storageAvailable\n * @param {String} type the type of storage ('localStorage', 'sessionStorage')\n * @returns {Boolean} a boolean indicating whether the specified storage is available or not\n */\nfunction storageAvailable(type) {\n var storage;\n try {\n storage = self[type];\n var x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n }\n catch (e) {\n return e && (\n // everything except Firefox\n e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n (storage && storage.length !== 0);\n }\n}\nmodule.exports = Accounts;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file contract.js\n *\n * To initialize a contract use:\n *\n * var Contract = require('web3-eth-contract');\n * Contract.setProvider('ws://localhost:8546');\n * var contract = new Contract(abi, address, ...);\n *\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Subscription = require('web3-core-subscriptions').subscription;\nvar formatters = require('web3-core-helpers').formatters;\nvar errors = require('web3-core-helpers').errors;\nvar promiEvent = require('web3-core-promievent');\nvar abi = require('web3-eth-abi');\n/**\n * Should be called to create new contract instance\n *\n * @method Contract\n * @constructor\n * @param {Array} jsonInterface\n * @param {String} address\n * @param {Object} options\n */\nvar Contract = function Contract(jsonInterface, address, options) {\n var _this = this, args = Array.prototype.slice.call(arguments);\n if (!(this instanceof Contract)) {\n throw new Error('Please use the \"new\" keyword to instantiate a web3.eth.Contract() object!');\n }\n this.setProvider = function () {\n core.packageInit(_this, arguments);\n _this.clearSubscriptions = _this._requestManager.clearSubscriptions;\n };\n // sets _requestmanager\n core.packageInit(this, [this.constructor]);\n this.clearSubscriptions = this._requestManager.clearSubscriptions;\n if (!jsonInterface || !(Array.isArray(jsonInterface))) {\n throw errors.ContractMissingABIError();\n }\n // create the options object\n this.options = {};\n var lastArg = args[args.length - 1];\n if (!!lastArg && typeof lastArg === 'object' && !Array.isArray(lastArg)) {\n options = lastArg;\n this.options = { ...this.options, ...this._getOrSetDefaultOptions(options) };\n if (!!address && typeof address === 'object') {\n address = null;\n }\n }\n // set address\n Object.defineProperty(this.options, 'address', {\n set: function (value) {\n if (value) {\n _this._address = utils.toChecksumAddress(formatters.inputAddressFormatter(value));\n }\n },\n get: function () {\n return _this._address;\n },\n enumerable: true\n });\n // add method and event signatures, when the jsonInterface gets set\n Object.defineProperty(this.options, 'jsonInterface', {\n set: function (value) {\n _this.methods = {};\n _this.events = {};\n _this._jsonInterface = value.map(function (method) {\n var func, funcName;\n // make constant and payable backwards compatible\n method.constant = (method.stateMutability === \"view\" || method.stateMutability === \"pure\" || method.constant);\n method.payable = (method.stateMutability === \"payable\" || method.payable);\n if (method.name) {\n funcName = utils._jsonInterfaceMethodToString(method);\n }\n // function\n if (method.type === 'function') {\n method.signature = abi.encodeFunctionSignature(funcName);\n func = _this._createTxObject.bind({\n method: method,\n parent: _this\n });\n // add method only if not one already exists\n if (!_this.methods[method.name]) {\n _this.methods[method.name] = func;\n }\n else {\n var cascadeFunc = _this._createTxObject.bind({\n method: method,\n parent: _this,\n nextMethod: _this.methods[method.name]\n });\n _this.methods[method.name] = cascadeFunc;\n }\n // definitely add the method based on its signature\n _this.methods[method.signature] = func;\n // add method by name\n _this.methods[funcName] = func;\n // event\n }\n else if (method.type === 'event') {\n method.signature = abi.encodeEventSignature(funcName);\n var event = _this._on.bind(_this, method.signature);\n // add method only if not already exists\n if (!_this.events[method.name] || _this.events[method.name].name === 'bound ')\n _this.events[method.name] = event;\n // definitely add the method based on its signature\n _this.events[method.signature] = event;\n // add event by name\n _this.events[funcName] = event;\n }\n return method;\n });\n // add allEvents\n _this.events.allEvents = _this._on.bind(_this, 'allevents');\n return _this._jsonInterface;\n },\n get: function () {\n return _this._jsonInterface;\n },\n enumerable: true\n });\n // get default account from the Class\n var defaultAccount = this.constructor.defaultAccount;\n var defaultBlock = this.constructor.defaultBlock || 'latest';\n Object.defineProperty(this, 'handleRevert', {\n get: function () {\n if (_this.options.handleRevert === false || _this.options.handleRevert === true) {\n return _this.options.handleRevert;\n }\n return this.constructor.handleRevert;\n },\n set: function (val) {\n _this.options.handleRevert = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultCommon', {\n get: function () {\n return _this.options.common || this.constructor.defaultCommon;\n },\n set: function (val) {\n _this.options.common = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultHardfork', {\n get: function () {\n return _this.options.hardfork || this.constructor.defaultHardfork;\n },\n set: function (val) {\n _this.options.hardfork = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultChain', {\n get: function () {\n return _this.options.chain || this.constructor.defaultChain;\n },\n set: function (val) {\n _this.options.chain = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingTimeout', {\n get: function () {\n if (_this.options.transactionPollingTimeout === 0) {\n return _this.options.transactionPollingTimeout;\n }\n return _this.options.transactionPollingTimeout || this.constructor.transactionPollingTimeout;\n },\n set: function (val) {\n _this.options.transactionPollingTimeout = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingInterval', {\n get: function () {\n if (_this.options.transactionPollingInterval === 0) {\n return _this.options.transactionPollingInterval;\n }\n return _this.options.transactionPollingInterval || this.constructor.transactionPollingInterval;\n },\n set: function (val) {\n _this.options.transactionPollingInterval = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionConfirmationBlocks', {\n get: function () {\n if (_this.options.transactionConfirmationBlocks === 0) {\n return _this.options.transactionConfirmationBlocks;\n }\n return _this.options.transactionConfirmationBlocks || this.constructor.transactionConfirmationBlocks;\n },\n set: function (val) {\n _this.options.transactionConfirmationBlocks = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionBlockTimeout', {\n get: function () {\n if (_this.options.transactionBlockTimeout === 0) {\n return _this.options.transactionBlockTimeout;\n }\n return _this.options.transactionBlockTimeout || this.constructor.transactionBlockTimeout;\n },\n set: function (val) {\n _this.options.transactionBlockTimeout = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'blockHeaderTimeout', {\n get: function () {\n if (_this.options.blockHeaderTimeout === 0) {\n return _this.options.blockHeaderTimeout;\n }\n return _this.options.blockHeaderTimeout || this.constructor.blockHeaderTimeout;\n },\n set: function (val) {\n _this.options.blockHeaderTimeout = val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if (val) {\n defaultAccount = utils.toChecksumAddress(formatters.inputAddressFormatter(val));\n }\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n return val;\n },\n enumerable: true\n });\n // properties\n this.methods = {};\n this.events = {};\n this._address = null;\n this._jsonInterface = [];\n // set getter/setter properties\n this.options.address = address;\n this.options.jsonInterface = jsonInterface;\n};\n/**\n * Sets the new provider, creates a new requestManager, registers the \"data\" listener on the provider and sets the\n * accounts module for the Contract class.\n *\n * @method setProvider\n *\n * @param {string|provider} provider\n * @param {Accounts} accounts\n *\n * @returns void\n */\nContract.setProvider = function (provider, accounts) {\n // Contract.currentProvider = provider;\n core.packageInit(this, [provider]);\n this._ethAccounts = accounts;\n};\n/**\n * Get the callback and modify the array if necessary\n *\n * @method _getCallback\n * @param {Array} args\n * @return {Function} the callback\n */\nContract.prototype._getCallback = function getCallback(args) {\n if (args && !!args[args.length - 1] && typeof args[args.length - 1] === 'function') {\n return args.pop(); // modify the args array!\n }\n};\n/**\n * Checks that no listener with name \"newListener\" or \"removeListener\" is added.\n *\n * @method _checkListener\n * @param {String} type\n * @param {String} event\n * @return {Object} the contract instance\n */\nContract.prototype._checkListener = function (type, event) {\n if (event === type) {\n throw errors.ContractReservedEventError(type);\n }\n};\n/**\n * Use default values, if options are not available\n *\n * @method _getOrSetDefaultOptions\n * @param {Object} options the options gived by the user\n * @return {Object} the options with gaps filled by defaults\n */\nContract.prototype._getOrSetDefaultOptions = function getOrSetDefaultOptions(options) {\n var _options = { ...options };\n var gasPrice = _options.gasPrice ? String(_options.gasPrice) : null;\n var from = _options.from ? utils.toChecksumAddress(formatters.inputAddressFormatter(_options.from)) : null;\n _options.data = _options.data || this.options.data;\n _options.from = from || this.options.from;\n _options.gasPrice = gasPrice || this.options.gasPrice;\n _options.gas = _options.gas || _options.gasLimit || this.options.gas;\n // TODO replace with only gasLimit?\n delete _options.gasLimit;\n return _options;\n};\n/**\n * Should be used to encode indexed params and options to one final object\n *\n * @method _encodeEventABI\n * @param {Object} event\n * @param {Object} options\n * @return {Object} everything combined together and encoded\n */\nContract.prototype._encodeEventABI = function (event, options) {\n options = options || {};\n var filter = options.filter || {}, result = {};\n ['fromBlock', 'toBlock'].filter(function (f) {\n return options[f] !== undefined;\n }).forEach(function (f) {\n result[f] = formatters.inputBlockNumberFormatter(options[f]);\n });\n let topics = [];\n if (options.topics && Array.isArray(options.topics)) {\n topics = [...options.topics];\n }\n else {\n topics = [];\n // add event signature\n if (event && !event.anonymous && event.name !== 'ALLEVENTS') {\n topics.push(event.signature || abi.encodeEventSignature(utils.jsonInterfaceMethodToString(event)));\n }\n // add event topics (indexed arguments)\n if (event.name !== 'ALLEVENTS' && event.inputs) {\n for (const input of event.inputs) {\n if (!input.indexed) {\n continue;\n }\n const value = filter[input.name];\n if (!value) {\n // eslint-disable-next-line no-null/no-null\n topics.push(null);\n continue;\n }\n if (Array.isArray(value)) {\n topics.push(value.map(v => abi.encodeParameter(input.type, v)));\n }\n else {\n topics.push(abi.encodeParameter(input.type, value));\n }\n }\n }\n }\n if (topics.length) {\n result.topics = topics;\n }\n if (this.options.address) {\n result.address = this.options.address.toLowerCase();\n }\n return result;\n};\n/**\n * Should be used to decode indexed params and options\n *\n * @method _decodeEventABI\n * @param {Object} data\n * @return {Object} result object with decoded indexed && not indexed params\n */\nContract.prototype._decodeEventABI = function (data) {\n var event = this;\n data.data = data.data || '';\n data.topics = data.topics || [];\n var result = formatters.outputLogFormatter(data);\n // if allEvents get the right event\n if (event.name === 'ALLEVENTS') {\n event = event.jsonInterface.find(function (intf) {\n return (intf.signature === data.topics[0]);\n }) || { anonymous: true };\n }\n // create empty inputs if none are present (e.g. anonymous events on allEvents)\n event.inputs = event.inputs || [];\n // Handle case where an event signature shadows the current ABI with non-identical\n // arg indexing. If # of topics doesn't match, event is anon.\n if (!event.anonymous) {\n let indexedInputs = 0;\n event.inputs.forEach(input => input.indexed ? indexedInputs++ : null);\n if (indexedInputs > 0 && (data.topics.length !== indexedInputs + 1)) {\n event = {\n anonymous: true,\n inputs: []\n };\n }\n }\n var argTopics = event.anonymous ? data.topics : data.topics.slice(1);\n result.returnValues = abi.decodeLog(event.inputs, data.data, argTopics);\n delete result.returnValues.__length__;\n // add name\n result.event = event.name;\n // add signature\n result.signature = (event.anonymous || !data.topics[0]) ? null : data.topics[0];\n // move the data and topics to \"raw\"\n result.raw = {\n data: result.data,\n topics: result.topics\n };\n delete result.data;\n delete result.topics;\n return result;\n};\n/**\n * Encodes an ABI for a method, including signature or the method.\n * Or when constructor encodes only the constructor parameters.\n *\n * @method _encodeMethodABI\n * @param {Mixed} args the arguments to encode\n * @param {String} the encoded ABI\n */\nContract.prototype._encodeMethodABI = function _encodeMethodABI() {\n var methodSignature = this._method.signature, args = this.arguments || [];\n var signature = false, paramsABI = this._parent.options.jsonInterface.filter(function (json) {\n return ((methodSignature === 'constructor' && json.type === methodSignature) ||\n ((json.signature === methodSignature || json.signature === methodSignature.replace('0x', '') || json.name === methodSignature) && json.type === 'function'));\n }).map(function (json) {\n var inputLength = (Array.isArray(json.inputs)) ? json.inputs.length : 0;\n if (inputLength !== args.length) {\n throw new Error('The number of arguments is not matching the methods required number. You need to pass ' + inputLength + ' arguments.');\n }\n if (json.type === 'function') {\n signature = json.signature;\n }\n return Array.isArray(json.inputs) ? json.inputs : [];\n }).map(function (inputs) {\n return abi.encodeParameters(inputs, args).replace('0x', '');\n })[0] || '';\n // return constructor\n if (methodSignature === 'constructor') {\n if (!this._deployData)\n throw new Error('The contract has no contract data option set. This is necessary to append the constructor parameters.');\n if (!this._deployData.startsWith('0x')) {\n this._deployData = '0x' + this._deployData;\n }\n return this._deployData + paramsABI;\n }\n // return method\n var returnValue = (signature) ? signature + paramsABI : paramsABI;\n if (!returnValue) {\n throw new Error('Couldn\\'t find a matching contract method named \"' + this._method.name + '\".');\n }\n return returnValue;\n};\n/**\n * Decode method return values\n *\n * @method _decodeMethodReturn\n * @param {Array} outputs\n * @param {String} returnValues\n * @return {Object} decoded output return values\n */\nContract.prototype._decodeMethodReturn = function (outputs, returnValues) {\n if (!returnValues) {\n return null;\n }\n returnValues = returnValues.length >= 2 ? returnValues.slice(2) : returnValues;\n var result = abi.decodeParameters(outputs, returnValues);\n if (result.__length__ === 1) {\n return result[0];\n }\n delete result.__length__;\n return result;\n};\n/**\n * Deploys a contract and fire events based on its state: transactionHash, receipt\n *\n * All event listeners will be removed, once the last possible event is fired (\"error\", or \"receipt\")\n *\n * @method deploy\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} EventEmitter possible events are \"error\", \"transactionHash\" and \"receipt\"\n */\nContract.prototype.deploy = function (options, callback) {\n options = options || {};\n options.arguments = options.arguments || [];\n options = this._getOrSetDefaultOptions(options);\n // throw error, if no \"data\" is specified\n if (!options.data) {\n if (typeof callback === 'function') {\n return callback(errors.ContractMissingDeployDataError());\n }\n throw errors.ContractMissingDeployDataError();\n }\n var constructor = this.options.jsonInterface.find((method) => {\n return (method.type === 'constructor');\n }) || {};\n constructor.signature = 'constructor';\n return this._createTxObject.apply({\n method: constructor,\n parent: this,\n deployData: options.data,\n _ethAccounts: this.constructor._ethAccounts\n }, options.arguments);\n};\n/**\n * Gets the event signature and outputFormatters\n *\n * @method _generateEventOptions\n * @param {Object} event\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} the event options object\n */\nContract.prototype._generateEventOptions = function () {\n var args = Array.prototype.slice.call(arguments);\n // get the callback\n var callback = this._getCallback(args);\n // get the options\n var options = (!!args[args.length - 1] && typeof args[args.length - 1]) === 'object' ? args.pop() : {};\n var eventName = (typeof args[0] === 'string') ? args[0] : 'allevents';\n var event = (eventName.toLowerCase() === 'allevents') ? {\n name: 'ALLEVENTS',\n jsonInterface: this.options.jsonInterface\n } : this.options.jsonInterface.find(function (json) {\n return (json.type === 'event' && (json.name === eventName || json.signature === '0x' + eventName.replace('0x', '')));\n });\n if (!event) {\n throw errors.ContractEventDoesNotExistError(eventName);\n }\n if (!utils.isAddress(this.options.address)) {\n throw errors.ContractNoAddressDefinedError();\n }\n return {\n params: this._encodeEventABI(event, options),\n event: event,\n filter: options.filter || {},\n callback: callback\n };\n};\n/**\n * Adds event listeners and creates a subscription, and remove it once its fired.\n *\n * @method clone\n * @return {Object} the event subscription\n */\nContract.prototype.clone = function () {\n return new this.constructor(this.options.jsonInterface, this.options.address, this.options);\n};\n/**\n * Adds event listeners and creates a subscription, and remove it once its fired.\n *\n * @method once\n * @param {String} event\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} the event subscription\n */\nContract.prototype.once = function (event, options, callback) {\n var args = Array.prototype.slice.call(arguments);\n // get the callback\n callback = this._getCallback(args);\n if (!callback) {\n throw errors.ContractOnceRequiresCallbackError();\n }\n // don't allow fromBlock\n if (options)\n delete options.fromBlock;\n // don't return as once shouldn't provide \"on\"\n this._on(event, options, function (err, res, sub) {\n sub.unsubscribe();\n if (typeof callback === 'function') {\n callback(err, res, sub);\n }\n });\n return undefined;\n};\n/**\n * Adds event listeners and creates a subscription.\n *\n * @method _on\n *\n * @param {String} event\n * @param {Object} options\n * @param {Function} callback\n *\n * @return {Object} the event subscription\n */\nContract.prototype._on = function () {\n var subOptions = this._generateEventOptions.apply(this, arguments);\n if (subOptions.params && subOptions.params.toBlock) {\n delete subOptions.params.toBlock;\n console.warn('Invalid option: toBlock. Use getPastEvents for specific range.');\n }\n // prevent the event \"newListener\" and \"removeListener\" from being overwritten\n this._checkListener('newListener', subOptions.event.name);\n this._checkListener('removeListener', subOptions.event.name);\n // TODO check if listener already exists? and reuse subscription if options are the same.\n // create new subscription\n var subscription = new Subscription({\n subscription: {\n params: 1,\n inputFormatter: [formatters.inputLogFormatter],\n outputFormatter: this._decodeEventABI.bind(subOptions.event),\n // DUBLICATE, also in web3-eth\n subscriptionHandler: function (output) {\n if (output.removed) {\n this.emit('changed', output);\n }\n else {\n this.emit('data', output);\n }\n if (typeof this.callback === 'function') {\n this.callback(null, output, this);\n }\n }\n },\n type: 'eth',\n requestManager: this._requestManager\n });\n subscription.subscribe('logs', subOptions.params, subOptions.callback || function () { });\n return subscription;\n};\nconst filterAllEventsResults = (subOptions, data) => {\n if (subOptions.event && subOptions.event.name === 'ALLEVENTS' && Array.isArray(data)) {\n const filter = subOptions.filter || {};\n const filterKeys = Object.keys(filter);\n return filterKeys.length > 0\n ? data.filter(log => typeof log === 'string' ? true : filterKeys.every((k) => Array.isArray(filter[k]) ? (filter[k]).some((v) => String(log.returnValues[k]).toUpperCase() ===\n String(v).toUpperCase()) : (String(log.returnValues[k]).toUpperCase() ===\n String(filter[k]).toUpperCase())))\n : data;\n }\n return data;\n};\n/**\n * Get past events from contracts\n *\n * @method getPastEvents\n * @param {String} event\n * @param {Object} options\n * @param {Function} callback\n * @return {Object} the promievent\n */\nContract.prototype.getPastEvents = function () {\n var subOptions = this._generateEventOptions.apply(this, arguments);\n var getPastLogs = new Method({\n name: 'getPastLogs',\n call: 'eth_getLogs',\n params: 1,\n inputFormatter: [formatters.inputLogFormatter],\n outputFormatter: this._decodeEventABI.bind(subOptions.event)\n });\n getPastLogs.setRequestManager(this._requestManager);\n var call = getPastLogs.buildCall();\n getPastLogs = null;\n return call(subOptions.params, (err, data) => {\n if (typeof subOptions.callback === 'function') {\n subOptions.callback(err, filterAllEventsResults(subOptions, data));\n }\n }).then(filterAllEventsResults.bind(this, subOptions));\n};\n/**\n * returns the an object with call, send, estimate functions\n *\n * @method _createTxObject\n * @returns {Object} an object with functions to call the methods\n */\nContract.prototype._createTxObject = function _createTxObject() {\n var args = Array.prototype.slice.call(arguments);\n var txObject = {};\n if (this.method.type === 'function') {\n txObject.call = this.parent._executeMethod.bind(txObject, 'call');\n txObject.call.request = this.parent._executeMethod.bind(txObject, 'call', true); // to make batch requests\n }\n txObject.send = this.parent._executeMethod.bind(txObject, 'send');\n txObject.send.request = this.parent._executeMethod.bind(txObject, 'send', true); // to make batch requests\n txObject.encodeABI = this.parent._encodeMethodABI.bind(txObject);\n txObject.estimateGas = this.parent._executeMethod.bind(txObject, 'estimate');\n txObject.createAccessList = this.parent._executeMethod.bind(txObject, 'createAccessList');\n if (args && this.method.inputs && args.length !== this.method.inputs.length) {\n if (this.nextMethod) {\n return this.nextMethod.apply(null, args);\n }\n throw errors.InvalidNumberOfParams(args.length, this.method.inputs.length, this.method.name);\n }\n txObject.arguments = args || [];\n txObject._method = this.method;\n txObject._parent = this.parent;\n txObject._ethAccounts = this.parent.constructor._ethAccounts || this._ethAccounts;\n if (this.deployData) {\n txObject._deployData = this.deployData;\n }\n return txObject;\n};\n/**\n * Generates the options for the execute call\n *\n * @method _processExecuteArguments\n * @param {Array} args\n * @param {Promise} defer\n */\nContract.prototype._processExecuteArguments = function _processExecuteArguments(args, defer) {\n var processedArgs = {};\n processedArgs.type = args.shift();\n // get the callback\n processedArgs.callback = this._parent._getCallback(args);\n // get block number to use for call\n if (processedArgs.type === 'call' && args[args.length - 1] !== true && (typeof args[args.length - 1] === 'string' || isFinite(args[args.length - 1])))\n processedArgs.defaultBlock = args.pop();\n // get the options\n processedArgs.options = (!!args[args.length - 1] && typeof args[args.length - 1]) === 'object' ? args.pop() : {};\n // get the generateRequest argument for batch requests\n processedArgs.generateRequest = (args[args.length - 1] === true) ? args.pop() : false;\n processedArgs.options = this._parent._getOrSetDefaultOptions(processedArgs.options);\n processedArgs.options.data = this.encodeABI();\n // add contract address\n if (!this._deployData && !utils.isAddress(this._parent.options.address))\n throw errors.ContractNoAddressDefinedError();\n if (!this._deployData)\n processedArgs.options.to = this._parent.options.address;\n // return error, if no \"data\" is specified\n if (!processedArgs.options.data)\n return utils._fireError(new Error('Couldn\\'t find a matching contract method, or the number of parameters is wrong.'), defer.eventEmitter, defer.reject, processedArgs.callback);\n return processedArgs;\n};\n/**\n * Executes a call, transact or estimateGas on a contract function\n *\n * @method _executeMethod\n * @param {String} type the type this execute function should execute\n * @param {Boolean} makeRequest if true, it simply returns the request parameters, rather than executing it\n */\nContract.prototype._executeMethod = function _executeMethod() {\n var _this = this, args = this._parent._processExecuteArguments.call(this, Array.prototype.slice.call(arguments), defer), defer = promiEvent((args.type !== 'send')), ethAccounts = _this.constructor._ethAccounts || _this._ethAccounts;\n // simple return request for batch requests\n if (args.generateRequest) {\n var payload = {\n params: [formatters.inputCallFormatter.call(this._parent, args.options)],\n callback: args.callback\n };\n if (args.type === 'call') {\n payload.params.push(formatters.inputDefaultBlockNumberFormatter.call(this._parent, args.defaultBlock));\n payload.method = 'eth_call';\n payload.format = this._parent._decodeMethodReturn.bind(null, this._method.outputs);\n }\n else {\n payload.method = 'eth_sendTransaction';\n }\n return payload;\n }\n switch (args.type) {\n case 'createAccessList':\n // return error, if no \"from\" is specified\n if (!utils.isAddress(args.options.from)) {\n return utils._fireError(errors.ContractNoFromAddressDefinedError(), defer.eventEmitter, defer.reject, args.callback);\n }\n var createAccessList = (new Method({\n name: 'createAccessList',\n call: 'eth_createAccessList',\n params: 2,\n inputFormatter: [formatters.inputTransactionFormatter, formatters.inputDefaultBlockNumberFormatter],\n requestManager: _this._parent._requestManager,\n accounts: ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock\n })).createFunction();\n return createAccessList(args.options, args.callback);\n case 'estimate':\n var estimateGas = (new Method({\n name: 'estimateGas',\n call: 'eth_estimateGas',\n params: 1,\n inputFormatter: [formatters.inputCallFormatter],\n outputFormatter: utils.hexToNumber,\n requestManager: _this._parent._requestManager,\n accounts: ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock\n })).createFunction();\n return estimateGas(args.options, args.callback);\n case 'call':\n // TODO check errors: missing \"from\" should give error on deploy and send, call ?\n var call = (new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n inputFormatter: [formatters.inputCallFormatter, formatters.inputDefaultBlockNumberFormatter],\n // add output formatter for decoding\n outputFormatter: function (result) {\n return _this._parent._decodeMethodReturn(_this._method.outputs, result);\n },\n requestManager: _this._parent._requestManager,\n accounts: ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock,\n handleRevert: _this._parent.handleRevert,\n abiCoder: abi\n })).createFunction();\n return call(args.options, args.defaultBlock, args.callback);\n case 'send':\n // return error, if no \"from\" is specified\n if (!utils.isAddress(args.options.from)) {\n return utils._fireError(errors.ContractNoFromAddressDefinedError(), defer.eventEmitter, defer.reject, args.callback);\n }\n if (typeof this._method.payable === 'boolean' && !this._method.payable && args.options.value && args.options.value > 0) {\n return utils._fireError(new Error('Can not send value to non-payable contract method or constructor'), defer.eventEmitter, defer.reject, args.callback);\n }\n // make sure receipt logs are decoded\n var extraFormatters = {\n receiptFormatter: function (receipt) {\n if (Array.isArray(receipt.logs)) {\n // decode logs\n var events = receipt.logs.map((log) => {\n return _this._parent._decodeEventABI.call({\n name: 'ALLEVENTS',\n jsonInterface: _this._parent.options.jsonInterface\n }, log);\n });\n // make log names keys\n receipt.events = {};\n var count = 0;\n events.forEach(function (ev) {\n if (ev.event) {\n // if > 1 of the same event, don't overwrite any existing events\n if (receipt.events[ev.event]) {\n if (Array.isArray(receipt.events[ev.event])) {\n receipt.events[ev.event].push(ev);\n }\n else {\n receipt.events[ev.event] = [receipt.events[ev.event], ev];\n }\n }\n else {\n receipt.events[ev.event] = ev;\n }\n }\n else {\n receipt.events[count] = ev;\n count++;\n }\n });\n delete receipt.logs;\n }\n return receipt;\n },\n contractDeployFormatter: function (receipt) {\n var newContract = _this._parent.clone();\n newContract.options.address = receipt.contractAddress;\n return newContract;\n }\n };\n var sendTransaction = (new Method({\n name: 'sendTransaction',\n call: 'eth_sendTransaction',\n params: 1,\n inputFormatter: [formatters.inputTransactionFormatter],\n requestManager: _this._parent._requestManager,\n accounts: _this.constructor._ethAccounts || _this._ethAccounts,\n defaultAccount: _this._parent.defaultAccount,\n defaultBlock: _this._parent.defaultBlock,\n transactionBlockTimeout: _this._parent.transactionBlockTimeout,\n transactionConfirmationBlocks: _this._parent.transactionConfirmationBlocks,\n transactionPollingTimeout: _this._parent.transactionPollingTimeout,\n transactionPollingInterval: _this._parent.transactionPollingInterval,\n defaultCommon: _this._parent.defaultCommon,\n defaultChain: _this._parent.defaultChain,\n defaultHardfork: _this._parent.defaultHardfork,\n handleRevert: _this._parent.handleRevert,\n extraFormatters: extraFormatters,\n abiCoder: abi\n })).createFunction();\n return sendTransaction(args.options, args.callback);\n default:\n throw new Error('Method \"' + args.type + '\" not implemented.');\n }\n};\nmodule.exports = Contract;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file ENS.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar config = require('./config');\nvar formatters = require('web3-core-helpers').formatters;\nvar utils = require('web3-utils');\nvar Registry = require('./contracts/Registry');\nvar ResolverMethodHandler = require('./lib/ResolverMethodHandler');\nvar contenthash = require('./lib/contentHash');\n/**\n * Constructs a new instance of ENS\n *\n * @param {Eth} eth\n *\n * @constructor\n */\nfunction ENS(eth) {\n this.eth = eth;\n var registryAddress = null;\n this._detectedAddress = null;\n this._lastSyncCheck = null;\n Object.defineProperty(this, 'registry', {\n get: function () {\n return new Registry(this);\n },\n enumerable: true\n });\n Object.defineProperty(this, 'resolverMethodHandler', {\n get: function () {\n return new ResolverMethodHandler(this.registry);\n },\n enumerable: true\n });\n Object.defineProperty(this, 'registryAddress', {\n get: function () {\n return registryAddress;\n },\n set: function (value) {\n if (value === null) {\n registryAddress = value;\n return;\n }\n registryAddress = formatters.inputAddressFormatter(value);\n },\n enumerable: true\n });\n}\n/**\n * Returns true if the given interfaceId is supported and otherwise false.\n *\n * @method supportsInterface\n *\n * @param {string} name\n * @param {string} interfaceId\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.supportsInterface = function (name, interfaceId, callback) {\n return this.getResolver(name).then(function (resolver) {\n if (!utils.isHexStrict(interfaceId)) {\n interfaceId = utils.sha3(interfaceId).slice(0, 10);\n }\n return resolver.methods.supportsInterface(interfaceId).call(callback);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n throw error;\n });\n};\n/**\n * Returns the Resolver by the given address\n *\n * @deprecated Please use the \"getResolver\" method instead of \"resolver\"\n *\n * @method resolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.resolver = function (name, callback) {\n return this.registry.resolver(name, callback);\n};\n/**\n * Returns the Resolver by the given address\n *\n * @method getResolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.getResolver = function (name, callback) {\n return this.registry.getResolver(name, callback);\n};\n/**\n * Does set the resolver of the given name\n *\n * @method setResolver\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setResolver = function (name, address, txConfig, callback) {\n return this.registry.setResolver(name, address, txConfig, callback);\n};\n/**\n * Sets the owner, resolver, and TTL for an ENS record in a single operation.\n *\n * @method setRecord\n *\n * @param {string} name\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setRecord = function (name, owner, resolver, ttl, txConfig, callback) {\n return this.registry.setRecord(name, owner, resolver, ttl, txConfig, callback);\n};\n/**\n * Sets the owner, resolver and TTL for a subdomain, creating it if necessary.\n *\n * @method setSubnodeRecord\n *\n * @param {string} name\n * @param {string} label\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setSubnodeRecord = function (name, label, owner, resolver, ttl, txConfig, callback) {\n return this.registry.setSubnodeRecord(name, label, owner, resolver, ttl, txConfig, callback);\n};\n/**\n * Sets or clears an approval by the given operator.\n *\n * @method setApprovalForAll\n *\n * @param {string} operator\n * @param {boolean} approved\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setApprovalForAll = function (operator, approved, txConfig, callback) {\n return this.registry.setApprovalForAll(operator, approved, txConfig, callback);\n};\n/**\n * Returns true if the operator is approved\n *\n * @method isApprovedForAll\n *\n * @param {string} owner\n * @param {string} operator\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.isApprovedForAll = function (owner, operator, callback) {\n return this.registry.isApprovedForAll(owner, operator, callback);\n};\n/**\n * Returns true if the record exists\n *\n * @method recordExists\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nENS.prototype.recordExists = function (name, callback) {\n return this.registry.recordExists(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setSubnodeOwner\n *\n * @param {string} name\n * @param {string} label\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setSubnodeOwner = function (name, label, address, txConfig, callback) {\n return this.registry.setSubnodeOwner(name, label, address, txConfig, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method getTTL\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getTTL = function (name, callback) {\n return this.registry.getTTL(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setTTL\n *\n * @param {string} name\n * @param {number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setTTL = function (name, ttl, txConfig, callback) {\n return this.registry.setTTL(name, ttl, txConfig, callback);\n};\n/**\n * Returns the owner by the given name and current configured or detected Registry\n *\n * @method getOwner\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getOwner = function (name, callback) {\n return this.registry.getOwner(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setOwner\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setOwner = function (name, address, txConfig, callback) {\n return this.registry.setOwner(name, address, txConfig, callback);\n};\n/**\n * Returns the address record associated with a name.\n *\n * @method getAddress\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getAddress = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'addr', []).call(callback);\n};\n/**\n * Sets a new address\n *\n * @method setAddress\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setAddress = function (name, address, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'setAddr', [address]).send(txConfig, callback);\n};\n/**\n * Returns the public key\n *\n * @method getPubkey\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getPubkey = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'pubkey', [], null, callback).call(callback);\n};\n/**\n * Set the new public key\n *\n * @method setPubkey\n *\n * @param {string} name\n * @param {string} x\n * @param {string} y\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setPubkey = function (name, x, y, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'setPubkey', [x, y]).send(txConfig, callback);\n};\n/**\n * Returns the content\n *\n * @method getContent\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getContent = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'content', []).call(callback);\n};\n/**\n * Set the content\n *\n * @method setContent\n *\n * @param {string} name\n * @param {string} hash\n * @param {function} callback\n * @param {TransactionConfig} txConfig\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setContent = function (name, hash, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'setContent', [hash]).send(txConfig, callback);\n};\n/**\n * Returns the contenthash\n *\n * @method getContenthash\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getContenthash = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'contenthash', [], contenthash.decode).call(callback);\n};\n/**\n * Set the contenthash\n *\n * @method setContent\n *\n * @param {string} name\n * @param {string} hash\n * @param {function} callback\n * @param {TransactionConfig} txConfig\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setContenthash = function (name, hash, txConfig, callback) {\n var encoded;\n try {\n encoded = contenthash.encode(hash);\n }\n catch (err) {\n var error = new Error('Could not encode ' + hash + '. See docs for supported hash protocols.');\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n throw error;\n }\n return this.resolverMethodHandler.method(name, 'setContenthash', [encoded]).send(txConfig, callback);\n};\n/**\n * Get the multihash\n *\n * @method getMultihash\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.getMultihash = function (name, callback) {\n return this.resolverMethodHandler.method(name, 'multihash', []).call(callback);\n};\n/**\n * Set the multihash\n *\n * @method setMultihash\n *\n * @param {string} name\n * @param {string} hash\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nENS.prototype.setMultihash = function (name, hash, txConfig, callback) {\n return this.resolverMethodHandler.method(name, 'multihash', [hash]).send(txConfig, callback);\n};\n/**\n * Checks if the current used network is synced and looks for ENS support there.\n * Throws an error if not.\n *\n * @returns {Promise}\n */\nENS.prototype.checkNetwork = async function () {\n var now = new Date() / 1000;\n if (!this._lastSyncCheck || (now - this._lastSyncCheck) > 3600) {\n var block = await this.eth.getBlock('latest');\n var headAge = now - block.timestamp;\n if (headAge > 3600) {\n throw new Error(\"Network not synced; last block was \" + headAge + \" seconds ago\");\n }\n this._lastSyncCheck = now;\n }\n if (this.registryAddress) {\n return this.registryAddress;\n }\n if (!this._detectedAddress) {\n var networkType = await this.eth.net.getNetworkType();\n var addr = config.addresses[networkType];\n if (typeof addr === 'undefined') {\n throw new Error(\"ENS is not supported on network \" + networkType);\n }\n this._detectedAddress = addr;\n return this._detectedAddress;\n }\n return this._detectedAddress;\n};\nmodule.exports = ENS;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file config.js\n *\n * @author Samuel Furter \n * @date 2017\n */\n\"use strict\";\n/**\n * Source: https://docs.ens.domains/ens-deployments\n *\n * @type {{addresses: {main: string, rinkeby: string, goerli: string, ropsten: string}}}\n */\nvar config = {\n addresses: {\n main: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n ropsten: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n rinkeby: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n goerli: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n },\n // These ids obtained at ensdomains docs:\n // https://docs.ens.domains/contract-developer-guide/writing-a-resolver\n interfaceIds: {\n addr: \"0x3b3b57de\",\n setAddr: \"0x3b3b57de\",\n pubkey: \"0xc8690233\",\n setPubkey: \"0xc8690233\",\n contenthash: \"0xbc1c58d1\",\n setContenthash: \"0xbc1c58d1\",\n content: \"0xd8389dc5\",\n setContent: \"0xd8389dc5\"\n }\n};\nmodule.exports = config;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file Registry.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar Contract = require('web3-eth-contract');\nvar namehash = require('eth-ens-namehash');\nvar PromiEvent = require('web3-core-promievent');\nvar formatters = require('web3-core-helpers').formatters;\nvar utils = require('web3-utils');\nvar REGISTRY_ABI = require('../resources/ABI/Registry');\nvar RESOLVER_ABI = require('../resources/ABI/Resolver');\n/**\n * A wrapper around the ENS registry contract.\n *\n * @method Registry\n * @param {Ens} ens\n * @constructor\n */\nfunction Registry(ens) {\n var self = this;\n this.ens = ens;\n this.contract = ens.checkNetwork().then(function (address) {\n var contract = new Contract(REGISTRY_ABI, address);\n contract.setProvider(self.ens.eth.currentProvider);\n return contract;\n });\n}\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @deprecated Please use the \"getOwner\" method instead of \"owner\"\n *\n * @method owner\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.owner = function (name, callback) {\n console.warn('Deprecated: Please use the \"getOwner\" method instead of \"owner\".');\n return this.getOwner(name, callback);\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method getOwner\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.getOwner = function (name, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.owner(namehash.hash(name)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setOwner\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setOwner = function (name, address, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setOwner(namehash.hash(name), formatters.inputAddressFormatter(address)).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the TTL of the given node by his name\n *\n * @method getTTL\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returnss {Promise}\n */\nRegistry.prototype.getTTL = function (name, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.ttl(namehash.hash(name)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setTTL\n *\n * @param {string} name\n * @param {number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setTTL = function (name, ttl, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setTTL(namehash.hash(name), ttl).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setSubnodeOwner\n *\n * @param {string} name\n * @param {string} label\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setSubnodeOwner = function (name, label, address, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n if (!utils.isHexStrict(label)) {\n label = utils.sha3(label);\n }\n this.contract.then(function (contract) {\n return contract.methods.setSubnodeOwner(namehash.hash(name), label, formatters.inputAddressFormatter(address)).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Sets the owner, resolver, and TTL for an ENS record in a single operation.\n *\n * @method setRecord\n *\n * @param {string} name\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setRecord = function (name, owner, resolver, ttl, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setRecord(namehash.hash(name), formatters.inputAddressFormatter(owner), formatters.inputAddressFormatter(resolver), ttl).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Sets the owner, resolver and TTL for a subdomain, creating it if necessary.\n *\n * @method setSubnodeRecord\n *\n * @param {string} name\n * @param {string} label\n * @param {string} owner\n * @param {string} resolver\n * @param {string | number} ttl\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setSubnodeRecord = function (name, label, owner, resolver, ttl, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n if (!utils.isHexStrict(label)) {\n label = utils.sha3(label);\n }\n this.contract.then(function (contract) {\n return contract.methods.setSubnodeRecord(namehash.hash(name), label, formatters.inputAddressFormatter(owner), formatters.inputAddressFormatter(resolver), ttl).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Sets or clears an approval by the given operator.\n *\n * @method setApprovalForAll\n *\n * @param {string} operator\n * @param {boolean} approved\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setApprovalForAll = function (operator, approved, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setApprovalForAll(formatters.inputAddressFormatter(operator), approved).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns true if the operator is approved\n *\n * @method isApprovedForAll\n *\n * @param {string} owner\n * @param {string} operator\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.isApprovedForAll = function (owner, operator, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.isApprovedForAll(formatters.inputAddressFormatter(owner), formatters.inputAddressFormatter(operator)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns true if the record exists\n *\n * @method recordExists\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.recordExists = function (name, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.recordExists(namehash.hash(name)).call();\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Returns the resolver contract associated with a name.\n *\n * @deprecated Please use the \"getResolver\" method instead of \"resolver\"\n *\n * @method resolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.resolver = function (name, callback) {\n console.warn('Deprecated: Please use the \"getResolver\" method instead of \"resolver\".');\n return this.getResolver(name, callback);\n};\n/**\n * Returns the resolver contract associated with a name.\n *\n * @method getResolver\n *\n * @param {string} name\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {Promise}\n */\nRegistry.prototype.getResolver = function (name, callback) {\n var self = this;\n return this.contract.then(function (contract) {\n return contract.methods.resolver(namehash.hash(name)).call();\n }).then(function (address) {\n var contract = new Contract(RESOLVER_ABI, address);\n contract.setProvider(self.ens.eth.currentProvider);\n if (typeof callback === 'function') {\n // It's required to pass the contract to the first argument to be backward compatible and to have the required consistency\n callback(contract, contract);\n return;\n }\n return contract;\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n throw error;\n });\n};\n/**\n * Returns the address of the owner of an ENS name.\n *\n * @method setResolver\n *\n * @param {string} name\n * @param {string} address\n * @param {TransactionConfig} txConfig\n * @param {function} callback\n *\n * @callback callback callback(error, result)\n * @returns {PromiEvent}\n */\nRegistry.prototype.setResolver = function (name, address, txConfig, callback) {\n var promiEvent = new PromiEvent(true);\n this.contract.then(function (contract) {\n return contract.methods.setResolver(namehash.hash(name), formatters.inputAddressFormatter(address)).send(txConfig);\n }).then(function (receipt) {\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the first argument to be backward compatible and to have the required consistency\n callback(receipt, receipt);\n return;\n }\n promiEvent.resolve(receipt);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\nmodule.exports = Registry;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar ENS = require('./ENS');\nmodule.exports = ENS;\n","/*\n This file is part of web3.js.\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file ResolverMethodHandler.js\n *\n * @author Samuel Furter \n * @date 2018\n */\n\"use strict\";\nvar PromiEvent = require('web3-core-promievent');\nvar namehash = require('eth-ens-namehash');\nvar errors = require('web3-core-helpers').errors;\nvar interfaceIds = require('../config').interfaceIds;\n/**\n * @param {Registry} registry\n * @constructor\n */\nfunction ResolverMethodHandler(registry) {\n this.registry = registry;\n}\n/**\n * Executes an resolver method and returns an eventifiedPromise\n *\n * @param {string} ensName\n * @param {string} methodName\n * @param {array} methodArguments\n * @param {function} callback\n * @returns {Object}\n */\nResolverMethodHandler.prototype.method = function (ensName, methodName, methodArguments, outputFormatter, callback) {\n return {\n call: this.call.bind({\n ensName: ensName,\n methodName: methodName,\n methodArguments: methodArguments,\n callback: callback,\n parent: this,\n outputFormatter: outputFormatter\n }),\n send: this.send.bind({\n ensName: ensName,\n methodName: methodName,\n methodArguments: methodArguments,\n callback: callback,\n parent: this\n })\n };\n};\n/**\n * Executes call\n *\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.call = function (callback) {\n var self = this;\n var promiEvent = new PromiEvent();\n var preparedArguments = this.parent.prepareArguments(this.ensName, this.methodArguments);\n var outputFormatter = this.outputFormatter || null;\n this.parent.registry.getResolver(this.ensName).then(async function (resolver) {\n await self.parent.checkInterfaceSupport(resolver, self.methodName);\n self.parent.handleCall(promiEvent, resolver.methods[self.methodName], preparedArguments, outputFormatter, callback);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Executes send\n *\n * @param {Object} sendOptions\n * @param {function} callback\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.send = function (sendOptions, callback) {\n var self = this;\n var promiEvent = new PromiEvent();\n var preparedArguments = this.parent.prepareArguments(this.ensName, this.methodArguments);\n this.parent.registry.getResolver(this.ensName).then(async function (resolver) {\n await self.parent.checkInterfaceSupport(resolver, self.methodName);\n self.parent.handleSend(promiEvent, resolver.methods[self.methodName], preparedArguments, sendOptions, callback);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent.eventEmitter;\n};\n/**\n * Handles a call method\n *\n * @param {eventifiedPromise} promiEvent\n * @param {function} method\n * @param {array} preparedArguments\n * @param {function} callback\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.handleCall = function (promiEvent, method, preparedArguments, outputFormatter, callback) {\n method.apply(this, preparedArguments).call()\n .then(function (result) {\n if (outputFormatter) {\n result = outputFormatter(result);\n }\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the second argument to be backwards compatible and to have the required consistency\n callback(result, result);\n return;\n }\n promiEvent.resolve(result);\n }).catch(function (error) {\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent;\n};\n/**\n * Handles a send method\n *\n * @param {eventifiedPromise} promiEvent\n * @param {function} method\n * @param {array} preparedArguments\n * @param {Object} sendOptions\n * @param {function} callback\n * @returns {eventifiedPromise}\n */\nResolverMethodHandler.prototype.handleSend = function (promiEvent, method, preparedArguments, sendOptions, callback) {\n method.apply(this, preparedArguments).send(sendOptions)\n .on('sending', function () {\n promiEvent.eventEmitter.emit('sending');\n })\n .on('sent', function () {\n promiEvent.eventEmitter.emit('sent');\n })\n .on('transactionHash', function (hash) {\n promiEvent.eventEmitter.emit('transactionHash', hash);\n })\n .on('confirmation', function (confirmationNumber, receipt) {\n promiEvent.eventEmitter.emit('confirmation', confirmationNumber, receipt);\n })\n .on('receipt', function (receipt) {\n promiEvent.eventEmitter.emit('receipt', receipt);\n promiEvent.resolve(receipt);\n if (typeof callback === 'function') {\n // It's required to pass the receipt to the second argument to be backwards compatible and to have the required consistency\n callback(receipt, receipt);\n }\n })\n .on('error', function (error) {\n promiEvent.eventEmitter.emit('error', error);\n if (typeof callback === 'function') {\n callback(error, null);\n return;\n }\n promiEvent.reject(error);\n });\n return promiEvent;\n};\n/**\n * Adds the ENS node to the arguments\n *\n * @param {string} name\n * @param {array} methodArguments\n *\n * @returns {array}\n */\nResolverMethodHandler.prototype.prepareArguments = function (name, methodArguments) {\n var node = namehash.hash(name);\n if (methodArguments.length > 0) {\n methodArguments.unshift(node);\n return methodArguments;\n }\n return [node];\n};\n/**\n *\n *\n * @param {Contract} resolver\n * @param {string} methodName\n *\n * @returns {Promise}\n */\nResolverMethodHandler.prototype.checkInterfaceSupport = async function (resolver, methodName) {\n // Skip validation for undocumented interface ids (ex: multihash)\n if (!interfaceIds[methodName])\n return;\n var supported = false;\n try {\n supported = await resolver\n .methods\n .supportsInterface(interfaceIds[methodName])\n .call();\n }\n catch (err) {\n console.warn('Could not verify interface of resolver contract at \"' + resolver.options.address + '\". ');\n }\n if (!supported) {\n throw errors.ResolverMethodMissingError(resolver.options.address, methodName);\n }\n};\nmodule.exports = ResolverMethodHandler;\n","/*\nAdapted from ensdomains/ui\nhttps://github.com/ensdomains/ui/blob/3e62e440b53466eeec9dd1c63d73924eefbd88c1/src/utils/contents.js#L1-L85\n\nBSD 2-Clause License\n\nCopyright (c) 2019, Ethereum Name Service\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar contentHash = require('content-hash');\nfunction decode(encoded) {\n var decoded = null;\n var protocolType = null;\n var error = null;\n if (encoded && encoded.error) {\n return {\n protocolType: null,\n decoded: encoded.error\n };\n }\n if (encoded) {\n try {\n decoded = contentHash.decode(encoded);\n var codec = contentHash.getCodec(encoded);\n if (codec === 'ipfs-ns') {\n protocolType = 'ipfs';\n }\n else if (codec === 'swarm-ns') {\n protocolType = 'bzz';\n }\n else if (codec === 'onion') {\n protocolType = 'onion';\n }\n else if (codec === 'onion3') {\n protocolType = 'onion3';\n }\n else {\n decoded = encoded;\n }\n }\n catch (e) {\n error = e.message;\n }\n }\n return {\n protocolType: protocolType,\n decoded: decoded,\n error: error\n };\n}\nfunction encode(text) {\n var content, contentType;\n var encoded = false;\n if (!!text) {\n var matched = text.match(/^(ipfs|bzz|onion|onion3):\\/\\/(.*)/) || text.match(/\\/(ipfs)\\/(.*)/);\n if (matched) {\n contentType = matched[1];\n content = matched[2];\n }\n try {\n if (contentType === 'ipfs') {\n if (content.length >= 4) {\n encoded = '0x' + contentHash.fromIpfs(content);\n }\n }\n else if (contentType === 'bzz') {\n if (content.length >= 4) {\n encoded = '0x' + contentHash.fromSwarm(content);\n }\n }\n else if (contentType === 'onion') {\n if (content.length === 16) {\n encoded = '0x' + contentHash.encode('onion', content);\n }\n }\n else if (contentType === 'onion3') {\n if (content.length === 56) {\n encoded = '0x' + contentHash.encode('onion3', content);\n }\n }\n else {\n throw new Error('Could not encode content hash: unsupported content type');\n }\n }\n catch (err) {\n throw err;\n }\n }\n return encoded;\n}\nmodule.exports = {\n decode: decode,\n encode: encode\n};\n","\"use strict\";\nvar REGISTRY = [\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"resolver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSubnodeOwner\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setTTL\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ttl\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"resolver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setResolver\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOwner\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NewOwner\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"resolver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NewResolver\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"NewTTL\",\n \"type\": \"event\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"resolver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setRecord\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"recordExists\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"resolver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setSubnodeRecord\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n];\nmodule.exports = REGISTRY;\n","\"use strict\";\nvar RESOLVER = [\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"interfaceID\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"contentTypes\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ABI\",\n \"outputs\": [\n {\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setMultihash\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"multihash\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setPubkey\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"content\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"bytes32\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"addr\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setABI\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"string\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"setName\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setContent\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"pubkey\",\n \"outputs\": [\n {\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"addr\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setAddr\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"ensAddr\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"a\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddrChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ContentChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"NameChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ABIChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"PubkeyChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ContenthashChanged\",\n \"type\": \"event\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"contenthash\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setContenthash\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n];\nmodule.exports = RESOLVER;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file iban.js\n *\n * Details: https://github.com/ethereum/wiki/wiki/ICAP:-Inter-exchange-Client-Address-Protocol\n *\n * @author Marek Kotewicz \n * @date 2015\n */\n\"use strict\";\nconst utils = require('web3-utils');\nconst BigNumber = require('bn.js');\nconst leftPad = function (string, bytes) {\n let result = string;\n while (result.length < bytes * 2) {\n result = '0' + result;\n }\n return result;\n};\n/**\n * Prepare an IBAN for mod 97 computation by moving the first 4 chars to the end and transforming the letters to\n * numbers (A = 10, B = 11, ..., Z = 35), as specified in ISO13616.\n *\n * @method iso13616Prepare\n * @param {String} iban the IBAN\n * @returns {String} the prepared IBAN\n */\nconst iso13616Prepare = function (iban) {\n const A = 'A'.charCodeAt(0);\n const Z = 'Z'.charCodeAt(0);\n iban = iban.toUpperCase();\n iban = iban.slice(4) + iban.slice(0, 4);\n return iban.split('').map(function (n) {\n const code = n.charCodeAt(0);\n if (code >= A && code <= Z) {\n // A = 10, B = 11, ... Z = 35\n return code - A + 10;\n }\n else {\n return n;\n }\n }).join('');\n};\n/**\n * Calculates the MOD 97 10 of the passed IBAN as specified in ISO7064.\n *\n * @method mod9710\n * @param {String} iban\n * @returns {Number}\n */\nconst mod9710 = function (iban) {\n let remainder = iban;\n let block;\n while (remainder.length > 2) {\n block = remainder.slice(0, 9);\n remainder = parseInt(block, 10) % 97 + remainder.slice(block.length);\n }\n return parseInt(remainder, 10) % 97;\n};\n/**\n * This prototype should be used to create iban object from iban correct string\n *\n * @param {String} iban\n */\nclass Iban {\n constructor(iban) {\n this._iban = iban;\n }\n /**\n * This method should be used to create an ethereum address from a direct iban address\n *\n * @method toAddress\n * @param {String} iban address\n * @return {String} the ethereum address\n */\n static toAddress(ib) {\n ib = new Iban(ib);\n if (!ib.isDirect()) {\n throw new Error('IBAN is indirect and can\\'t be converted');\n }\n return ib.toAddress();\n }\n /**\n * This method should be used to create iban address from an ethereum address\n *\n * @method toIban\n * @param {String} address\n * @return {String} the IBAN address\n */\n static toIban(address) {\n return Iban.fromAddress(address).toString();\n }\n /**\n * This method should be used to create iban object from an ethereum address\n *\n * @method fromAddress\n * @param {String} address\n * @return {Iban} the IBAN object\n */\n static fromAddress(address) {\n if (!utils.isAddress(address)) {\n throw new Error('Provided address is not a valid address: ' + address);\n }\n address = address.replace('0x', '').replace('0X', '');\n const asBn = new BigNumber(address, 16);\n const base36 = asBn.toString(36);\n const padded = leftPad(base36, 15);\n return Iban.fromBban(padded.toUpperCase());\n }\n /**\n * Convert the passed BBAN to an IBAN for this country specification.\n * Please note that \"generation of the IBAN shall be the exclusive responsibility of the bank/branch servicing the account\".\n * This method implements the preferred algorithm described in http://en.wikipedia.org/wiki/International_Bank_Account_Number#Generating_IBAN_check_digits\n *\n * @method fromBban\n * @param {String} bban the BBAN to convert to IBAN\n * @returns {Iban} the IBAN object\n */\n static fromBban(bban) {\n const countryCode = 'XE';\n const remainder = mod9710(iso13616Prepare(countryCode + '00' + bban));\n const checkDigit = ('0' + (98 - remainder)).slice(-2);\n return new Iban(countryCode + checkDigit + bban);\n }\n /**\n * Should be used to create IBAN object for given institution and identifier\n *\n * @method createIndirect\n * @param {Object} options, required options are \"institution\" and \"identifier\"\n * @return {Iban} the IBAN object\n */\n static createIndirect(options) {\n return Iban.fromBban('ETH' + options.institution + options.identifier);\n }\n /**\n * This method should be used to check if given string is valid iban object\n *\n * @method isValid\n * @param {String} iban string\n * @return {Boolean} true if it is valid IBAN\n */\n static isValid(iban) {\n const i = new Iban(iban);\n return i.isValid();\n }\n ;\n /**\n * Should be called to check if iban is correct\n *\n * @method isValid\n * @returns {Boolean} true if it is, otherwise false\n */\n isValid() {\n return /^XE[0-9]{2}(ETH[0-9A-Z]{13}|[0-9A-Z]{30,31})$/.test(this._iban) &&\n mod9710(iso13616Prepare(this._iban)) === 1;\n }\n ;\n /**\n * Should be called to check if iban number is direct\n *\n * @method isDirect\n * @returns {Boolean} true if it is, otherwise false\n */\n isDirect() {\n return this._iban.length === 34 || this._iban.length === 35;\n }\n ;\n /**\n * Should be called to check if iban number if indirect\n *\n * @method isIndirect\n * @returns {Boolean} true if it is, otherwise false\n */\n isIndirect() {\n return this._iban.length === 20;\n }\n ;\n /**\n * Should be called to get iban checksum\n * Uses the mod-97-10 checksumming protocol (ISO/IEC 7064:2003)\n *\n * @method checksum\n * @returns {String} checksum\n */\n checksum() {\n return this._iban.slice(2, 4);\n }\n ;\n /**\n * Should be called to get institution identifier\n * eg. XREG\n *\n * @method institution\n * @returns {String} institution identifier\n */\n institution() {\n return this.isIndirect() ? this._iban.slice(7, 11) : '';\n }\n ;\n /**\n * Should be called to get client identifier within institution\n * eg. GAVOFYORK\n *\n * @method client\n * @returns {String} client identifier\n */\n client() {\n return this.isIndirect() ? this._iban.slice(11) : '';\n }\n ;\n /**\n * Should be called to get client direct address\n *\n * @method toAddress\n * @returns {String} ethereum address\n */\n toAddress() {\n if (this.isDirect()) {\n const base36 = this._iban.slice(4);\n const asBn = new BigNumber(base36, 36);\n return utils.toChecksumAddress(asBn.toString(16, 20));\n }\n return '';\n }\n ;\n toString() {\n return this._iban;\n }\n ;\n}\nmodule.exports = Iban;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = require('web3-net');\nvar formatters = require('web3-core-helpers').formatters;\nvar Personal = function Personal() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n this.net = new Net(this);\n var defaultAccount = null;\n var defaultBlock = 'latest';\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if (val) {\n defaultAccount = utils.toChecksumAddress(formatters.inputAddressFormatter(val));\n }\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultAccount = defaultAccount;\n });\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultBlock = defaultBlock;\n });\n return val;\n },\n enumerable: true\n });\n var methods = [\n new Method({\n name: 'getAccounts',\n call: 'personal_listAccounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'newAccount',\n call: 'personal_newAccount',\n params: 1,\n inputFormatter: [null],\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'unlockAccount',\n call: 'personal_unlockAccount',\n params: 3,\n inputFormatter: [formatters.inputAddressFormatter, null, null]\n }),\n new Method({\n name: 'lockAccount',\n call: 'personal_lockAccount',\n params: 1,\n inputFormatter: [formatters.inputAddressFormatter]\n }),\n new Method({\n name: 'importRawKey',\n call: 'personal_importRawKey',\n params: 2\n }),\n new Method({\n name: 'sendTransaction',\n call: 'personal_sendTransaction',\n params: 2,\n inputFormatter: [formatters.inputTransactionFormatter, null]\n }),\n new Method({\n name: 'signTransaction',\n call: 'personal_signTransaction',\n params: 2,\n inputFormatter: [formatters.inputTransactionFormatter, null]\n }),\n new Method({\n name: 'sign',\n call: 'personal_sign',\n params: 3,\n inputFormatter: [formatters.inputSignFormatter, formatters.inputAddressFormatter, null]\n }),\n new Method({\n name: 'ecRecover',\n call: 'personal_ecRecover',\n params: 2,\n inputFormatter: [formatters.inputSignFormatter, null]\n })\n ];\n methods.forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager);\n method.defaultBlock = _this.defaultBlock;\n method.defaultAccount = _this.defaultAccount;\n });\n};\ncore.addProviders(Personal);\nmodule.exports = Personal;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file getNetworkType.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar getNetworkType = function (callback) {\n var _this = this, id;\n return this.net.getId()\n .then(function (givenId) {\n id = givenId;\n return _this.getBlock(0);\n })\n .then(function (genesis) {\n var returnValue = 'private';\n if (genesis.hash === '0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3' &&\n id === 1) {\n returnValue = 'main';\n }\n if (genesis.hash === '0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d' &&\n id === 3) {\n returnValue = 'ropsten';\n }\n if (genesis.hash === '0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177' &&\n id === 4) {\n returnValue = 'rinkeby';\n }\n if (genesis.hash === '0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a' &&\n id === 5) {\n returnValue = 'goerli';\n }\n if (genesis.hash === '0xa3c565fc15c7478862d50ccd6561e3c06b24cc509bf388941c25ea985ce32cb9' &&\n id === 42) {\n returnValue = 'kovan';\n }\n if (typeof callback === 'function') {\n callback(null, returnValue);\n }\n return returnValue;\n })\n .catch(function (err) {\n if (typeof callback === 'function') {\n callback(err);\n }\n else {\n throw err;\n }\n });\n};\nmodule.exports = getNetworkType;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar helpers = require('web3-core-helpers');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = require('web3-net');\nvar ENS = require('web3-eth-ens');\nvar Personal = require('web3-eth-personal');\nvar BaseContract = require('web3-eth-contract');\nvar Iban = require('web3-eth-iban');\nvar Accounts = require('web3-eth-accounts');\nvar abi = require('web3-eth-abi');\nvar getNetworkType = require('./getNetworkType.js');\nvar formatter = helpers.formatters;\nvar blockCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? \"eth_getBlockByHash\" : \"eth_getBlockByNumber\";\n};\nvar transactionFromBlockCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getTransactionByBlockHashAndIndex' : 'eth_getTransactionByBlockNumberAndIndex';\n};\nvar uncleCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getUncleByBlockHashAndIndex' : 'eth_getUncleByBlockNumberAndIndex';\n};\nvar getBlockTransactionCountCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getBlockTransactionCountByHash' : 'eth_getBlockTransactionCountByNumber';\n};\nvar uncleCountCall = function (args) {\n return (typeof args[0] === 'string' && args[0].indexOf('0x') === 0) ? 'eth_getUncleCountByBlockHash' : 'eth_getUncleCountByBlockNumber';\n};\nvar Eth = function Eth() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n // overwrite package setRequestManager\n var setRequestManager = this.setRequestManager;\n this.setRequestManager = function (manager) {\n setRequestManager(manager);\n _this.net.setRequestManager(manager);\n _this.personal.setRequestManager(manager);\n _this.accounts.setRequestManager(manager);\n _this.Contract._requestManager = _this._requestManager;\n _this.Contract.currentProvider = _this._provider;\n return true;\n };\n // overwrite setProvider\n var setProvider = this.setProvider;\n this.setProvider = function () {\n setProvider.apply(_this, arguments);\n _this.setRequestManager(_this._requestManager);\n // Set detectedAddress/lastSyncCheck back to null because the provider could be connected to a different chain now\n _this.ens._detectedAddress = null;\n _this.ens._lastSyncCheck = null;\n };\n var handleRevert = false;\n var defaultAccount = null;\n var defaultBlock = 'latest';\n var transactionBlockTimeout = 50;\n var transactionConfirmationBlocks = 24;\n var transactionPollingTimeout = 750;\n var transactionPollingInterval = 1000;\n var blockHeaderTimeout = 10; // 10 seconds\n var maxListenersWarningThreshold = 100;\n var defaultChain, defaultHardfork, defaultCommon;\n Object.defineProperty(this, 'handleRevert', {\n get: function () {\n return handleRevert;\n },\n set: function (val) {\n handleRevert = val;\n // also set on the Contract object\n _this.Contract.handleRevert = handleRevert;\n // update handleRevert\n methods.forEach(function (method) {\n method.handleRevert = handleRevert;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultCommon', {\n get: function () {\n return defaultCommon;\n },\n set: function (val) {\n defaultCommon = val;\n // also set on the Contract object\n _this.Contract.defaultCommon = defaultCommon;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultCommon = defaultCommon;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultHardfork', {\n get: function () {\n return defaultHardfork;\n },\n set: function (val) {\n defaultHardfork = val;\n // also set on the Contract object\n _this.Contract.defaultHardfork = defaultHardfork;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultHardfork = defaultHardfork;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultChain', {\n get: function () {\n return defaultChain;\n },\n set: function (val) {\n defaultChain = val;\n // also set on the Contract object\n _this.Contract.defaultChain = defaultChain;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultChain = defaultChain;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingTimeout', {\n get: function () {\n return transactionPollingTimeout;\n },\n set: function (val) {\n transactionPollingTimeout = val;\n // also set on the Contract object\n _this.Contract.transactionPollingTimeout = transactionPollingTimeout;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionPollingTimeout = transactionPollingTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingInterval', {\n get: function () {\n return transactionPollingInterval;\n },\n set: function (val) {\n transactionPollingInterval = val;\n // also set on the Contract object\n _this.Contract.transactionPollingInterval = transactionPollingInterval;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionPollingInterval = transactionPollingInterval;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionConfirmationBlocks', {\n get: function () {\n return transactionConfirmationBlocks;\n },\n set: function (val) {\n transactionConfirmationBlocks = val;\n // also set on the Contract object\n _this.Contract.transactionConfirmationBlocks = transactionConfirmationBlocks;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionConfirmationBlocks = transactionConfirmationBlocks;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionBlockTimeout', {\n get: function () {\n return transactionBlockTimeout;\n },\n set: function (val) {\n transactionBlockTimeout = val;\n // also set on the Contract object\n _this.Contract.transactionBlockTimeout = transactionBlockTimeout;\n // update defaultBlock\n methods.forEach(function (method) {\n method.transactionBlockTimeout = transactionBlockTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'blockHeaderTimeout', {\n get: function () {\n return blockHeaderTimeout;\n },\n set: function (val) {\n blockHeaderTimeout = val;\n // also set on the Contract object\n _this.Contract.blockHeaderTimeout = blockHeaderTimeout;\n // update defaultBlock\n methods.forEach(function (method) {\n method.blockHeaderTimeout = blockHeaderTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if (val) {\n defaultAccount = utils.toChecksumAddress(formatter.inputAddressFormatter(val));\n }\n // also set on the Contract object\n _this.Contract.defaultAccount = defaultAccount;\n _this.personal.defaultAccount = defaultAccount;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultAccount = defaultAccount;\n });\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n // also set on the Contract object\n _this.Contract.defaultBlock = defaultBlock;\n _this.personal.defaultBlock = defaultBlock;\n // update defaultBlock\n methods.forEach(function (method) {\n method.defaultBlock = defaultBlock;\n });\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'maxListenersWarningThreshold', {\n get: function () {\n return maxListenersWarningThreshold;\n },\n set: function (val) {\n if (_this.currentProvider && _this.currentProvider.setMaxListeners) {\n maxListenersWarningThreshold = val;\n _this.currentProvider.setMaxListeners(val);\n }\n },\n enumerable: true\n });\n this.clearSubscriptions = _this._requestManager.clearSubscriptions.bind(_this._requestManager);\n this.removeSubscriptionById = _this._requestManager.removeSubscription.bind(_this._requestManager);\n // add net\n this.net = new Net(this);\n // add chain detection\n this.net.getNetworkType = getNetworkType.bind(this);\n // add accounts\n this.accounts = new Accounts(this);\n // add personal\n this.personal = new Personal(this);\n this.personal.defaultAccount = this.defaultAccount;\n // set warnings threshold\n this.maxListenersWarningThreshold = maxListenersWarningThreshold;\n // create a proxy Contract type for this instance, as a Contract's provider\n // is stored as a class member rather than an instance variable. If we do\n // not create this proxy type, changing the provider in one instance of\n // web3-eth would subsequently change the provider for _all_ contract\n // instances!\n var self = this;\n var Contract = function Contract() {\n BaseContract.apply(this, arguments);\n // when Eth.setProvider is called, call packageInit\n // on all contract instances instantiated via this Eth\n // instances. This will update the currentProvider for\n // the contract instances\n var _this = this;\n var setProvider = self.setProvider;\n self.setProvider = function () {\n setProvider.apply(self, arguments);\n core.packageInit(_this, [self]);\n };\n };\n Contract.setProvider = function () {\n BaseContract.setProvider.apply(this, arguments);\n };\n // make our proxy Contract inherit from web3-eth-contract so that it has all\n // the right functionality and so that instanceof and friends work properly\n Contract.prototype = Object.create(BaseContract.prototype);\n Contract.prototype.constructor = Contract;\n // add contract\n this.Contract = Contract;\n this.Contract.defaultAccount = this.defaultAccount;\n this.Contract.defaultBlock = this.defaultBlock;\n this.Contract.transactionBlockTimeout = this.transactionBlockTimeout;\n this.Contract.transactionConfirmationBlocks = this.transactionConfirmationBlocks;\n this.Contract.transactionPollingTimeout = this.transactionPollingTimeout;\n this.Contract.transactionPollingInterval = this.transactionPollingInterval;\n this.Contract.blockHeaderTimeout = this.blockHeaderTimeout;\n this.Contract.handleRevert = this.handleRevert;\n this.Contract._requestManager = this._requestManager;\n this.Contract._ethAccounts = this.accounts;\n this.Contract.currentProvider = this._requestManager.provider;\n // add IBAN\n this.Iban = Iban;\n // add ABI\n this.abi = abi;\n // add ENS\n this.ens = new ENS(this);\n var methods = [\n new Method({\n name: 'getNodeInfo',\n call: 'web3_clientVersion'\n }),\n new Method({\n name: 'getProtocolVersion',\n call: 'eth_protocolVersion',\n params: 0\n }),\n new Method({\n name: 'getCoinbase',\n call: 'eth_coinbase',\n params: 0\n }),\n new Method({\n name: 'isMining',\n call: 'eth_mining',\n params: 0\n }),\n new Method({\n name: 'getHashrate',\n call: 'eth_hashrate',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'isSyncing',\n call: 'eth_syncing',\n params: 0,\n outputFormatter: formatter.outputSyncingFormatter\n }),\n new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0,\n outputFormatter: formatter.outputBigNumberFormatter\n }),\n new Method({\n name: 'getFeeHistory',\n call: 'eth_feeHistory',\n params: 3,\n inputFormatter: [utils.numberToHex, formatter.inputBlockNumberFormatter, null]\n }),\n new Method({\n name: 'getAccounts',\n call: 'eth_accounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'getBlockNumber',\n call: 'eth_blockNumber',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getBalance',\n call: 'eth_getBalance',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: formatter.outputBigNumberFormatter\n }),\n new Method({\n name: 'getStorageAt',\n call: 'eth_getStorageAt',\n params: 3,\n inputFormatter: [formatter.inputAddressFormatter, utils.numberToHex, formatter.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getCode',\n call: 'eth_getCode',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getBlock',\n call: blockCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, function (val) { return !!val; }],\n outputFormatter: formatter.outputBlockFormatter\n }),\n new Method({\n name: 'getUncle',\n call: uncleCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, utils.numberToHex],\n outputFormatter: formatter.outputBlockFormatter,\n }),\n new Method({\n name: 'getBlockTransactionCount',\n call: getBlockTransactionCountCall,\n params: 1,\n inputFormatter: [formatter.inputBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getBlockUncleCount',\n call: uncleCountCall,\n params: 1,\n inputFormatter: [formatter.inputBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getTransaction',\n call: 'eth_getTransactionByHash',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'getTransactionFromBlock',\n call: transactionFromBlockCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, utils.numberToHex],\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'getTransactionReceipt',\n call: 'eth_getTransactionReceipt',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatter.outputTransactionReceiptFormatter\n }),\n new Method({\n name: 'getTransactionCount',\n call: 'eth_getTransactionCount',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'sendSignedTransaction',\n call: 'eth_sendRawTransaction',\n params: 1,\n inputFormatter: [null],\n abiCoder: abi\n }),\n new Method({\n name: 'signTransaction',\n call: 'eth_signTransaction',\n params: 1,\n inputFormatter: [formatter.inputTransactionFormatter]\n }),\n new Method({\n name: 'sendTransaction',\n call: 'eth_sendTransaction',\n params: 1,\n inputFormatter: [formatter.inputTransactionFormatter],\n abiCoder: abi\n }),\n new Method({\n name: 'sign',\n call: 'eth_sign',\n params: 2,\n inputFormatter: [formatter.inputSignFormatter, formatter.inputAddressFormatter],\n transformPayload: function (payload) {\n payload.params.reverse();\n return payload;\n }\n }),\n new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n inputFormatter: [formatter.inputCallFormatter, formatter.inputDefaultBlockNumberFormatter],\n abiCoder: abi\n }),\n new Method({\n name: 'estimateGas',\n call: 'eth_estimateGas',\n params: 1,\n inputFormatter: [formatter.inputCallFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'submitWork',\n call: 'eth_submitWork',\n params: 3\n }),\n new Method({\n name: 'getWork',\n call: 'eth_getWork',\n params: 0\n }),\n new Method({\n name: 'getPastLogs',\n call: 'eth_getLogs',\n params: 1,\n inputFormatter: [formatter.inputLogFormatter],\n outputFormatter: formatter.outputLogFormatter\n }),\n new Method({\n name: 'getChainId',\n call: 'eth_chainId',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'requestAccounts',\n call: 'eth_requestAccounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'getProof',\n call: 'eth_getProof',\n params: 3,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputStorageKeysFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: formatter.outputProofFormatter\n }),\n new Method({\n name: 'getPendingTransactions',\n call: 'eth_pendingTransactions',\n params: 0,\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'createAccessList',\n call: 'eth_createAccessList',\n params: 2,\n inputFormatter: [formatter.inputTransactionFormatter, formatter.inputDefaultBlockNumberFormatter],\n }),\n // subscriptions\n new Subscriptions({\n name: 'subscribe',\n type: 'eth',\n subscriptions: {\n 'newBlockHeaders': {\n // TODO rename on RPC side?\n subscriptionName: 'newHeads',\n params: 0,\n outputFormatter: formatter.outputBlockFormatter\n },\n 'pendingTransactions': {\n subscriptionName: 'newPendingTransactions',\n params: 0\n },\n 'logs': {\n params: 1,\n inputFormatter: [formatter.inputLogFormatter],\n outputFormatter: formatter.outputLogFormatter,\n // DUBLICATE, also in web3-eth-contract\n subscriptionHandler: function (output) {\n if (output.removed) {\n this.emit('changed', output);\n }\n else {\n this.emit('data', output);\n }\n if (typeof this.callback === 'function') {\n this.callback(null, output, this);\n }\n }\n },\n 'syncing': {\n params: 0,\n outputFormatter: formatter.outputSyncingFormatter,\n subscriptionHandler: function (output) {\n var _this = this;\n // fire TRUE at start\n if (this._isSyncing !== true) {\n this._isSyncing = true;\n this.emit('changed', _this._isSyncing);\n if (typeof this.callback === 'function') {\n this.callback(null, _this._isSyncing, this);\n }\n setTimeout(function () {\n _this.emit('data', output);\n if (typeof _this.callback === 'function') {\n _this.callback(null, output, _this);\n }\n }, 0);\n // fire sync status\n }\n else {\n this.emit('data', output);\n if (typeof _this.callback === 'function') {\n this.callback(null, output, this);\n }\n // wait for some time before fireing the FALSE\n clearTimeout(this._isSyncingTimeout);\n this._isSyncingTimeout = setTimeout(function () {\n if (output.currentBlock > output.highestBlock - 200) {\n _this._isSyncing = false;\n _this.emit('changed', _this._isSyncing);\n if (typeof _this.callback === 'function') {\n _this.callback(null, _this._isSyncing, _this);\n }\n }\n }, 500);\n }\n }\n }\n }\n })\n ];\n methods.forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager, _this.accounts); // second param is the eth.accounts module (necessary for signing transactions locally)\n method.defaultBlock = _this.defaultBlock;\n method.defaultAccount = _this.defaultAccount;\n method.transactionBlockTimeout = _this.transactionBlockTimeout;\n method.transactionConfirmationBlocks = _this.transactionConfirmationBlocks;\n method.transactionPollingTimeout = _this.transactionPollingTimeout;\n method.transactionPollingInterval = _this.transactionPollingInterval;\n method.handleRevert = _this.handleRevert;\n });\n};\n// Adds the static givenProvider and providers property to the Eth module\ncore.addProviders(Eth);\nmodule.exports = Eth;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = function () {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n [\n new Method({\n name: 'getId',\n call: 'net_version',\n params: 0,\n outputFormatter: parseInt\n }),\n new Method({\n name: 'isListening',\n call: 'net_listening',\n params: 0\n }),\n new Method({\n name: 'getPeerCount',\n call: 'net_peerCount',\n params: 0,\n outputFormatter: utils.hexToNumber\n })\n ].forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager);\n });\n};\ncore.addProviders(Net);\nmodule.exports = Net;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/** @file httpprovider.js\n * @authors:\n * Marek Kotewicz \n * Marian Oancea\n * Fabian Vogelsteller \n * AyanamiTech \n * @date 2015\n */\nvar errors = require('web3-core-helpers').errors;\nvar fetch = require('cross-fetch');\nvar http = require('http');\nvar https = require('https');\n// Apply missing polyfill for IE\nrequire('es6-promise').polyfill();\n// import abortController if abortController is not included in node\nif (typeof global !== \"undefined\" && !global.AbortController) {\n require('abortcontroller-polyfill/dist/polyfill-patch-fetch');\n}\n/**\n * HttpProvider should be used to send rpc calls over http\n */\nvar HttpProvider = function HttpProvider(host, options) {\n options = options || {};\n this.withCredentials = options.withCredentials;\n this.timeout = options.timeout || 0;\n this.headers = options.headers;\n this.agent = options.agent;\n this.forceGlobalFetch = options.forceGlobalFetch || false;\n this.connected = false;\n // keepAlive is true unless explicitly set to false\n const keepAlive = options.keepAlive !== false;\n this.host = host || 'http://localhost:8545';\n if (!this.agent) {\n if (this.host.substring(0, 5) === \"https\") {\n this.httpsAgent = new https.Agent({ keepAlive });\n }\n else {\n this.httpAgent = new http.Agent({ keepAlive });\n }\n }\n};\n/**\n * Should be used to make async request\n *\n * @method send\n * @param {Object} payload\n * @param {Function} callback triggered on end with (err, result)\n */\nHttpProvider.prototype.send = function (payload, callback) {\n var options = {\n method: 'POST',\n body: JSON.stringify(payload)\n };\n var headers = {};\n var controller;\n var fetchFunc = this.forceGlobalFetch ? globalThis.fetch : fetch;\n if (typeof AbortController !== 'undefined') {\n controller = new AbortController();\n }\n else if (typeof window !== 'undefined' && typeof window.AbortController !== 'undefined') {\n // Some chrome version doesn't recognize new AbortController(); so we are using it from window instead\n // https://stackoverflow.com/questions/55718778/why-abortcontroller-is-not-defined\n controller = new window.AbortController();\n }\n if (typeof controller !== 'undefined') {\n options.signal = controller.signal;\n }\n // the current runtime is node\n if (typeof XMLHttpRequest === 'undefined') {\n // https://github.com/node-fetch/node-fetch#custom-agent\n var agents = { httpsAgent: this.httpsAgent, httpAgent: this.httpAgent };\n if (this.agent) {\n agents.httpsAgent = this.agent.https;\n agents.httpAgent = this.agent.http;\n }\n if (this.host.substring(0, 5) === \"https\") {\n options.agent = agents.httpsAgent;\n }\n else {\n options.agent = agents.httpAgent;\n }\n }\n if (this.headers) {\n this.headers.forEach(function (header) {\n headers[header.name] = header.value;\n });\n }\n // Default headers\n if (!headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n // As the Fetch API supports the credentials as following options 'include', 'omit', 'same-origin'\n // https://developer.mozilla.org/en-US/docs/Web/API/fetch#credentials\n // To avoid breaking change in 1.x we override this value based on boolean option.\n if (this.withCredentials) {\n options.credentials = 'include';\n }\n else {\n options.credentials = 'omit';\n }\n options.headers = headers;\n if (this.timeout > 0 && typeof controller !== 'undefined') {\n this.timeoutId = setTimeout(function () {\n controller.abort();\n }, this.timeout);\n }\n var success = function (response) {\n if (this.timeoutId !== undefined) {\n clearTimeout(this.timeoutId);\n }\n // Response is a stream data so should be awaited for json response\n response\n .json()\n .then(function (data) {\n callback(null, data);\n }, function () {\n response\n .text()\n .then(function (text) {\n callback(errors.InvalidResponse(text));\n }, function () {\n callback(errors.InvalidResponse(\"\"));\n });\n });\n };\n var failed = function (error) {\n if (this.timeoutId !== undefined) {\n clearTimeout(this.timeoutId);\n }\n if (error.name === 'AbortError') {\n callback(errors.ConnectionTimeout(this.timeout));\n return;\n }\n callback(errors.InvalidConnection(this.host, error));\n };\n fetchFunc(this.host, options)\n .then(success.bind(this), failed.bind(this));\n};\nHttpProvider.prototype.disconnect = function () {\n //NO OP\n};\n/**\n * Returns the desired boolean.\n *\n * @method supportsSubscriptions\n * @returns {boolean}\n */\nHttpProvider.prototype.supportsSubscriptions = function () {\n return false;\n};\nmodule.exports = HttpProvider;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/** @file index.js\n * @authors:\n * Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar errors = require('web3-core-helpers').errors;\nvar oboe = require('oboe');\nvar IpcProvider = function IpcProvider(path, net) {\n var _this = this;\n this.responseCallbacks = {};\n this.notificationCallbacks = [];\n this.path = path;\n this.connected = false;\n this.connection = net.connect({ path: this.path });\n this.addDefaultEvents();\n // LISTEN FOR CONNECTION RESPONSES\n var callback = function (result) {\n /*jshint maxcomplexity: 6 */\n var id = null;\n // get the id which matches the returned id\n if (Array.isArray(result)) {\n result.forEach(function (load) {\n if (_this.responseCallbacks[load.id])\n id = load.id;\n });\n }\n else {\n id = result.id;\n }\n // notification\n if (!id && result.method.indexOf('_subscription') !== -1) {\n _this.notificationCallbacks.forEach(function (callback) {\n if (typeof callback === 'function')\n callback(result);\n });\n // fire the callback\n }\n else if (_this.responseCallbacks[id]) {\n _this.responseCallbacks[id](null, result);\n delete _this.responseCallbacks[id];\n }\n };\n // use oboe.js for Sockets\n if (net.constructor.name === 'Socket') {\n oboe(this.connection)\n .done(callback);\n }\n else {\n this.connection.on('data', function (data) {\n _this._parseResponse(data.toString()).forEach(callback);\n });\n }\n};\n/**\nWill add the error and end event to timeout existing calls\n\n@method addDefaultEvents\n*/\nIpcProvider.prototype.addDefaultEvents = function () {\n var _this = this;\n this.connection.on('connect', function () {\n _this.connected = true;\n });\n this.connection.on('close', function () {\n _this.connected = false;\n });\n this.connection.on('error', function () {\n _this._timeout();\n });\n this.connection.on('end', function () {\n _this._timeout();\n });\n this.connection.on('timeout', function () {\n _this._timeout();\n });\n};\n/**\n Will parse the response and make an array out of it.\n\n NOTE, this exists for backwards compatibility reasons.\n\n @method _parseResponse\n @param {String} data\n */\nIpcProvider.prototype._parseResponse = function (data) {\n var _this = this, returnValues = [];\n // DE-CHUNKER\n var dechunkedData = data\n .replace(/\\}[\\n\\r]?\\{/g, '}|--|{') // }{\n .replace(/\\}\\][\\n\\r]?\\[\\{/g, '}]|--|[{') // }][{\n .replace(/\\}[\\n\\r]?\\[\\{/g, '}|--|[{') // }[{\n .replace(/\\}\\][\\n\\r]?\\{/g, '}]|--|{') // }]{\n .split('|--|');\n dechunkedData.forEach(function (data) {\n // prepend the last chunk\n if (_this.lastChunk)\n data = _this.lastChunk + data;\n var result = null;\n try {\n result = JSON.parse(data);\n }\n catch (e) {\n _this.lastChunk = data;\n // start timeout to cancel all requests\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunkTimeout = setTimeout(function () {\n _this._timeout();\n throw errors.InvalidResponse(data);\n }, 1000 * 15);\n return;\n }\n // cancel timeout and set chunk to null\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunk = null;\n if (result)\n returnValues.push(result);\n });\n return returnValues;\n};\n/**\nGet the adds a callback to the responseCallbacks object,\nwhich will be called if a response matching the response Id will arrive.\n\n@method _addResponseCallback\n*/\nIpcProvider.prototype._addResponseCallback = function (payload, callback) {\n var id = payload.id || payload[0].id;\n var method = payload.method || payload[0].method;\n this.responseCallbacks[id] = callback;\n this.responseCallbacks[id].method = method;\n};\n/**\nTimeout all requests when the end/error event is fired\n\n@method _timeout\n*/\nIpcProvider.prototype._timeout = function () {\n for (var key in this.responseCallbacks) {\n if (this.responseCallbacks.hasOwnProperty(key)) {\n this.responseCallbacks[key](errors.InvalidConnection('on IPC'));\n delete this.responseCallbacks[key];\n }\n }\n};\n/**\n Try to reconnect\n\n @method reconnect\n */\nIpcProvider.prototype.reconnect = function () {\n this.connection.connect({ path: this.path });\n};\nIpcProvider.prototype.send = function (payload, callback) {\n // try reconnect, when connection is gone\n if (!this.connection.writable)\n this.connection.connect({ path: this.path });\n this.connection.write(JSON.stringify(payload));\n this._addResponseCallback(payload, callback);\n};\n/**\nSubscribes to provider events.provider\n\n@method on\n@param {String} type 'notification', 'connect', 'error', 'end' or 'data'\n@param {Function} callback the callback to call\n*/\nIpcProvider.prototype.on = function (type, callback) {\n if (typeof callback !== 'function')\n throw new Error('The second parameter callback must be a function.');\n switch (type) {\n case 'data':\n this.notificationCallbacks.push(callback);\n break;\n // adds error, end, timeout, connect\n default:\n this.connection.on(type, callback);\n break;\n }\n};\n/**\n Subscribes to provider events.provider\n\n @method on\n @param {String} type 'connect', 'error', 'end' or 'data'\n @param {Function} callback the callback to call\n */\nIpcProvider.prototype.once = function (type, callback) {\n if (typeof callback !== 'function')\n throw new Error('The second parameter callback must be a function.');\n this.connection.once(type, callback);\n};\n/**\nRemoves event listener\n\n@method removeListener\n@param {String} type 'data', 'connect', 'error', 'end' or 'data'\n@param {Function} callback the callback to call\n*/\nIpcProvider.prototype.removeListener = function (type, callback) {\n var _this = this;\n switch (type) {\n case 'data':\n this.notificationCallbacks.forEach(function (cb, index) {\n if (cb === callback)\n _this.notificationCallbacks.splice(index, 1);\n });\n break;\n default:\n this.connection.removeListener(type, callback);\n break;\n }\n};\n/**\nRemoves all event listeners\n\n@method removeAllListeners\n@param {String} type 'data', 'connect', 'error', 'end' or 'data'\n*/\nIpcProvider.prototype.removeAllListeners = function (type) {\n switch (type) {\n case 'data':\n this.notificationCallbacks = [];\n break;\n default:\n this.connection.removeAllListeners(type);\n break;\n }\n};\n/**\nResets the providers, clears all callbacks\n\n@method reset\n*/\nIpcProvider.prototype.reset = function () {\n this._timeout();\n this.notificationCallbacks = [];\n this.connection.removeAllListeners('error');\n this.connection.removeAllListeners('end');\n this.connection.removeAllListeners('timeout');\n this.addDefaultEvents();\n};\n/**\n * Returns the desired boolean.\n *\n * @method supportsSubscriptions\n * @returns {boolean}\n */\nIpcProvider.prototype.supportsSubscriptions = function () {\n return true;\n};\nmodule.exports = IpcProvider;\n","var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar isRN = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\nvar _btoa = null;\nvar helpers = null;\nif (isNode || isRN) {\n _btoa = function (str) {\n return Buffer.from(str).toString('base64');\n };\n var url = require('url');\n if (url.URL) {\n // Use the new Node 6+ API for parsing URLs that supports username/password\n var newURL = url.URL;\n helpers = function (url) {\n return new newURL(url);\n };\n }\n else {\n // Web3 supports Node.js 5, so fall back to the legacy URL API if necessary\n helpers = require('url').parse;\n }\n}\nelse {\n _btoa = btoa.bind(typeof globalThis === 'object' ? globalThis : self);\n helpers = function (url) {\n return new URL(url);\n };\n}\nmodule.exports = {\n parseURL: helpers,\n btoa: _btoa\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file WebsocketProvider.js\n * @authors: Samuel Furter , Fabian Vogelsteller \n * @date 2019\n */\n'use strict';\nvar EventEmitter = require('eventemitter3');\nvar helpers = require('./helpers.js');\nvar errors = require('web3-core-helpers').errors;\nvar Ws = require('websocket').w3cwebsocket;\n/**\n * @param {string} url\n * @param {Object} options\n *\n * @constructor\n */\nvar WebsocketProvider = function WebsocketProvider(url, options) {\n EventEmitter.call(this);\n options = options || {};\n this.url = url;\n this._customTimeout = options.timeout || 1000 * 15;\n this.headers = options.headers || {};\n this.protocol = options.protocol || undefined;\n this.reconnectOptions = Object.assign({\n auto: false,\n delay: 5000,\n maxAttempts: false,\n onTimeout: false\n }, options.reconnect);\n this.clientConfig = options.clientConfig || undefined; // Allow a custom client configuration\n this.requestOptions = options.requestOptions || undefined; // Allow a custom request options (https://github.com/theturtle32/WebSocket-Node/blob/master/docs/WebSocketClient.md#connectrequesturl-requestedprotocols-origin-headers-requestoptions)\n this.DATA = 'data';\n this.CLOSE = 'close';\n this.ERROR = 'error';\n this.CONNECT = 'connect';\n this.RECONNECT = 'reconnect';\n this.connection = null;\n this.requestQueue = new Map();\n this.responseQueue = new Map();\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n this.connectFailedDescription = null;\n // The w3cwebsocket implementation does not support Basic Auth\n // username/password in the URL. So generate the basic auth header, and\n // pass through with any additional headers supplied in constructor\n var parsedURL = helpers.parseURL(url);\n if (parsedURL.username && parsedURL.password) {\n this.headers.authorization = 'Basic ' + helpers.btoa(parsedURL.username + ':' + parsedURL.password);\n }\n // When all node core implementations that do not have the\n // WHATWG compatible URL parser go out of service this line can be removed.\n if (parsedURL.auth) {\n this.headers.authorization = 'Basic ' + helpers.btoa(parsedURL.auth);\n }\n // make property `connected` which will return the current connection status\n Object.defineProperty(this, 'connected', {\n get: function () {\n return this.connection && this.connection.readyState === this.connection.OPEN;\n },\n enumerable: true\n });\n this.connect();\n};\n// Inherit from EventEmitter\nWebsocketProvider.prototype = Object.create(EventEmitter.prototype);\nWebsocketProvider.prototype.constructor = WebsocketProvider;\n/**\n * Connects to the configured node\n *\n * @method connect\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.connect = function () {\n this.connection = new Ws(this.url, this.protocol, undefined, this.headers, this.requestOptions, this.clientConfig);\n this._addSocketListeners();\n};\n/**\n * Listener for the `data` event of the underlying WebSocket object\n *\n * @method _onMessage\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._onMessage = function (e) {\n var _this = this;\n this._parseResponse((typeof e.data === 'string') ? e.data : '').forEach(function (result) {\n if (result.method && result.method.indexOf('_subscription') !== -1) {\n _this.emit(_this.DATA, result);\n return;\n }\n var id = result.id;\n // get the id which matches the returned id\n if (Array.isArray(result)) {\n id = result[0].id;\n }\n if (_this.responseQueue.has(id)) {\n if (_this.responseQueue.get(id).callback !== undefined) {\n _this.responseQueue.get(id).callback(false, result);\n }\n _this.responseQueue.delete(id);\n }\n });\n};\n/**\n * Listener for the `open` event of the underlying WebSocket object\n *\n * @method _onConnect\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._onConnect = function () {\n this.emit(this.CONNECT);\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n if (this.requestQueue.size > 0) {\n var _this = this;\n this.requestQueue.forEach(function (request, key) {\n _this.send(request.payload, request.callback);\n _this.requestQueue.delete(key);\n });\n }\n};\nWebsocketProvider.prototype._onConnectFailed = function (event) {\n this.connectFailedDescription = event.toString().split('\\n')[0];\n var _this = this;\n if (this.connectFailedDescription) {\n event.description = this.connectFailedDescription;\n this.connectFailedDescription = null; // clean the message, so it won't be used in the next connection\n }\n event.code = 1006;\n event.reason = 'connection failed';\n if (this.reconnectOptions.auto && (![1000, 1001].includes(event.code) || event.wasClean === false)) {\n this.reconnect();\n return;\n }\n this.emit(this.ERROR, event);\n if (this.requestQueue.size > 0) {\n this.requestQueue.forEach(function (request, key) {\n request.callback(errors.ConnectionNotOpenError(event));\n _this.requestQueue.delete(key);\n });\n }\n if (this.responseQueue.size > 0) {\n this.responseQueue.forEach(function (request, key) {\n request.callback(errors.InvalidConnection('on WS', event));\n _this.responseQueue.delete(key);\n });\n }\n //clean connection on our own\n if (this.connection._connection) {\n this.connection._connection.removeAllListeners();\n }\n this.connection._client.removeAllListeners();\n this.connection._readyState = 3; // set readyState to CLOSED\n this.emit(this.CLOSE, event);\n};\n/**\n * Listener for the `close` event of the underlying WebSocket object\n *\n * @method _onClose\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._onClose = function (event) {\n var _this = this;\n if (this.reconnectOptions.auto && (![1000, 1001].includes(event.code) || event.wasClean === false)) {\n this.reconnect();\n return;\n }\n this.emit(this.CLOSE, event);\n if (this.requestQueue.size > 0) {\n this.requestQueue.forEach(function (request, key) {\n request.callback(errors.ConnectionNotOpenError(event));\n _this.requestQueue.delete(key);\n });\n }\n if (this.responseQueue.size > 0) {\n this.responseQueue.forEach(function (request, key) {\n request.callback(errors.InvalidConnection('on WS', event));\n _this.responseQueue.delete(key);\n });\n }\n this._removeSocketListeners();\n this.removeAllListeners();\n};\n/**\n * Will add the required socket listeners\n *\n * @method _addSocketListeners\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._addSocketListeners = function () {\n this.connection.addEventListener('message', this._onMessage.bind(this));\n this.connection.addEventListener('open', this._onConnect.bind(this));\n this.connection.addEventListener('close', this._onClose.bind(this));\n if (this.connection._client) {\n this.connection._client.removeAllListeners('connectFailed'); //Override the internal listeners, so they don't trigger a `close` event. We want to trigger `_onClose` manually with a description.\n this.connection._client.on('connectFailed', this._onConnectFailed.bind(this));\n }\n};\n/**\n * Will remove all socket listeners\n *\n * @method _removeSocketListeners\n *\n * @returns {void}\n */\nWebsocketProvider.prototype._removeSocketListeners = function () {\n this.connection.removeEventListener('message', this._onMessage);\n this.connection.removeEventListener('open', this._onConnect);\n this.connection.removeEventListener('close', this._onClose);\n if (this.connection._connection)\n this.connection._client.removeListener('connectFailed', this._onConnectFailed);\n};\n/**\n * Will parse the response and make an array out of it.\n *\n * @method _parseResponse\n *\n * @param {String} data\n *\n * @returns {Array}\n */\nWebsocketProvider.prototype._parseResponse = function (data) {\n var _this = this, returnValues = [];\n // DE-CHUNKER\n var dechunkedData = data\n .replace(/\\}[\\n\\r]?\\{/g, '}|--|{') // }{\n .replace(/\\}\\][\\n\\r]?\\[\\{/g, '}]|--|[{') // }][{\n .replace(/\\}[\\n\\r]?\\[\\{/g, '}|--|[{') // }[{\n .replace(/\\}\\][\\n\\r]?\\{/g, '}]|--|{') // }]{\n .split('|--|');\n dechunkedData.forEach(function (data) {\n // prepend the last chunk\n if (_this.lastChunk)\n data = _this.lastChunk + data;\n var result = null;\n try {\n result = JSON.parse(data);\n }\n catch (e) {\n _this.lastChunk = data;\n // start timeout to cancel all requests\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunkTimeout = setTimeout(function () {\n if (_this.reconnectOptions.auto && _this.reconnectOptions.onTimeout) {\n _this.reconnect();\n return;\n }\n _this.emit(_this.ERROR, errors.ConnectionTimeout(_this._customTimeout));\n if (_this.requestQueue.size > 0) {\n _this.requestQueue.forEach(function (request, key) {\n request.callback(errors.ConnectionTimeout(_this._customTimeout));\n _this.requestQueue.delete(key);\n });\n }\n }, _this._customTimeout);\n return;\n }\n // cancel timeout and set chunk to null\n clearTimeout(_this.lastChunkTimeout);\n _this.lastChunk = null;\n if (result)\n returnValues.push(result);\n });\n return returnValues;\n};\n/**\n * Does check if the provider is connecting and will add it to the queue or will send it directly\n *\n * @method send\n *\n * @param {Object} payload\n * @param {Function} callback\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.send = function (payload, callback) {\n var _this = this;\n var id = payload.id;\n var request = { payload: payload, callback: callback };\n if (Array.isArray(payload)) {\n id = payload[0].id;\n }\n if (this.connection.readyState === this.connection.CONNECTING || this.reconnecting) {\n this.requestQueue.set(id, request);\n return;\n }\n if (this.connection.readyState !== this.connection.OPEN) {\n this.requestQueue.delete(id);\n this.emit(this.ERROR, errors.ConnectionNotOpenError());\n request.callback(errors.ConnectionNotOpenError());\n return;\n }\n this.responseQueue.set(id, request);\n this.requestQueue.delete(id);\n try {\n this.connection.send(JSON.stringify(request.payload));\n }\n catch (error) {\n request.callback(error);\n _this.responseQueue.delete(id);\n }\n};\n/**\n * Resets the providers, clears all callbacks\n *\n * @method reset\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.reset = function () {\n this.responseQueue.clear();\n this.requestQueue.clear();\n this.removeAllListeners();\n this._removeSocketListeners();\n this._addSocketListeners();\n};\n/**\n * Closes the current connection with the given code and reason arguments\n *\n * @method disconnect\n *\n * @param {number} code\n * @param {string} reason\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.disconnect = function (code, reason) {\n this._removeSocketListeners();\n this.connection.close(code || 1000, reason);\n};\n/**\n * Returns the desired boolean.\n *\n * @method supportsSubscriptions\n *\n * @returns {boolean}\n */\nWebsocketProvider.prototype.supportsSubscriptions = function () {\n return true;\n};\n/**\n * Removes the listeners and reconnects to the socket.\n *\n * @method reconnect\n *\n * @returns {void}\n */\nWebsocketProvider.prototype.reconnect = function () {\n var _this = this;\n this.reconnecting = true;\n if (this.responseQueue.size > 0) {\n this.responseQueue.forEach(function (request, key) {\n try {\n _this.responseQueue.delete(key);\n request.callback(errors.PendingRequestsOnReconnectingError());\n }\n catch (e) {\n console.error(\"Error encountered in reconnect: \", e);\n }\n });\n }\n if (!this.reconnectOptions.maxAttempts ||\n this.reconnectAttempts < this.reconnectOptions.maxAttempts) {\n setTimeout(function () {\n _this.reconnectAttempts++;\n _this._removeSocketListeners();\n _this.emit(_this.RECONNECT, _this.reconnectAttempts);\n _this.connect();\n }, this.reconnectOptions.delay);\n return;\n }\n this.emit(this.ERROR, errors.MaxAttemptsReachedOnReconnectingError());\n this.reconnecting = false;\n if (this.requestQueue.size > 0) {\n this.requestQueue.forEach(function (request, key) {\n request.callback(errors.MaxAttemptsReachedOnReconnectingError());\n _this.requestQueue.delete(key);\n });\n }\n};\nmodule.exports = WebsocketProvider;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\"use strict\";\nvar core = require('web3-core');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar Method = require('web3-core-method');\n// var formatters = require('web3-core-helpers').formatters;\nvar Net = require('web3-net');\nvar Shh = function Shh() {\n var _this = this;\n // sets _requestmanager\n core.packageInit(this, arguments);\n // overwrite package setRequestManager\n var setRequestManager = this.setRequestManager;\n this.setRequestManager = function (manager) {\n setRequestManager(manager);\n _this.net.setRequestManager(manager);\n return true;\n };\n // overwrite setProvider\n var setProvider = this.setProvider;\n this.setProvider = function () {\n setProvider.apply(_this, arguments);\n _this.setRequestManager(_this._requestManager);\n };\n this.net = new Net(this);\n [\n new Subscriptions({\n name: 'subscribe',\n type: 'shh',\n subscriptions: {\n 'messages': {\n params: 1\n // inputFormatter: [formatters.inputPostFormatter],\n // outputFormatter: formatters.outputPostFormatter\n }\n }\n }),\n new Method({\n name: 'getVersion',\n call: 'shh_version',\n params: 0\n }),\n new Method({\n name: 'getInfo',\n call: 'shh_info',\n params: 0\n }),\n new Method({\n name: 'setMaxMessageSize',\n call: 'shh_setMaxMessageSize',\n params: 1\n }),\n new Method({\n name: 'setMinPoW',\n call: 'shh_setMinPoW',\n params: 1\n }),\n new Method({\n name: 'markTrustedPeer',\n call: 'shh_markTrustedPeer',\n params: 1\n }),\n new Method({\n name: 'newKeyPair',\n call: 'shh_newKeyPair',\n params: 0\n }),\n new Method({\n name: 'addPrivateKey',\n call: 'shh_addPrivateKey',\n params: 1\n }),\n new Method({\n name: 'deleteKeyPair',\n call: 'shh_deleteKeyPair',\n params: 1\n }),\n new Method({\n name: 'hasKeyPair',\n call: 'shh_hasKeyPair',\n params: 1\n }),\n new Method({\n name: 'getPublicKey',\n call: 'shh_getPublicKey',\n params: 1\n }),\n new Method({\n name: 'getPrivateKey',\n call: 'shh_getPrivateKey',\n params: 1\n }),\n new Method({\n name: 'newSymKey',\n call: 'shh_newSymKey',\n params: 0\n }),\n new Method({\n name: 'addSymKey',\n call: 'shh_addSymKey',\n params: 1\n }),\n new Method({\n name: 'generateSymKeyFromPassword',\n call: 'shh_generateSymKeyFromPassword',\n params: 1\n }),\n new Method({\n name: 'hasSymKey',\n call: 'shh_hasSymKey',\n params: 1\n }),\n new Method({\n name: 'getSymKey',\n call: 'shh_getSymKey',\n params: 1\n }),\n new Method({\n name: 'deleteSymKey',\n call: 'shh_deleteSymKey',\n params: 1\n }),\n new Method({\n name: 'newMessageFilter',\n call: 'shh_newMessageFilter',\n params: 1\n }),\n new Method({\n name: 'getFilterMessages',\n call: 'shh_getFilterMessages',\n params: 1\n }),\n new Method({\n name: 'deleteMessageFilter',\n call: 'shh_deleteMessageFilter',\n params: 1\n }),\n new Method({\n name: 'post',\n call: 'shh_post',\n params: 1,\n inputFormatter: [null]\n }),\n new Method({\n name: 'unsubscribe',\n call: 'shh_unsubscribe',\n params: 1\n })\n ].forEach(function (method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager);\n });\n};\nShh.prototype.clearSubscriptions = function () {\n this._requestManager.clearSubscriptions();\n};\ncore.addProviders(Shh);\nmodule.exports = Shh;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file utils.js\n * @author Marek Kotewicz \n * @author Fabian Vogelsteller \n * @date 2017\n */\nvar ethjsUnit = require('ethjs-unit');\nvar utils = require('./utils.js');\nvar soliditySha3 = require('./soliditySha3.js');\nvar randombytes = require('randombytes');\nvar BN = require('bn.js');\n/**\n * Fires an error in an event emitter and callback and returns the eventemitter\n *\n * @method _fireError\n * @param {Object} error a string, a error, or an object with {message, data}\n * @param {Object} emitter\n * @param {Function} reject\n * @param {Function} callback\n * @param {any} optionalData\n * @return {Object} the emitter\n */\nvar _fireError = function (error, emitter, reject, callback, optionalData) {\n /*jshint maxcomplexity: 10 */\n // add data if given\n if (!!error && typeof error === 'object' && !(error instanceof Error) && error.data) {\n if (!!error.data && typeof error.data === 'object' || Array.isArray(error.data)) {\n error.data = JSON.stringify(error.data, null, 2);\n }\n error = error.message + \"\\n\" + error.data;\n }\n if (typeof error === 'string') {\n error = new Error(error);\n }\n if (typeof callback === 'function') {\n callback(error, optionalData);\n }\n if (typeof reject === 'function') {\n // suppress uncatched error if an error listener is present\n // OR suppress uncatched error if an callback listener is present\n if (emitter &&\n (typeof emitter.listeners === 'function' &&\n emitter.listeners('error').length) || typeof callback === 'function') {\n emitter.catch(function () { });\n }\n // reject later, to be able to return emitter\n setTimeout(function () {\n reject(error);\n }, 1);\n }\n if (emitter && typeof emitter.emit === 'function') {\n // emit later, to be able to return emitter\n setTimeout(function () {\n emitter.emit('error', error, optionalData);\n emitter.removeAllListeners();\n }, 1);\n }\n return emitter;\n};\n/**\n * Should be used to create full function/event name from json abi\n *\n * @method _jsonInterfaceMethodToString\n * @param {Object} json\n * @return {String} full function/event name\n */\nvar _jsonInterfaceMethodToString = function (json) {\n if (!!json && typeof json === 'object' && json.name && json.name.indexOf('(') !== -1) {\n return json.name;\n }\n return json.name + '(' + _flattenTypes(false, json.inputs).join(',') + ')';\n};\n/**\n * Should be used to flatten json abi inputs/outputs into an array of type-representing-strings\n *\n * @method _flattenTypes\n * @param {bool} includeTuple\n * @param {Object} puts\n * @return {Array} parameters as strings\n */\nvar _flattenTypes = function (includeTuple, puts) {\n // console.log(\"entered _flattenTypes. inputs/outputs: \" + puts)\n var types = [];\n puts.forEach(function (param) {\n if (typeof param.components === 'object') {\n if (param.type.substring(0, 5) !== 'tuple') {\n throw new Error('components found but type is not tuple; report on GitHub');\n }\n var suffix = '';\n var arrayBracket = param.type.indexOf('[');\n if (arrayBracket >= 0) {\n suffix = param.type.substring(arrayBracket);\n }\n var result = _flattenTypes(includeTuple, param.components);\n // console.log(\"result should have things: \" + result)\n if (Array.isArray(result) && includeTuple) {\n // console.log(\"include tuple word, and its an array. joining...: \" + result.types)\n types.push('tuple(' + result.join(',') + ')' + suffix);\n }\n else if (!includeTuple) {\n // console.log(\"don't include tuple, but its an array. joining...: \" + result)\n types.push('(' + result.join(',') + ')' + suffix);\n }\n else {\n // console.log(\"its a single type within a tuple: \" + result.types)\n types.push('(' + result + ')');\n }\n }\n else {\n // console.log(\"its a type and not directly in a tuple: \" + param.type)\n types.push(param.type);\n }\n });\n return types;\n};\n/**\n * Returns a random hex string by the given bytes size\n *\n * @param {Number} size\n * @returns {string}\n */\nvar randomHex = function (size) {\n return '0x' + randombytes(size).toString('hex');\n};\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method hexToAscii\n * @param {String} hex\n * @returns {String} ascii string representation of hex value\n */\nvar hexToAscii = function (hex) {\n if (!utils.isHexStrict(hex))\n throw new Error('The parameter must be a valid HEX string.');\n var str = \"\";\n var i = 0, l = hex.length;\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n for (; i < l; i += 2) {\n var code = parseInt(hex.slice(i, i + 2), 16);\n str += String.fromCharCode(code);\n }\n return str;\n};\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method asciiToHex\n * @param {String} str\n * @returns {String} hex representation of input string\n */\nvar asciiToHex = function (str) {\n if (!str)\n return \"0x00\";\n var hex = \"\";\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n return \"0x\" + hex;\n};\n/**\n * Returns value of unit in Wei\n *\n * @method getUnitValue\n * @param {String} unit the unit to convert to, default ether\n * @returns {BN} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nvar getUnitValue = function (unit) {\n unit = unit ? unit.toLowerCase() : 'ether';\n if (!ethjsUnit.unitMap[unit]) {\n throw new Error('This unit \"' + unit + '\" doesn\\'t exist, please use the one of the following units' + JSON.stringify(ethjsUnit.unitMap, null, 2));\n }\n return unit;\n};\n/**\n * Takes a number of wei and converts it to any other ether unit.\n *\n * Possible units are:\n * SI Short SI Full Effigy Other\n * - kwei femtoether babbage\n * - mwei picoether lovelace\n * - gwei nanoether shannon nano\n * - -- microether szabo micro\n * - -- milliether finney milli\n * - ether -- --\n * - kether -- grand\n * - mether\n * - gether\n * - tether\n *\n * @method fromWei\n * @param {Number|String} number can be a number, number string or a HEX of a decimal\n * @param {String} unit the unit to convert to, default ether\n * @return {String|Object} When given a BN object it returns one as well, otherwise a number\n */\nvar fromWei = function (number, unit) {\n unit = getUnitValue(unit);\n if (!utils.isBN(number) && !(typeof number === 'string')) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n return utils.isBN(number) ? ethjsUnit.fromWei(number, unit) : ethjsUnit.fromWei(number, unit).toString(10);\n};\n/**\n * Takes a number of a unit and converts it to wei.\n *\n * Possible units are:\n * SI Short SI Full Effigy Other\n * - kwei femtoether babbage\n * - mwei picoether lovelace\n * - gwei nanoether shannon nano\n * - -- microether szabo micro\n * - -- microether szabo micro\n * - -- milliether finney milli\n * - ether -- --\n * - kether -- grand\n * - mether\n * - gether\n * - tether\n *\n * @method toWei\n * @param {Number|String|BN} number can be a number, number string or a HEX of a decimal\n * @param {String} unit the unit to convert from, default ether\n * @return {String|Object} When given a BN object it returns one as well, otherwise a number\n */\nvar toWei = function (number, unit) {\n unit = getUnitValue(unit);\n if (!utils.isBN(number) && !(typeof number === 'string')) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n return utils.isBN(number) ? ethjsUnit.toWei(number, unit) : ethjsUnit.toWei(number, unit).toString(10);\n};\n/**\n * Converts to a checksum address\n *\n * @method toChecksumAddress\n * @param {String} address the given HEX address\n * @return {String}\n */\nvar toChecksumAddress = function (address) {\n if (typeof address === 'undefined')\n return '';\n if (!/^(0x)?[0-9a-f]{40}$/i.test(address))\n throw new Error('Given address \"' + address + '\" is not a valid Ethereum address.');\n address = address.toLowerCase().replace(/^0x/i, '');\n var addressHash = utils.sha3(address).replace(/^0x/i, '');\n var checksumAddress = '0x';\n for (var i = 0; i < address.length; i++) {\n // If ith character is 8 to f then make it uppercase\n if (parseInt(addressHash[i], 16) > 7) {\n checksumAddress += address[i].toUpperCase();\n }\n else {\n checksumAddress += address[i];\n }\n }\n return checksumAddress;\n};\n/**\n * Returns -1 if ab; 0 if a == b.\n * For more details on this type of function, see\n * developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\n * Block tag `safe` and `block number` combination param is not supported\n * @method compareBlockNumbers\n *\n * @param {String|Number|BN} a\n *\n * @param {String|Number|BN} b\n *\n * @returns {Number} -1, 0, or 1\n */\nvar compareBlockNumbers = function (a, b) {\n // Increasing order: (genesis = earliest), safe, (finalized ~ latest), pending\n // safe vs block-num cant be compared as block number provided can be on left or right side of safe tag, until safe tag block number is extracted and compared\n if (a === b) {\n return 0;\n }\n else if ((\"genesis\" === a || \"earliest\" === a || 0 === a) && (\"genesis\" === b || \"earliest\" === b || 0 === b)) {\n return 0;\n }\n else if (\"genesis\" === a || \"earliest\" === a || a === 0) {\n // b !== a, thus a < b\n return -1;\n }\n else if (\"genesis\" === b || \"earliest\" === b || b === 0) {\n // b !== a, thus a > b\n return 1;\n }\n else if (a === \"latest\" || a === \"finalized\") {\n if (b === \"pending\") {\n return -1;\n }\n else {\n // b !== (\"pending\" OR \"latest\"), thus a > b\n return 1;\n }\n }\n else if (b === \"latest\" || b === \"finalized\") {\n if (a === \"pending\") {\n return 1;\n }\n else {\n // b !== (\"pending\" OR \"latest\"), thus a > b\n return -1;\n }\n }\n else if (a === \"pending\") {\n // b (== OR <) \"latest\", thus a > b\n return 1;\n }\n else if (b === \"pending\") {\n return -1;\n }\n else if (a === \"safe\" || b === \"safe\") {\n // either a or b is \"safe\" and the other one did not fall into any of the conditions above, so the other one is a number\n return undefined;\n }\n else {\n let bnA = new BN(a);\n let bnB = new BN(b);\n if (bnA.lt(bnB)) {\n return -1;\n }\n else if (bnA.eq(bnB)) {\n return 0;\n }\n else {\n return 1;\n }\n }\n};\nmodule.exports = {\n _fireError: _fireError,\n _jsonInterfaceMethodToString: _jsonInterfaceMethodToString,\n _flattenTypes: _flattenTypes,\n // extractDisplayName: extractDisplayName,\n // extractTypeName: extractTypeName,\n randomHex: randomHex,\n BN: utils.BN,\n isBN: utils.isBN,\n isBigNumber: utils.isBigNumber,\n isHex: utils.isHex,\n isHexStrict: utils.isHexStrict,\n sha3: utils.sha3,\n sha3Raw: utils.sha3Raw,\n keccak256: utils.sha3,\n soliditySha3: soliditySha3.soliditySha3,\n soliditySha3Raw: soliditySha3.soliditySha3Raw,\n encodePacked: soliditySha3.encodePacked,\n isAddress: utils.isAddress,\n checkAddressChecksum: utils.checkAddressChecksum,\n toChecksumAddress: toChecksumAddress,\n toHex: utils.toHex,\n toBN: utils.toBN,\n bytesToHex: utils.bytesToHex,\n hexToBytes: utils.hexToBytes,\n hexToNumberString: utils.hexToNumberString,\n hexToNumber: utils.hexToNumber,\n toDecimal: utils.hexToNumber,\n numberToHex: utils.numberToHex,\n fromDecimal: utils.numberToHex,\n hexToUtf8: utils.hexToUtf8,\n hexToString: utils.hexToUtf8,\n toUtf8: utils.hexToUtf8,\n stripHexPrefix: utils.stripHexPrefix,\n utf8ToHex: utils.utf8ToHex,\n stringToHex: utils.utf8ToHex,\n fromUtf8: utils.utf8ToHex,\n hexToAscii: hexToAscii,\n toAscii: hexToAscii,\n asciiToHex: asciiToHex,\n fromAscii: asciiToHex,\n unitMap: ethjsUnit.unitMap,\n toWei: toWei,\n fromWei: fromWei,\n padLeft: utils.leftPad,\n leftPad: utils.leftPad,\n padRight: utils.rightPad,\n rightPad: utils.rightPad,\n toTwosComplement: utils.toTwosComplement,\n isBloom: utils.isBloom,\n isUserEthereumAddressInBloom: utils.isUserEthereumAddressInBloom,\n isContractAddressInBloom: utils.isContractAddressInBloom,\n isTopic: utils.isTopic,\n isTopicInBloom: utils.isTopicInBloom,\n isInBloom: utils.isInBloom,\n compareBlockNumbers: compareBlockNumbers,\n toNumber: utils.toNumber\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file soliditySha3.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\nvar BN = require('bn.js');\nvar utils = require('./utils.js');\nvar _elementaryName = function (name) {\n /*jshint maxcomplexity:false */\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3);\n }\n else if (name === 'int') {\n return 'int256';\n }\n else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4);\n }\n else if (name === 'uint') {\n return 'uint256';\n }\n else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5);\n }\n else if (name === 'fixed') {\n return 'fixed128x128';\n }\n else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6);\n }\n else if (name === 'ufixed') {\n return 'ufixed128x128';\n }\n return name;\n};\n// Parse N from type\nvar _parseTypeN = function (type) {\n var typesize = /^\\D+(\\d+).*$/.exec(type);\n return typesize ? parseInt(typesize[1], 10) : null;\n};\n// Parse N from type[]\nvar _parseTypeNArray = function (type) {\n var arraySize = /^\\D+\\d*\\[(\\d+)\\]$/.exec(type);\n return arraySize ? parseInt(arraySize[1], 10) : null;\n};\nvar _parseNumber = function (arg) {\n var type = typeof arg;\n if (type === 'string') {\n if (utils.isHexStrict(arg)) {\n return new BN(arg.replace(/0x/i, ''), 16);\n }\n else {\n return new BN(arg, 10);\n }\n }\n else if (type === 'number') {\n return new BN(arg);\n }\n else if (utils.isBigNumber(arg)) {\n return new BN(arg.toString(10));\n }\n else if (utils.isBN(arg)) {\n return arg;\n }\n else {\n throw new Error(arg + ' is not a number');\n }\n};\nvar _solidityPack = function (type, value, arraySize) {\n /*jshint maxcomplexity:false */\n var size, num;\n type = _elementaryName(type);\n if (type === 'bytes') {\n if (value.replace(/^0x/i, '').length % 2 !== 0) {\n throw new Error('Invalid bytes characters ' + value.length);\n }\n return value;\n }\n else if (type === 'string') {\n return utils.utf8ToHex(value);\n }\n else if (type === 'bool') {\n return value ? '01' : '00';\n }\n else if (type.startsWith('address')) {\n if (arraySize) {\n size = 64;\n }\n else {\n size = 40;\n }\n if (!utils.isAddress(value)) {\n throw new Error(value + ' is not a valid address, or the checksum is invalid.');\n }\n return utils.leftPad(value.toLowerCase(), size);\n }\n size = _parseTypeN(type);\n if (type.startsWith('bytes')) {\n if (!size) {\n throw new Error('bytes[] not yet supported in solidity');\n }\n // must be 32 byte slices when in an array\n if (arraySize) {\n size = 32;\n }\n if (size < 1 || size > 32 || size < value.replace(/^0x/i, '').length / 2) {\n throw new Error('Invalid bytes' + size + ' for ' + value);\n }\n return utils.rightPad(value, size * 2);\n }\n else if (type.startsWith('uint')) {\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint' + size + ' size');\n }\n num = _parseNumber(value);\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength());\n }\n if (num.lt(new BN(0))) {\n throw new Error('Supplied uint ' + num.toString() + ' is negative');\n }\n return size ? utils.leftPad(num.toString('hex'), size / 8 * 2) : num;\n }\n else if (type.startsWith('int')) {\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int' + size + ' size');\n }\n num = _parseNumber(value);\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength());\n }\n if (num.lt(new BN(0))) {\n return num.toTwos(size).toString('hex');\n }\n else {\n return size ? utils.leftPad(num.toString('hex'), size / 8 * 2) : num;\n }\n }\n else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type);\n }\n};\nvar _processSolidityEncodePackedArgs = function (arg) {\n /*jshint maxcomplexity:false */\n if (Array.isArray(arg)) {\n throw new Error('Autodetection of array types is not supported.');\n }\n var type, value = '';\n var hexArg, arraySize;\n // if type is given\n if (!!arg && typeof arg === 'object' && (arg.hasOwnProperty('v') || arg.hasOwnProperty('t') || arg.hasOwnProperty('value') || arg.hasOwnProperty('type'))) {\n type = arg.hasOwnProperty('t') ? arg.t : arg.type;\n value = arg.hasOwnProperty('v') ? arg.v : arg.value;\n // otherwise try to guess the type\n }\n else {\n type = utils.toHex(arg, true);\n value = utils.toHex(arg);\n if (!type.startsWith('int') && !type.startsWith('uint')) {\n type = 'bytes';\n }\n }\n if ((type.startsWith('int') || type.startsWith('uint')) && typeof value === 'string' && !/^(-)?0x/i.test(value)) {\n value = new BN(value);\n }\n // get the array size\n if (Array.isArray(value)) {\n arraySize = _parseTypeNArray(type);\n if (arraySize && value.length !== arraySize) {\n throw new Error(type + ' is not matching the given array ' + JSON.stringify(value));\n }\n else {\n arraySize = value.length;\n }\n }\n if (Array.isArray(value)) {\n hexArg = value.map(function (val) {\n return _solidityPack(type, val, arraySize).toString('hex').replace('0x', '');\n });\n return hexArg.join('');\n }\n else {\n hexArg = _solidityPack(type, value, arraySize);\n return hexArg.toString('hex').replace('0x', '');\n }\n};\n/**\n * Hashes solidity values to a sha3 hash using keccak 256\n *\n * @method soliditySha3\n * @return {Object} the sha3\n */\nvar soliditySha3 = function () {\n /*jshint maxcomplexity:false */\n var args = Array.prototype.slice.call(arguments);\n var hexArgs = args.map(_processSolidityEncodePackedArgs);\n // console.log(args, hexArgs);\n // console.log('0x'+ hexArgs.join(''));\n return utils.sha3('0x' + hexArgs.join(''));\n};\n/**\n * Hashes solidity values to a sha3 hash using keccak 256 but does return the hash of value `null` instead of `null`\n *\n * @method soliditySha3Raw\n * @return {Object} the sha3\n */\nvar soliditySha3Raw = function () {\n return utils.sha3Raw('0x' + Array.prototype.slice.call(arguments).map(_processSolidityEncodePackedArgs).join(''));\n};\n/**\n * Encode packed args to hex\n *\n * @method encodePacked\n * @return {String} the hex encoded arguments\n */\nvar encodePacked = function () {\n /*jshint maxcomplexity:false */\n var args = Array.prototype.slice.call(arguments);\n var hexArgs = args.map(_processSolidityEncodePackedArgs);\n return '0x' + hexArgs.join('').toLowerCase();\n};\nmodule.exports = {\n soliditySha3: soliditySha3,\n soliditySha3Raw: soliditySha3Raw,\n encodePacked: encodePacked\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file utils.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\nvar BN = require('bn.js');\nvar numberToBN = require('number-to-bn');\nvar utf8 = require('utf8');\nvar ethereumjsUtil = require('@ethereumjs/util');\nvar ethereumBloomFilters = require('ethereum-bloom-filters');\nvar { keccak256 } = require('ethereum-cryptography/keccak.js');\n/**\n * Returns true if object is BN, otherwise false\n *\n * @method isBN\n * @param {Object} object\n * @return {Boolean}\n */\nvar isBN = function (object) {\n return BN.isBN(object);\n};\n/**\n * Returns true if object is BigNumber, otherwise false\n *\n * @method isBigNumber\n * @param {Object} object\n * @return {Boolean}\n */\nvar isBigNumber = function (object) {\n return object && object.constructor && object.constructor.name === 'BigNumber';\n};\n/**\n * Takes an input and transforms it into an BN\n *\n * @method toBN\n * @param {Number|String|BN} number, string, HEX string or BN\n * @return {BN} BN\n */\nvar toBN = function (number) {\n try {\n return numberToBN.apply(null, arguments);\n }\n catch (e) {\n throw new Error(e + ' Given value: \"' + number + '\"');\n }\n};\n/**\n * Takes and input transforms it into BN and if it is negative value, into two's complement\n *\n * @method toTwosComplement\n * @param {Number|String|BN} number\n * @return {String}\n */\nvar toTwosComplement = function (number) {\n return '0x' + toBN(number).toTwos(256).toString(16, 64);\n};\n/**\n * Checks if the given string is an address\n *\n * @method isAddress\n * @param {String} address the given HEX address\n * @return {Boolean}\n */\nvar isAddress = function (address) {\n // check if it has the basic requirements of an address\n if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {\n return false;\n // If it's ALL lowercase or ALL upppercase\n }\n else if (/^(0x|0X)?[0-9a-f]{40}$/.test(address) || /^(0x|0X)?[0-9A-F]{40}$/.test(address)) {\n return true;\n // Otherwise check each case\n }\n else {\n return checkAddressChecksum(address);\n }\n};\n/**\n * Checks if the given string is a checksummed address\n *\n * @method checkAddressChecksum\n * @param {String} address the given HEX address\n * @return {Boolean}\n */\nvar checkAddressChecksum = function (address) {\n // Check each case\n address = address.replace(/^0x/i, '');\n var addressHash = sha3(address.toLowerCase()).replace(/^0x/i, '');\n for (var i = 0; i < 40; i++) {\n // the nth letter should be uppercase if the nth digit of casemap is 1\n if ((parseInt(addressHash[i], 16) > 7 && address[i].toUpperCase() !== address[i]) || (parseInt(addressHash[i], 16) <= 7 && address[i].toLowerCase() !== address[i])) {\n return false;\n }\n }\n return true;\n};\n/**\n * Should be called to pad string to expected length\n *\n * @method leftPad\n * @param {String} string to be padded\n * @param {Number} chars that result string should have\n * @param {String} sign, by default 0\n * @returns {String} right aligned string\n */\nvar leftPad = function (string, chars, sign) {\n var hasPrefix = /^0x/i.test(string) || typeof string === 'number';\n string = string.toString(16).replace(/^0x/i, '');\n var padding = (chars - string.length + 1 >= 0) ? chars - string.length + 1 : 0;\n return (hasPrefix ? '0x' : '') + new Array(padding).join(sign ? sign : \"0\") + string;\n};\n/**\n * Should be called to pad string to expected length\n *\n * @method rightPad\n * @param {String} string to be padded\n * @param {Number} chars that result string should have\n * @param {String} sign, by default 0\n * @returns {String} right aligned string\n */\nvar rightPad = function (string, chars, sign) {\n var hasPrefix = /^0x/i.test(string) || typeof string === 'number';\n string = string.toString(16).replace(/^0x/i, '');\n var padding = (chars - string.length + 1 >= 0) ? chars - string.length + 1 : 0;\n return (hasPrefix ? '0x' : '') + string + (new Array(padding).join(sign ? sign : \"0\"));\n};\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method utf8ToHex\n * @param {String} str\n * @returns {String} hex representation of input string\n */\nvar utf8ToHex = function (str) {\n str = utf8.encode(str);\n var hex = \"\";\n // remove \\u0000 padding from either side\n str = str.replace(/^(?:\\u0000)*/, '');\n str = str.split(\"\").reverse().join(\"\");\n str = str.replace(/^(?:\\u0000)*/, '');\n str = str.split(\"\").reverse().join(\"\");\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n // if (code !== 0) {\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n // }\n }\n return \"0x\" + hex;\n};\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method hexToUtf8\n * @param {String} hex\n * @returns {String} ascii string representation of hex value\n */\nvar hexToUtf8 = function (hex) {\n if (!isHexStrict(hex))\n throw new Error('The parameter \"' + hex + '\" must be a valid HEX string.');\n var str = \"\";\n var code = 0;\n hex = hex.replace(/^0x/i, '');\n // remove 00 padding from either side\n hex = hex.replace(/^(?:00)*/, '');\n hex = hex.split(\"\").reverse().join(\"\");\n hex = hex.replace(/^(?:00)*/, '');\n hex = hex.split(\"\").reverse().join(\"\");\n var l = hex.length;\n for (var i = 0; i < l; i += 2) {\n code = parseInt(hex.slice(i, i + 2), 16);\n // if (code !== 0) {\n str += String.fromCharCode(code);\n // }\n }\n return utf8.decode(str);\n};\n/**\n * Converts value to it's number representation.\n * However, if the value is larger than the maximum safe integer, returns the value as a string.\n *\n * @method hexToNumber\n * @param {String|Number|BN} value\n * @param {Boolean} bigIntOnOverflow - if true, return the hex value in case of overflow\n * @return {Number|String}\n */\nvar hexToNumber = function (value, bigIntOnOverflow = false) {\n if (!value) {\n return value;\n }\n if (typeof value === 'string' && !isHexStrict(value)) {\n throw new Error('Given value \"' + value + '\" is not a valid hex string.');\n }\n const n = toBN(value);\n if (bigIntOnOverflow && (n > Number.MAX_SAFE_INTEGER || n < Number.MIN_SAFE_INTEGER)) {\n return BigInt(n);\n }\n return n.toNumber();\n};\n/**\n * Converts value to it's decimal representation in string\n *\n * @method hexToNumberString\n * @param {String|Number|BN} value\n * @return {String}\n */\nvar hexToNumberString = function (value) {\n if (!value)\n return value;\n if (typeof value === 'string' && !isHexStrict(value)) {\n throw new Error('Given value \"' + value + '\" is not a valid hex string.');\n }\n return toBN(value).toString(10);\n};\n/**\n * Converts value to it's hex representation\n *\n * @method numberToHex\n * @param {String|Number|BN} value\n * @return {String}\n */\nvar numberToHex = function (value) {\n if ((value === null || value === undefined)) {\n return value;\n }\n if (!isFinite(value) && !isHexStrict(value)) {\n throw new Error('Given input \"' + value + '\" is not a number.');\n }\n var number = toBN(value);\n var result = number.toString(16);\n return number.lt(new BN(0)) ? '-0x' + result.slice(1) : '0x' + result;\n};\n/**\n * Convert a byte array to a hex string\n *\n * Note: Implementation from crypto-js\n *\n * @method bytesToHex\n * @param {Array} bytes\n * @return {String} the hex string\n */\nvar bytesToHex = function (bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n /* jshint ignore:start */\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n /* jshint ignore:end */\n }\n return '0x' + hex.join(\"\");\n};\n/**\n * Convert a hex string to a byte array\n *\n * Note: Implementation from crypto-js\n *\n * @method hexToBytes\n * @param {string} hex\n * @return {Array} the byte array\n */\nvar hexToBytes = function (hex) {\n hex = hex.toString(16);\n if (!isHexStrict(hex)) {\n throw new Error('Given value \"' + hex + '\" is not a valid hex string.');\n }\n hex = hex.replace(/^0x/i, '');\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.slice(c, c + 2), 16));\n return bytes;\n};\n/**\n * Auto converts any given value into it's hex representation.\n *\n * And even stringifys objects before.\n *\n * @method toHex\n * @param {String|Number|BN|Object|Buffer} value\n * @param {Boolean} returnType\n * @return {String}\n */\nvar toHex = function (value, returnType) {\n /*jshint maxcomplexity: false */\n if (isAddress(value)) {\n return returnType ? 'address' : '0x' + value.toLowerCase().replace(/^0x/i, '');\n }\n if (typeof value === 'boolean') {\n return returnType ? 'bool' : value ? '0x01' : '0x00';\n }\n if (Buffer.isBuffer(value)) {\n return '0x' + value.toString('hex');\n }\n if (typeof value === 'object' && !!value && !isBigNumber(value) && !isBN(value)) {\n return returnType ? 'string' : utf8ToHex(JSON.stringify(value));\n }\n // if its a negative number, pass it through numberToHex\n if (typeof value === 'string') {\n if (value.indexOf('-0x') === 0 || value.indexOf('-0X') === 0) {\n return returnType ? 'int256' : numberToHex(value);\n }\n else if (value.indexOf('0x') === 0 || value.indexOf('0X') === 0) {\n return returnType ? 'bytes' : value;\n }\n else if (!isFinite(value)) {\n return returnType ? 'string' : utf8ToHex(value);\n }\n }\n return returnType ? (value < 0 ? 'int256' : 'uint256') : numberToHex(value);\n};\n/**\n * Check if string is HEX, requires a 0x in front\n *\n * @method isHexStrict\n * @param {String} hex to be checked\n * @returns {Boolean}\n */\nvar isHexStrict = function (hex) {\n return ((typeof hex === 'string' || typeof hex === 'number') && /^(-)?0x[0-9a-f]*$/i.test(hex));\n};\n/**\n * Check if string is HEX\n *\n * @method isHex\n * @param {String} hex to be checked\n * @returns {Boolean}\n */\nvar isHex = function (hex) {\n return ((typeof hex === 'string' || typeof hex === 'number') && /^(-0x|0x)?[0-9a-f]*$/i.test(hex));\n};\n/**\n * Remove 0x prefix from string\n *\n * @method stripHexPrefix\n * @param {String} str to be checked\n * @returns {String}\n */\nvar stripHexPrefix = function (str) {\n if (str !== 0 && isHex(str))\n return str.replace(/^(-)?0x/i, '$1');\n return str;\n};\n/**\n * Returns true if given string is a valid Ethereum block header bloom.\n *\n * @method isBloom\n * @param {String} bloom encoded bloom filter\n * @return {Boolean}\n */\nvar isBloom = function (bloom) {\n return ethereumBloomFilters.isBloom(bloom);\n};\n/**\n * Returns true if the ethereum users address is part of the given bloom\n * note: false positives are possible.\n *\n * @method isUserEthereumAddressInBloom\n * @param {String} ethereumAddress encoded bloom filter\n * @param {String} bloom ethereum addresss\n * @return {Boolean}\n */\nvar isUserEthereumAddressInBloom = function (bloom, ethereumAddress) {\n return ethereumBloomFilters.isUserEthereumAddressInBloom(bloom, ethereumAddress);\n};\n/**\n * Returns true if the contract address is part of the given bloom\n * note: false positives are possible.\n *\n * @method isUserEthereumAddressInBloom\n * @param {String} bloom encoded bloom filter\n * @param {String} contractAddress contract addresss\n * @return {Boolean}\n */\nvar isContractAddressInBloom = function (bloom, contractAddress) {\n return ethereumBloomFilters.isContractAddressInBloom(bloom, contractAddress);\n};\n/**\n * Returns true if given string is a valid log topic.\n *\n * @method isTopic\n * @param {String} topic encoded topic\n * @return {Boolean}\n */\nvar isTopic = function (topic) {\n return ethereumBloomFilters.isTopic(topic);\n};\n/**\n * Returns true if the topic is part of the given bloom\n * note: false positives are possible.\n *\n * @method isTopicInBloom\n * @param {String} bloom encoded bloom filter\n * @param {String} topic encoded topic\n * @return {Boolean}\n */\nvar isTopicInBloom = function (bloom, topic) {\n return ethereumBloomFilters.isTopicInBloom(bloom, topic);\n};\n/**\n * Returns true if the value is part of the given bloom\n * note: false positives are possible.\n *\n * @method isInBloom\n * @param {String} bloom encoded bloom filter\n * @param {String | Uint8Array} topic encoded value\n * @return {Boolean}\n */\nvar isInBloom = function (bloom, topic) {\n return ethereumBloomFilters.isInBloom(bloom, topic);\n};\n/**\n * Hashes values to a sha3 hash using keccak 256\n *\n * To hash a HEX string the hex must have 0x in front.\n *\n * @method sha3\n * @return {String} the sha3 string\n */\nvar SHA3_NULL_S = '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\nvar sha3 = function (value) {\n if (isBN(value)) {\n value = value.toString();\n }\n if (isHexStrict(value) && /^0x/i.test((value).toString())) {\n value = ethereumjsUtil.toBuffer(value);\n }\n else if (typeof value === 'string') {\n // Assume value is an arbitrary string\n value = Buffer.from(value, 'utf-8');\n }\n var returnValue = ethereumjsUtil.bufferToHex(keccak256(value));\n if (returnValue === SHA3_NULL_S) {\n return null;\n }\n else {\n return returnValue;\n }\n};\n// expose the under the hood keccak256\nsha3._Hash = keccak256;\n/**\n * @method sha3Raw\n *\n * @param value\n *\n * @returns {string}\n */\nvar sha3Raw = function (value) {\n value = sha3(value);\n if (value === null) {\n return SHA3_NULL_S;\n }\n return value;\n};\n/**\n * Auto converts any given value into it's hex representation,\n * then converts hex to number.\n *\n * @method toNumber\n * @param {String|Number|BN} value\n * @param {Boolean} bigIntOnOverflow - if true, return the hex value in case of overflow\n * @return {Number|String}\n */\nvar toNumber = function (value, bigIntOnOverflow = false) {\n return typeof value === 'number' ? value : hexToNumber(toHex(value), bigIntOnOverflow);\n};\n// 1.x currently accepts 0x... strings, bn.js after update doesn't. it would be a breaking change\nvar BNwrapped = function (value) {\n // check negative\n if (typeof value == \"string\" && value.includes(\"0x\")) {\n const [negative, hexValue] = value.toLocaleLowerCase().startsWith('-') ? [\"-\", value.slice(3)] : [\"\", value.slice(2)];\n return new BN(negative + hexValue, 16);\n }\n else {\n return new BN(value);\n }\n};\nObject.setPrototypeOf(BNwrapped, BN);\nObject.setPrototypeOf(BNwrapped.prototype, BN.prototype);\nmodule.exports = {\n BN: BNwrapped,\n isBN: isBN,\n isBigNumber: isBigNumber,\n toBN: toBN,\n isAddress: isAddress,\n isBloom: isBloom,\n isUserEthereumAddressInBloom: isUserEthereumAddressInBloom,\n isContractAddressInBloom: isContractAddressInBloom,\n isTopic: isTopic,\n isTopicInBloom: isTopicInBloom,\n isInBloom: isInBloom,\n checkAddressChecksum: checkAddressChecksum,\n utf8ToHex: utf8ToHex,\n hexToUtf8: hexToUtf8,\n hexToNumber: hexToNumber,\n hexToNumberString: hexToNumberString,\n numberToHex: numberToHex,\n toHex: toHex,\n hexToBytes: hexToBytes,\n bytesToHex: bytesToHex,\n isHex: isHex,\n isHexStrict: isHexStrict,\n stripHexPrefix: stripHexPrefix,\n leftPad: leftPad,\n rightPad: rightPad,\n toTwosComplement: toTwosComplement,\n sha3: sha3,\n sha3Raw: sha3Raw,\n toNumber: toNumber\n};\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @authors:\n * Fabian Vogelsteller \n * Gav Wood \n * Jeffrey Wilcke \n * Marek Kotewicz \n * Marian Oancea \n * @date 2017\n */\n\"use strict\";\nvar version = require('../package.json').version;\nvar core = require('web3-core');\nvar Eth = require('web3-eth');\nvar Net = require('web3-net');\nvar Personal = require('web3-eth-personal');\nvar Shh = require('web3-shh');\nvar Bzz = require('web3-bzz');\nvar utils = require('web3-utils');\nvar Web3 = function Web3() {\n var _this = this;\n // sets _requestmanager etc\n core.packageInit(this, arguments);\n this.version = version;\n this.utils = utils;\n this.eth = new Eth(this);\n this.shh = new Shh(this);\n this.bzz = new Bzz(this);\n // overwrite package setProvider\n var setProvider = this.setProvider;\n this.setProvider = function (provider, net) {\n /*jshint unused: false */\n setProvider.apply(_this, arguments);\n _this.eth.setRequestManager(_this._requestManager);\n _this.shh.setRequestManager(_this._requestManager);\n _this.bzz.setProvider(provider);\n return true;\n };\n};\nWeb3.version = version;\nWeb3.utils = utils;\nWeb3.modules = {\n Eth: Eth,\n Net: Net,\n Personal: Personal,\n Shh: Shh,\n Bzz: Bzz\n};\ncore.addProviders(Web3);\nmodule.exports = Web3;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _construct.apply(null, arguments);\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(17001);\n","// TODO: This looks cool. Need to check the performance of `new RegExp` versus defined inline though.\n// https://twitter.com/GabrielVergnaud/status/1622906834343366657\nexport function execTyped(regex: RegExp, string: string) {\n const match = regex.exec(string)\n return match?.groups as type | undefined\n}\n\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n\nexport const isTupleRegex = /^\\(.+?\\).*?$/\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Account } from '../types.js'\n\nexport type ParseAccountErrorType = ErrorType\n\nexport function parseAccount(\n account: accountOrAddress,\n): accountOrAddress extends Address ? Account : accountOrAddress {\n if (typeof account === 'string')\n return { address: account, type: 'json-rpc' } as any\n return account as any\n}\n","import type { AbiStateMutability } from '../../abi.js'\nimport { execTyped } from '../../regex.js'\nimport type {\n EventModifier,\n FunctionModifier,\n Modifier,\n} from '../types/signatures.js'\n\n// https://regexr.com/7gmok\nconst errorSignatureRegex =\n /^error (?[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?.*?)\\)$/\nexport function isErrorSignature(signature: string) {\n return errorSignatureRegex.test(signature)\n}\nexport function execErrorSignature(signature: string) {\n return execTyped<{ name: string; parameters: string }>(\n errorSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/7gmoq\nconst eventSignatureRegex =\n /^event (?[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?.*?)\\)$/\nexport function isEventSignature(signature: string) {\n return eventSignatureRegex.test(signature)\n}\nexport function execEventSignature(signature: string) {\n return execTyped<{ name: string; parameters: string }>(\n eventSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/7gmot\nconst functionSignatureRegex =\n /^function (?[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?.*?)\\)(?: (?external|public{1}))?(?: (?pure|view|nonpayable|payable{1}))?(?: returns\\s?\\((?.*?)\\))?$/\nexport function isFunctionSignature(signature: string) {\n return functionSignatureRegex.test(signature)\n}\nexport function execFunctionSignature(signature: string) {\n return execTyped<{\n name: string\n parameters: string\n stateMutability?: AbiStateMutability\n returns?: string\n }>(functionSignatureRegex, signature)\n}\n\n// https://regexr.com/7gmp3\nconst structSignatureRegex =\n /^struct (?[a-zA-Z$_][a-zA-Z0-9$_]*) \\{(?.*?)\\}$/\nexport function isStructSignature(signature: string) {\n return structSignatureRegex.test(signature)\n}\nexport function execStructSignature(signature: string) {\n return execTyped<{ name: string; properties: string }>(\n structSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/78u01\nconst constructorSignatureRegex =\n /^constructor\\((?.*?)\\)(?:\\s(?payable{1}))?$/\nexport function isConstructorSignature(signature: string) {\n return constructorSignatureRegex.test(signature)\n}\nexport function execConstructorSignature(signature: string) {\n return execTyped<{\n parameters: string\n stateMutability?: Extract\n }>(constructorSignatureRegex, signature)\n}\n\n// https://regexr.com/7srtn\nconst fallbackSignatureRegex =\n /^fallback\\(\\) external(?:\\s(?payable{1}))?$/\nexport function isFallbackSignature(signature: string) {\n return fallbackSignatureRegex.test(signature)\n}\n\n// https://regexr.com/78u1k\nconst receiveSignatureRegex = /^receive\\(\\) external payable$/\nexport function isReceiveSignature(signature: string) {\n return receiveSignatureRegex.test(signature)\n}\n\nexport const modifiers = new Set([\n 'memory',\n 'indexed',\n 'storage',\n 'calldata',\n])\nexport const eventModifiers = new Set(['indexed'])\nexport const functionModifiers = new Set([\n 'calldata',\n 'memory',\n 'storage',\n])\n","import type { OneOf, Pretty } from './types.js'\nimport { version } from './version.js'\n\ntype BaseErrorArgs = Pretty<\n {\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n } & OneOf<{ details?: string | undefined } | { cause?: BaseError | Error }>\n>\n\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n\n override name = 'AbiTypeError'\n\n constructor(shortMessage: string, args: BaseErrorArgs = {}) {\n const details =\n args.cause instanceof BaseError\n ? args.cause.details\n : args.cause?.message\n ? args.cause.message\n : args.details!\n const docsPath =\n args.cause instanceof BaseError\n ? args.cause.docsPath || args.docsPath\n : args.docsPath\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsPath ? [`Docs: https://abitype.dev${docsPath}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: abitype@${version}`,\n ].join('\\n')\n\n super(message)\n\n if (args.cause) this.cause = args.cause\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.shortMessage = shortMessage\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class InvalidAbiItemError extends BaseError {\n override name = 'InvalidAbiItemError'\n\n constructor({ signature }: { signature: string | object }) {\n super('Failed to parse ABI item.', {\n details: `parseAbiItem(${JSON.stringify(signature, null, 2)})`,\n docsPath: '/api/human#parseabiitem-1',\n })\n }\n}\n\nexport class UnknownTypeError extends BaseError {\n override name = 'UnknownTypeError'\n\n constructor({ type }: { type: string }) {\n super('Unknown type.', {\n metaMessages: [\n `Type \"${type}\" is not a valid ABI type. Perhaps you forgot to include a struct signature?`,\n ],\n })\n }\n}\n\nexport class UnknownSolidityTypeError extends BaseError {\n override name = 'UnknownSolidityTypeError'\n\n constructor({ type }: { type: string }) {\n super('Unknown type.', {\n metaMessages: [`Type \"${type}\" is not a valid ABI type.`],\n })\n }\n}\n","import type { AbiItemType, AbiParameter } from '../../abi.js'\nimport { BaseError } from '../../errors.js'\nimport type { Modifier } from '../types/signatures.js'\n\nexport class InvalidAbiParameterError extends BaseError {\n override name = 'InvalidAbiParameterError'\n\n constructor({ param }: { param: string | object }) {\n super('Failed to parse ABI parameter.', {\n details: `parseAbiParameter(${JSON.stringify(param, null, 2)})`,\n docsPath: '/api/human#parseabiparameter-1',\n })\n }\n}\n\nexport class InvalidAbiParametersError extends BaseError {\n override name = 'InvalidAbiParametersError'\n\n constructor({ params }: { params: string | object }) {\n super('Failed to parse ABI parameters.', {\n details: `parseAbiParameters(${JSON.stringify(params, null, 2)})`,\n docsPath: '/api/human#parseabiparameters-1',\n })\n }\n}\n\nexport class InvalidParameterError extends BaseError {\n override name = 'InvalidParameterError'\n\n constructor({ param }: { param: string }) {\n super('Invalid ABI parameter.', {\n details: param,\n })\n }\n}\n\nexport class SolidityProtectedKeywordError extends BaseError {\n override name = 'SolidityProtectedKeywordError'\n\n constructor({ param, name }: { param: string; name: string }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `\"${name}\" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`,\n ],\n })\n }\n}\n\nexport class InvalidModifierError extends BaseError {\n override name = 'InvalidModifierError'\n\n constructor({\n param,\n type,\n modifier,\n }: {\n param: string\n type?: AbiItemType | 'struct' | undefined\n modifier: Modifier\n }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `Modifier \"${modifier}\" not allowed${\n type ? ` in \"${type}\" type` : ''\n }.`,\n ],\n })\n }\n}\n\nexport class InvalidFunctionModifierError extends BaseError {\n override name = 'InvalidFunctionModifierError'\n\n constructor({\n param,\n type,\n modifier,\n }: {\n param: string\n type?: AbiItemType | 'struct' | undefined\n modifier: Modifier\n }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `Modifier \"${modifier}\" not allowed${\n type ? ` in \"${type}\" type` : ''\n }.`,\n `Data location can only be specified for array, struct, or mapping types, but \"${modifier}\" was given.`,\n ],\n })\n }\n}\n\nexport class InvalidAbiTypeParameterError extends BaseError {\n override name = 'InvalidAbiTypeParameterError'\n\n constructor({\n abiParameter,\n }: {\n abiParameter: AbiParameter & { indexed?: boolean | undefined }\n }) {\n super('Invalid ABI parameter.', {\n details: JSON.stringify(abiParameter, null, 2),\n metaMessages: ['ABI parameter type is invalid.'],\n })\n }\n}\n","import type { AbiItemType } from '../../abi.js'\nimport { BaseError } from '../../errors.js'\n\nexport class InvalidSignatureError extends BaseError {\n override name = 'InvalidSignatureError'\n\n constructor({\n signature,\n type,\n }: {\n signature: string\n type: AbiItemType | 'struct'\n }) {\n super(`Invalid ${type} signature.`, {\n details: signature,\n })\n }\n}\n\nexport class UnknownSignatureError extends BaseError {\n override name = 'UnknownSignatureError'\n\n constructor({ signature }: { signature: string }) {\n super('Unknown signature.', {\n details: signature,\n })\n }\n}\n\nexport class InvalidStructSignatureError extends BaseError {\n override name = 'InvalidStructSignatureError'\n\n constructor({ signature }: { signature: string }) {\n super('Invalid struct signature.', {\n details: signature,\n metaMessages: ['No properties exist.'],\n })\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class CircularReferenceError extends BaseError {\n override name = 'CircularReferenceError'\n\n constructor({ type }: { type: string }) {\n super('Circular reference detected.', {\n metaMessages: [`Struct \"${type}\" is a circular reference.`],\n })\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class InvalidParenthesisError extends BaseError {\n override name = 'InvalidParenthesisError'\n\n constructor({ current, depth }: { current: string; depth: number }) {\n super('Unbalanced parentheses.', {\n metaMessages: [\n `\"${current.trim()}\" has too many ${\n depth > 0 ? 'opening' : 'closing'\n } parentheses.`,\n ],\n details: `Depth \"${depth}\"`,\n })\n }\n}\n","import type { AbiItemType, AbiParameter } from '../../abi.js'\n\n/**\n * Gets {@link parameterCache} cache key namespaced by {@link type}. This prevents parameters from being accessible to types that don't allow them (e.g. `string indexed foo` not allowed outside of `type: 'event'`).\n * @param param ABI parameter string\n * @param type ABI parameter type\n * @returns Cache key for {@link parameterCache}\n */\nexport function getParameterCacheKey(\n param: string,\n type?: AbiItemType | 'struct',\n) {\n if (type) return `${type}:${param}`\n return param\n}\n\n/**\n * Basic cache seeded with common ABI parameter strings.\n *\n * **Note: When seeding more parameters, make sure you benchmark performance. The current number is the ideal balance between performance and having an already existing cache.**\n */\nexport const parameterCache = new Map<\n string,\n AbiParameter & { indexed?: boolean }\n>([\n // Unnamed\n ['address', { type: 'address' }],\n ['bool', { type: 'bool' }],\n ['bytes', { type: 'bytes' }],\n ['bytes32', { type: 'bytes32' }],\n ['int', { type: 'int256' }],\n ['int256', { type: 'int256' }],\n ['string', { type: 'string' }],\n ['uint', { type: 'uint256' }],\n ['uint8', { type: 'uint8' }],\n ['uint16', { type: 'uint16' }],\n ['uint24', { type: 'uint24' }],\n ['uint32', { type: 'uint32' }],\n ['uint64', { type: 'uint64' }],\n ['uint96', { type: 'uint96' }],\n ['uint112', { type: 'uint112' }],\n ['uint160', { type: 'uint160' }],\n ['uint192', { type: 'uint192' }],\n ['uint256', { type: 'uint256' }],\n\n // Named\n ['address owner', { type: 'address', name: 'owner' }],\n ['address to', { type: 'address', name: 'to' }],\n ['bool approved', { type: 'bool', name: 'approved' }],\n ['bytes _data', { type: 'bytes', name: '_data' }],\n ['bytes data', { type: 'bytes', name: 'data' }],\n ['bytes signature', { type: 'bytes', name: 'signature' }],\n ['bytes32 hash', { type: 'bytes32', name: 'hash' }],\n ['bytes32 r', { type: 'bytes32', name: 'r' }],\n ['bytes32 root', { type: 'bytes32', name: 'root' }],\n ['bytes32 s', { type: 'bytes32', name: 's' }],\n ['string name', { type: 'string', name: 'name' }],\n ['string symbol', { type: 'string', name: 'symbol' }],\n ['string tokenURI', { type: 'string', name: 'tokenURI' }],\n ['uint tokenId', { type: 'uint256', name: 'tokenId' }],\n ['uint8 v', { type: 'uint8', name: 'v' }],\n ['uint256 balance', { type: 'uint256', name: 'balance' }],\n ['uint256 tokenId', { type: 'uint256', name: 'tokenId' }],\n ['uint256 value', { type: 'uint256', name: 'value' }],\n\n // Indexed\n [\n 'event:address indexed from',\n { type: 'address', name: 'from', indexed: true },\n ],\n ['event:address indexed to', { type: 'address', name: 'to', indexed: true }],\n [\n 'event:uint indexed tokenId',\n { type: 'uint256', name: 'tokenId', indexed: true },\n ],\n [\n 'event:uint256 indexed tokenId',\n { type: 'uint256', name: 'tokenId', indexed: true },\n ],\n])\n","import type {\n AbiItemType,\n AbiType,\n SolidityArray,\n SolidityBytes,\n SolidityString,\n SolidityTuple,\n} from '../../abi.js'\nimport {\n bytesRegex,\n execTyped,\n integerRegex,\n isTupleRegex,\n} from '../../regex.js'\nimport { UnknownSolidityTypeError } from '../errors/abiItem.js'\nimport {\n InvalidFunctionModifierError,\n InvalidModifierError,\n InvalidParameterError,\n SolidityProtectedKeywordError,\n} from '../errors/abiParameter.js'\nimport {\n InvalidSignatureError,\n UnknownSignatureError,\n} from '../errors/signature.js'\nimport { InvalidParenthesisError } from '../errors/splitParameters.js'\nimport type { FunctionModifier, Modifier } from '../types/signatures.js'\nimport type { StructLookup } from '../types/structs.js'\nimport { getParameterCacheKey, parameterCache } from './cache.js'\nimport {\n eventModifiers,\n execConstructorSignature,\n execErrorSignature,\n execEventSignature,\n execFunctionSignature,\n functionModifiers,\n isConstructorSignature,\n isErrorSignature,\n isEventSignature,\n isFallbackSignature,\n isFunctionSignature,\n isReceiveSignature,\n} from './signatures.js'\n\nexport function parseSignature(signature: string, structs: StructLookup = {}) {\n if (isFunctionSignature(signature)) {\n const match = execFunctionSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'function' })\n\n const inputParams = splitParameters(match.parameters)\n const inputs = []\n const inputLength = inputParams.length\n for (let i = 0; i < inputLength; i++) {\n inputs.push(\n parseAbiParameter(inputParams[i]!, {\n modifiers: functionModifiers,\n structs,\n type: 'function',\n }),\n )\n }\n\n const outputs = []\n if (match.returns) {\n const outputParams = splitParameters(match.returns)\n const outputLength = outputParams.length\n for (let i = 0; i < outputLength; i++) {\n outputs.push(\n parseAbiParameter(outputParams[i]!, {\n modifiers: functionModifiers,\n structs,\n type: 'function',\n }),\n )\n }\n }\n\n return {\n name: match.name,\n type: 'function',\n stateMutability: match.stateMutability ?? 'nonpayable',\n inputs,\n outputs,\n }\n }\n\n if (isEventSignature(signature)) {\n const match = execEventSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'event' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, {\n modifiers: eventModifiers,\n structs,\n type: 'event',\n }),\n )\n }\n return { name: match.name, type: 'event', inputs: abiParameters }\n }\n\n if (isErrorSignature(signature)) {\n const match = execErrorSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'error' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, { structs, type: 'error' }),\n )\n }\n return { name: match.name, type: 'error', inputs: abiParameters }\n }\n\n if (isConstructorSignature(signature)) {\n const match = execConstructorSignature(signature)\n if (!match)\n throw new InvalidSignatureError({ signature, type: 'constructor' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, { structs, type: 'constructor' }),\n )\n }\n return {\n type: 'constructor',\n stateMutability: match.stateMutability ?? 'nonpayable',\n inputs: abiParameters,\n }\n }\n\n if (isFallbackSignature(signature)) return { type: 'fallback' }\n if (isReceiveSignature(signature))\n return {\n type: 'receive',\n stateMutability: 'payable',\n }\n\n throw new UnknownSignatureError({ signature })\n}\n\nconst abiParameterWithoutTupleRegex =\n /^(?[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\\[\\d*?\\])+?)?(?:\\s(?calldata|indexed|memory|storage{1}))?(?:\\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/\nconst abiParameterWithTupleRegex =\n /^\\((?.+?)\\)(?(?:\\[\\d*?\\])+?)?(?:\\s(?calldata|indexed|memory|storage{1}))?(?:\\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/\nconst dynamicIntegerRegex = /^u?int$/\n\ntype ParseOptions = {\n modifiers?: Set\n structs?: StructLookup\n type?: AbiItemType | 'struct'\n}\n\nexport function parseAbiParameter(param: string, options?: ParseOptions) {\n // optional namespace cache by `type`\n const parameterCacheKey = getParameterCacheKey(param, options?.type)\n if (parameterCache.has(parameterCacheKey))\n return parameterCache.get(parameterCacheKey)!\n\n const isTuple = isTupleRegex.test(param)\n const match = execTyped<{\n array?: string\n modifier?: Modifier\n name?: string\n type: string\n }>(\n isTuple ? abiParameterWithTupleRegex : abiParameterWithoutTupleRegex,\n param,\n )\n if (!match) throw new InvalidParameterError({ param })\n\n if (match.name && isSolidityKeyword(match.name))\n throw new SolidityProtectedKeywordError({ param, name: match.name })\n\n const name = match.name ? { name: match.name } : {}\n const indexed = match.modifier === 'indexed' ? { indexed: true } : {}\n const structs = options?.structs ?? {}\n let type: string\n let components = {}\n if (isTuple) {\n type = 'tuple'\n const params = splitParameters(match.type)\n const components_ = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n // remove `modifiers` from `options` to prevent from being added to tuple components\n components_.push(parseAbiParameter(params[i]!, { structs }))\n }\n components = { components: components_ }\n } else if (match.type in structs) {\n type = 'tuple'\n components = { components: structs[match.type] }\n } else if (dynamicIntegerRegex.test(match.type)) {\n type = `${match.type}256`\n } else {\n type = match.type\n if (!(options?.type === 'struct') && !isSolidityType(type))\n throw new UnknownSolidityTypeError({ type })\n }\n\n if (match.modifier) {\n // Check if modifier exists, but is not allowed (e.g. `indexed` in `functionModifiers`)\n if (!options?.modifiers?.has?.(match.modifier))\n throw new InvalidModifierError({\n param,\n type: options?.type,\n modifier: match.modifier,\n })\n\n // Check if resolved `type` is valid if there is a function modifier\n if (\n functionModifiers.has(match.modifier as FunctionModifier) &&\n !isValidDataLocation(type, !!match.array)\n )\n throw new InvalidFunctionModifierError({\n param,\n type: options?.type,\n modifier: match.modifier,\n })\n }\n\n const abiParameter = {\n type: `${type}${match.array ?? ''}`,\n ...name,\n ...indexed,\n ...components,\n }\n parameterCache.set(parameterCacheKey, abiParameter)\n return abiParameter\n}\n\n// s/o latika for this\nexport function splitParameters(\n params: string,\n result: string[] = [],\n current = '',\n depth = 0,\n): readonly string[] {\n const length = params.trim().length\n // biome-ignore lint/correctness/noUnreachable: recursive\n for (let i = 0; i < length; i++) {\n const char = params[i]\n const tail = params.slice(i + 1)\n switch (char) {\n case ',':\n return depth === 0\n ? splitParameters(tail, [...result, current.trim()])\n : splitParameters(tail, result, `${current}${char}`, depth)\n case '(':\n return splitParameters(tail, result, `${current}${char}`, depth + 1)\n case ')':\n return splitParameters(tail, result, `${current}${char}`, depth - 1)\n default:\n return splitParameters(tail, result, `${current}${char}`, depth)\n }\n }\n\n if (current === '') return result\n if (depth !== 0) throw new InvalidParenthesisError({ current, depth })\n\n result.push(current.trim())\n return result\n}\n\nexport function isSolidityType(\n type: string,\n): type is Exclude {\n return (\n type === 'address' ||\n type === 'bool' ||\n type === 'function' ||\n type === 'string' ||\n bytesRegex.test(type) ||\n integerRegex.test(type)\n )\n}\n\nconst protectedKeywordsRegex =\n /^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/\n\n/** @internal */\nexport function isSolidityKeyword(name: string) {\n return (\n name === 'address' ||\n name === 'bool' ||\n name === 'function' ||\n name === 'string' ||\n name === 'tuple' ||\n bytesRegex.test(name) ||\n integerRegex.test(name) ||\n protectedKeywordsRegex.test(name)\n )\n}\n\n/** @internal */\nexport function isValidDataLocation(\n type: string,\n isArray: boolean,\n): type is Exclude<\n AbiType,\n SolidityString | Extract | SolidityArray\n> {\n return isArray || type === 'bytes' || type === 'string' || type === 'tuple'\n}\n","import type { AbiParameter } from '../../abi.js'\nimport { execTyped, isTupleRegex } from '../../regex.js'\nimport { UnknownTypeError } from '../errors/abiItem.js'\nimport { InvalidAbiTypeParameterError } from '../errors/abiParameter.js'\nimport {\n InvalidSignatureError,\n InvalidStructSignatureError,\n} from '../errors/signature.js'\nimport { CircularReferenceError } from '../errors/struct.js'\nimport type { StructLookup } from '../types/structs.js'\nimport { execStructSignature, isStructSignature } from './signatures.js'\nimport { isSolidityType, parseAbiParameter } from './utils.js'\n\nexport function parseStructs(signatures: readonly string[]) {\n // Create \"shallow\" version of each struct (and filter out non-structs or invalid structs)\n const shallowStructs: StructLookup = {}\n const signaturesLength = signatures.length\n for (let i = 0; i < signaturesLength; i++) {\n const signature = signatures[i]!\n if (!isStructSignature(signature)) continue\n\n const match = execStructSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'struct' })\n\n const properties = match.properties.split(';')\n\n const components: AbiParameter[] = []\n const propertiesLength = properties.length\n for (let k = 0; k < propertiesLength; k++) {\n const property = properties[k]!\n const trimmed = property.trim()\n if (!trimmed) continue\n const abiParameter = parseAbiParameter(trimmed, {\n type: 'struct',\n })\n components.push(abiParameter)\n }\n\n if (!components.length) throw new InvalidStructSignatureError({ signature })\n shallowStructs[match.name] = components\n }\n\n // Resolve nested structs inside each parameter\n const resolvedStructs: StructLookup = {}\n const entries = Object.entries(shallowStructs)\n const entriesLength = entries.length\n for (let i = 0; i < entriesLength; i++) {\n const [name, parameters] = entries[i]!\n resolvedStructs[name] = resolveStructs(parameters, shallowStructs)\n }\n\n return resolvedStructs\n}\n\nconst typeWithoutTupleRegex =\n /^(?[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\\[\\d*?\\])+?)?$/\n\nfunction resolveStructs(\n abiParameters: readonly (AbiParameter & { indexed?: true })[],\n structs: StructLookup,\n ancestors = new Set(),\n) {\n const components: AbiParameter[] = []\n const length = abiParameters.length\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i]!\n const isTuple = isTupleRegex.test(abiParameter.type)\n if (isTuple) components.push(abiParameter)\n else {\n const match = execTyped<{ array?: string; type: string }>(\n typeWithoutTupleRegex,\n abiParameter.type,\n )\n if (!match?.type) throw new InvalidAbiTypeParameterError({ abiParameter })\n\n const { array, type } = match\n if (type in structs) {\n if (ancestors.has(type)) throw new CircularReferenceError({ type })\n\n components.push({\n ...abiParameter,\n type: `tuple${array ?? ''}`,\n components: resolveStructs(\n structs[type] ?? [],\n structs,\n new Set([...ancestors, type]),\n ),\n })\n } else {\n if (isSolidityType(type)) components.push(abiParameter)\n else throw new UnknownTypeError({ type })\n }\n }\n }\n\n return components\n}\n","import type { Abi } from '../abi.js'\nimport type { Error, Filter } from '../types.js'\nimport { isStructSignature } from './runtime/signatures.js'\nimport { parseStructs } from './runtime/structs.js'\nimport { parseSignature } from './runtime/utils.js'\nimport type { Signatures } from './types/signatures.js'\nimport type { ParseStructs } from './types/structs.js'\nimport type { ParseSignature } from './types/utils.js'\n\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * type Result = ParseAbi<\n * // ^? type Result = readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n * [\n * 'function balanceOf(address owner) view returns (uint256)',\n * 'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ]\n * >\n */\nexport type ParseAbi =\n string[] extends signatures\n ? Abi // If `T` was not able to be inferred (e.g. just `string[]`), return `Abi`\n : signatures extends readonly string[]\n ? signatures extends Signatures // Validate signatures\n ? ParseStructs extends infer sructs\n ? {\n [key in keyof signatures]: signatures[key] extends string\n ? ParseSignature\n : never\n } extends infer mapped extends readonly unknown[]\n ? Filter extends infer result\n ? result extends readonly []\n ? never\n : result\n : never\n : never\n : never\n : never\n : never\n\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-Readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * const abi = parseAbi([\n * // ^? const abi: readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n * 'function balanceOf(address owner) view returns (uint256)',\n * 'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ])\n */\nexport function parseAbi(\n signatures: signatures['length'] extends 0\n ? Error<'At least one signature required'>\n : Signatures extends signatures\n ? signatures\n : Signatures,\n): ParseAbi {\n const structs = parseStructs(signatures as readonly string[])\n const abi = []\n const length = signatures.length as number\n for (let i = 0; i < length; i++) {\n const signature = (signatures as readonly string[])[i]!\n if (isStructSignature(signature)) continue\n abi.push(parseSignature(signature, structs))\n }\n return abi as unknown as ParseAbi\n}\n","export const aggregate3Signature = '0x82ad56cb'\n","export const deploylessCallViaBytecodeBytecode =\n '0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe'\n\nexport const deploylessCallViaFactoryBytecode =\n '0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe'\n\nexport const universalSignatureValidatorByteCode =\n '0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572'\n","import type { Abi } from 'abitype'\n\nimport {\n AbiConstructorNotFoundError,\n type AbiConstructorNotFoundErrorType,\n AbiConstructorParamsNotFoundError,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ContractConstructorArgs } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\n\nconst docsPath = '/docs/contract/encodeDeployData'\n\nexport type EncodeDeployDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n hasConstructor = abi extends Abi\n ? Abi extends abi\n ? true\n : [Extract] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractConstructorArgs,\n> = {\n abi: abi\n bytecode: Hex\n} & UnionEvaluate<\n hasConstructor extends false\n ? { args?: undefined }\n : readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n>\n\nexport type EncodeDeployDataReturnType = Hex\n\nexport type EncodeDeployDataErrorType =\n | AbiConstructorNotFoundErrorType\n | ConcatHexErrorType\n | EncodeAbiParametersErrorType\n | ErrorType\n\nexport function encodeDeployData(\n parameters: EncodeDeployDataParameters,\n): EncodeDeployDataReturnType {\n const { abi, args, bytecode } = parameters as EncodeDeployDataParameters\n if (!args || args.length === 0) return bytecode\n\n const description = abi.find((x) => 'type' in x && x.type === 'constructor')\n if (!description) throw new AbiConstructorNotFoundError({ docsPath })\n if (!('inputs' in description))\n throw new AbiConstructorParamsNotFoundError({ docsPath })\n if (!description.inputs || description.inputs.length === 0)\n throw new AbiConstructorParamsNotFoundError({ docsPath })\n\n const data = encodeAbiParameters(description.inputs, args)\n return concatHex([bytecode, data!])\n}\n","import { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\n\n/**\n * geth: https://github.com/ethereum/go-ethereum/blob/master/core/error.go\n * https://github.com/ethereum/go-ethereum/blob/master/core/types/transaction.go#L34-L41\n *\n * erigon: https://github.com/ledgerwatch/erigon/blob/master/core/error.go\n * https://github.com/ledgerwatch/erigon/blob/master/core/types/transaction.go#L41-L46\n *\n * anvil: https://github.com/foundry-rs/foundry/blob/master/anvil/src/eth/error.rs#L108\n */\nexport type ExecutionRevertedErrorType = ExecutionRevertedError & {\n code: 3\n name: 'ExecutionRevertedError'\n}\nexport class ExecutionRevertedError extends BaseError {\n static code = 3\n static nodeMessage = /execution reverted/\n\n constructor({\n cause,\n message,\n }: { cause?: BaseError | undefined; message?: string | undefined } = {}) {\n const reason = message\n ?.replace('execution reverted: ', '')\n ?.replace('execution reverted', '')\n super(\n `Execution reverted ${\n reason ? `with reason: ${reason}` : 'for an unknown reason'\n }.`,\n {\n cause,\n name: 'ExecutionRevertedError',\n },\n )\n }\n}\n\nexport type FeeCapTooHighErrorType = FeeCapTooHighError & {\n name: 'FeeCapTooHighError'\n}\nexport class FeeCapTooHighError extends BaseError {\n static nodeMessage =\n /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n constructor({\n cause,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n `The fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''\n }) cannot be higher than the maximum allowed value (2^256-1).`,\n {\n cause,\n name: 'FeeCapTooHighError',\n },\n )\n }\n}\n\nexport type FeeCapTooLowErrorType = FeeCapTooLowError & {\n name: 'FeeCapTooLowError'\n}\nexport class FeeCapTooLowError extends BaseError {\n static nodeMessage =\n /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n constructor({\n cause,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n `The fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : ''\n } gwei) cannot be lower than the block base fee.`,\n {\n cause,\n name: 'FeeCapTooLowError',\n },\n )\n }\n}\n\nexport type NonceTooHighErrorType = NonceTooHighError & {\n name: 'NonceTooHighError'\n}\nexport class NonceTooHighError extends BaseError {\n static nodeMessage = /nonce too high/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }is higher than the next one expected.`,\n { cause, name: 'NonceTooHighError' },\n )\n }\n}\n\nexport type NonceTooLowErrorType = NonceTooLowError & {\n name: 'NonceTooLowError'\n}\nexport class NonceTooLowError extends BaseError {\n static nodeMessage =\n /nonce too low|transaction already imported|already known/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n [\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }is lower than the current nonce of the account.`,\n 'Try increasing the nonce or find the latest nonce with `getTransactionCount`.',\n ].join('\\n'),\n { cause, name: 'NonceTooLowError' },\n )\n }\n}\n\nexport type NonceMaxValueErrorType = NonceMaxValueError & {\n name: 'NonceMaxValueError'\n}\nexport class NonceMaxValueError extends BaseError {\n static nodeMessage = /nonce has max value/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }exceeds the maximum allowed nonce.`,\n { cause, name: 'NonceMaxValueError' },\n )\n }\n}\n\nexport type InsufficientFundsErrorType = InsufficientFundsError & {\n name: 'InsufficientFundsError'\n}\nexport class InsufficientFundsError extends BaseError {\n static nodeMessage =\n /insufficient funds|exceeds transaction sender account balance/\n constructor({ cause }: { cause?: BaseError | undefined } = {}) {\n super(\n [\n 'The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.',\n ].join('\\n'),\n {\n cause,\n metaMessages: [\n 'This error could arise when the account does not have enough funds to:',\n ' - pay for the total gas fee,',\n ' - pay for the value to send.',\n ' ',\n 'The cost of the transaction is calculated as `gas * gas fee + value`, where:',\n ' - `gas` is the amount of gas needed for transaction to execute,',\n ' - `gas fee` is the gas fee,',\n ' - `value` is the amount of ether to send to the recipient.',\n ],\n name: 'InsufficientFundsError',\n },\n )\n }\n}\n\nexport type IntrinsicGasTooHighErrorType = IntrinsicGasTooHighError & {\n name: 'IntrinsicGasTooHighError'\n}\nexport class IntrinsicGasTooHighError extends BaseError {\n static nodeMessage = /intrinsic gas too high|gas limit reached/\n constructor({\n cause,\n gas,\n }: { cause?: BaseError | undefined; gas?: bigint | undefined } = {}) {\n super(\n `The amount of gas ${\n gas ? `(${gas}) ` : ''\n }provided for the transaction exceeds the limit allowed for the block.`,\n {\n cause,\n name: 'IntrinsicGasTooHighError',\n },\n )\n }\n}\n\nexport type IntrinsicGasTooLowErrorType = IntrinsicGasTooLowError & {\n name: 'IntrinsicGasTooLowError'\n}\nexport class IntrinsicGasTooLowError extends BaseError {\n static nodeMessage = /intrinsic gas too low/\n constructor({\n cause,\n gas,\n }: { cause?: BaseError | undefined; gas?: bigint | undefined } = {}) {\n super(\n `The amount of gas ${\n gas ? `(${gas}) ` : ''\n }provided for the transaction is too low.`,\n {\n cause,\n name: 'IntrinsicGasTooLowError',\n },\n )\n }\n}\n\nexport type TransactionTypeNotSupportedErrorType =\n TransactionTypeNotSupportedError & {\n name: 'TransactionTypeNotSupportedError'\n }\nexport class TransactionTypeNotSupportedError extends BaseError {\n static nodeMessage = /transaction type not valid/\n constructor({ cause }: { cause?: BaseError | undefined }) {\n super('The transaction type is not supported for this chain.', {\n cause,\n name: 'TransactionTypeNotSupportedError',\n })\n }\n}\n\nexport type TipAboveFeeCapErrorType = TipAboveFeeCapError & {\n name: 'TipAboveFeeCapError'\n}\nexport class TipAboveFeeCapError extends BaseError {\n static nodeMessage =\n /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n constructor({\n cause,\n maxPriorityFeePerGas,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxPriorityFeePerGas?: bigint | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n [\n `The provided tip (\\`maxPriorityFeePerGas\\`${\n maxPriorityFeePerGas\n ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei`\n : ''\n }) cannot be higher than the fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''\n }).`,\n ].join('\\n'),\n {\n cause,\n name: 'TipAboveFeeCapError',\n },\n )\n }\n}\n\nexport type UnknownNodeErrorType = UnknownNodeError & {\n name: 'UnknownNodeError'\n}\nexport class UnknownNodeError extends BaseError {\n constructor({ cause }: { cause?: BaseError | undefined }) {\n super(`An error occurred while executing: ${cause?.shortMessage}`, {\n cause,\n name: 'UnknownNodeError',\n })\n }\n}\n","import type { CallParameters } from '../../actions/public/call.js'\nimport type { BaseError } from '../../errors/base.js'\nimport {\n CallExecutionError,\n type CallExecutionErrorType,\n} from '../../errors/contract.js'\nimport { UnknownNodeError } from '../../errors/node.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\n\nimport {\n type GetNodeErrorParameters,\n type GetNodeErrorReturnType,\n getNodeError,\n} from './getNodeError.js'\n\nexport type GetCallErrorReturnType = Omit<\n CallExecutionErrorType,\n 'cause'\n> & {\n cause: cause | GetNodeErrorReturnType\n}\n\nexport function getCallError>(\n err: err,\n {\n docsPath,\n ...args\n }: CallParameters & {\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n): GetCallErrorReturnType {\n const cause = (() => {\n const cause = getNodeError(\n err as {} as BaseError,\n args as GetNodeErrorParameters,\n )\n if (cause instanceof UnknownNodeError) return err as {} as BaseError\n return cause\n })()\n return new CallExecutionError(cause, {\n docsPath,\n ...args,\n }) as GetCallErrorReturnType\n}\n","import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ExecutionRevertedError,\n type ExecutionRevertedErrorType,\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n FeeCapTooLowError,\n type FeeCapTooLowErrorType,\n InsufficientFundsError,\n type InsufficientFundsErrorType,\n IntrinsicGasTooHighError,\n type IntrinsicGasTooHighErrorType,\n IntrinsicGasTooLowError,\n type IntrinsicGasTooLowErrorType,\n NonceMaxValueError,\n type NonceMaxValueErrorType,\n NonceTooHighError,\n type NonceTooHighErrorType,\n NonceTooLowError,\n type NonceTooLowErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n TransactionTypeNotSupportedError,\n type TransactionTypeNotSupportedErrorType,\n UnknownNodeError,\n type UnknownNodeErrorType,\n} from '../../errors/node.js'\nimport { RpcRequestError } from '../../errors/request.js'\nimport {\n InvalidInputRpcError,\n TransactionRejectedRpcError,\n} from '../../errors/rpc.js'\nimport type { ExactPartial } from '../../types/utils.js'\n\nexport function containsNodeError(err: BaseError) {\n return (\n err instanceof TransactionRejectedRpcError ||\n err instanceof InvalidInputRpcError ||\n (err instanceof RpcRequestError && err.code === ExecutionRevertedError.code)\n )\n}\n\nexport type GetNodeErrorParameters = ExactPartial<\n SendTransactionParameters\n>\n\nexport type GetNodeErrorReturnType =\n | ExecutionRevertedErrorType\n | FeeCapTooHighErrorType\n | FeeCapTooLowErrorType\n | NonceTooHighErrorType\n | NonceTooLowErrorType\n | NonceMaxValueErrorType\n | InsufficientFundsErrorType\n | IntrinsicGasTooHighErrorType\n | IntrinsicGasTooLowErrorType\n | TransactionTypeNotSupportedErrorType\n | TipAboveFeeCapErrorType\n | UnknownNodeErrorType\n\nexport function getNodeError(\n err: BaseError,\n args: GetNodeErrorParameters,\n): GetNodeErrorReturnType {\n const message = (err.details || '').toLowerCase()\n\n const executionRevertedError =\n err instanceof BaseError\n ? err.walk(\n (e) =>\n (e as { code: number } | null | undefined)?.code ===\n ExecutionRevertedError.code,\n )\n : err\n if (executionRevertedError instanceof BaseError)\n return new ExecutionRevertedError({\n cause: err,\n message: executionRevertedError.details,\n }) as any\n if (ExecutionRevertedError.nodeMessage.test(message))\n return new ExecutionRevertedError({\n cause: err,\n message: err.details,\n }) as any\n if (FeeCapTooHighError.nodeMessage.test(message))\n return new FeeCapTooHighError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n }) as any\n if (FeeCapTooLowError.nodeMessage.test(message))\n return new FeeCapTooLowError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n }) as any\n if (NonceTooHighError.nodeMessage.test(message))\n return new NonceTooHighError({ cause: err, nonce: args?.nonce }) as any\n if (NonceTooLowError.nodeMessage.test(message))\n return new NonceTooLowError({ cause: err, nonce: args?.nonce }) as any\n if (NonceMaxValueError.nodeMessage.test(message))\n return new NonceMaxValueError({ cause: err, nonce: args?.nonce }) as any\n if (InsufficientFundsError.nodeMessage.test(message))\n return new InsufficientFundsError({ cause: err }) as any\n if (IntrinsicGasTooHighError.nodeMessage.test(message))\n return new IntrinsicGasTooHighError({ cause: err, gas: args?.gas }) as any\n if (IntrinsicGasTooLowError.nodeMessage.test(message))\n return new IntrinsicGasTooLowError({ cause: err, gas: args?.gas }) as any\n if (TransactionTypeNotSupportedError.nodeMessage.test(message))\n return new TransactionTypeNotSupportedError({ cause: err }) as any\n if (TipAboveFeeCapError.nodeMessage.test(message))\n return new TipAboveFeeCapError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n maxPriorityFeePerGas: args?.maxPriorityFeePerGas,\n }) as any\n return new UnknownNodeError({\n cause: err,\n }) as any\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ChainFormatter } from '../../types/chain.js'\n\nexport type ExtractErrorType = ErrorType\n\n/**\n * @description Picks out the keys from `value` that exist in the formatter..\n */\nexport function extract(\n value_: Record,\n { format }: { format?: ChainFormatter['format'] | undefined },\n) {\n if (!format) return {}\n\n const value: Record = {}\n function extract_(formatted: Record) {\n const keys = Object.keys(formatted)\n for (const key of keys) {\n if (key in value_) value[key] = value_[key]\n if (\n formatted[key] &&\n typeof formatted[key] === 'object' &&\n !Array.isArray(formatted[key])\n )\n extract_(formatted[key])\n }\n }\n\n const formatted = format(value_ || {})\n extract_(formatted)\n\n return value\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { AuthorizationList } from '../../experimental/eip7702/types/authorization.js'\nimport type { RpcAuthorizationList } from '../../experimental/eip7702/types/rpc.js'\nimport type {\n Chain,\n ExtractChainFormatterParameters,\n} from '../../types/chain.js'\nimport type { ByteArray } from '../../types/misc.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { bytesToHex, numberToHex } from '../encoding/toHex.js'\nimport { type DefineFormatterErrorType, defineFormatter } from './formatter.js'\n\nexport type FormattedTransactionRequest<\n chain extends Chain | undefined = Chain | undefined,\n> = ExtractChainFormatterParameters<\n chain,\n 'transactionRequest',\n TransactionRequest\n>\n\nexport const rpcTransactionType = {\n legacy: '0x0',\n eip2930: '0x1',\n eip1559: '0x2',\n eip4844: '0x3',\n eip7702: '0x4',\n} as const\n\nexport type FormatTransactionRequestErrorType = ErrorType\n\nexport function formatTransactionRequest(\n request: ExactPartial,\n) {\n const rpcRequest = {} as RpcTransactionRequest\n\n if (typeof request.authorizationList !== 'undefined')\n rpcRequest.authorizationList = formatAuthorizationList(\n request.authorizationList,\n )\n if (typeof request.accessList !== 'undefined')\n rpcRequest.accessList = request.accessList\n if (typeof request.blobVersionedHashes !== 'undefined')\n rpcRequest.blobVersionedHashes = request.blobVersionedHashes\n if (typeof request.blobs !== 'undefined') {\n if (typeof request.blobs[0] !== 'string')\n rpcRequest.blobs = (request.blobs as ByteArray[]).map((x) =>\n bytesToHex(x),\n )\n else rpcRequest.blobs = request.blobs\n }\n if (typeof request.data !== 'undefined') rpcRequest.data = request.data\n if (typeof request.from !== 'undefined') rpcRequest.from = request.from\n if (typeof request.gas !== 'undefined')\n rpcRequest.gas = numberToHex(request.gas)\n if (typeof request.gasPrice !== 'undefined')\n rpcRequest.gasPrice = numberToHex(request.gasPrice)\n if (typeof request.maxFeePerBlobGas !== 'undefined')\n rpcRequest.maxFeePerBlobGas = numberToHex(request.maxFeePerBlobGas)\n if (typeof request.maxFeePerGas !== 'undefined')\n rpcRequest.maxFeePerGas = numberToHex(request.maxFeePerGas)\n if (typeof request.maxPriorityFeePerGas !== 'undefined')\n rpcRequest.maxPriorityFeePerGas = numberToHex(request.maxPriorityFeePerGas)\n if (typeof request.nonce !== 'undefined')\n rpcRequest.nonce = numberToHex(request.nonce)\n if (typeof request.to !== 'undefined') rpcRequest.to = request.to\n if (typeof request.type !== 'undefined')\n rpcRequest.type = rpcTransactionType[request.type]\n if (typeof request.value !== 'undefined')\n rpcRequest.value = numberToHex(request.value)\n\n return rpcRequest\n}\n\nexport type DefineTransactionRequestErrorType =\n | DefineFormatterErrorType\n | ErrorType\n\nexport const defineTransactionRequest = /*#__PURE__*/ defineFormatter(\n 'transactionRequest',\n formatTransactionRequest,\n)\n\n//////////////////////////////////////////////////////////////////////////////\n\nfunction formatAuthorizationList(\n authorizationList: AuthorizationList,\n): RpcAuthorizationList {\n return authorizationList.map(\n (authorization) =>\n ({\n address: authorization.contractAddress,\n r: authorization.r,\n s: authorization.s,\n chainId: numberToHex(authorization.chainId),\n nonce: numberToHex(authorization.nonce),\n ...(typeof authorization.yParity !== 'undefined'\n ? { yParity: numberToHex(authorization.yParity) }\n : {}),\n ...(typeof authorization.v !== 'undefined' &&\n typeof authorization.yParity === 'undefined'\n ? { v: numberToHex(authorization.v) }\n : {}),\n }) as any,\n ) as RpcAuthorizationList\n}\n","import {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../errors/address.js'\nimport {\n InvalidBytesLengthError,\n type InvalidBytesLengthErrorType,\n} from '../errors/data.js'\nimport {\n AccountStateConflictError,\n type AccountStateConflictErrorType,\n StateAssignmentConflictError,\n type StateAssignmentConflictErrorType,\n} from '../errors/stateOverride.js'\nimport type {\n RpcAccountStateOverride,\n RpcStateMapping,\n RpcStateOverride,\n} from '../types/rpc.js'\nimport type { StateMapping, StateOverride } from '../types/stateOverride.js'\nimport { isAddress } from './address/isAddress.js'\nimport { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js'\n\ntype SerializeStateMappingParameters = StateMapping | undefined\n\ntype SerializeStateMappingErrorType = InvalidBytesLengthErrorType\n\n/** @internal */\nexport function serializeStateMapping(\n stateMapping: SerializeStateMappingParameters,\n): RpcStateMapping | undefined {\n if (!stateMapping || stateMapping.length === 0) return undefined\n return stateMapping.reduce((acc, { slot, value }) => {\n if (slot.length !== 66)\n throw new InvalidBytesLengthError({\n size: slot.length,\n targetSize: 66,\n type: 'hex',\n })\n if (value.length !== 66)\n throw new InvalidBytesLengthError({\n size: value.length,\n targetSize: 66,\n type: 'hex',\n })\n acc[slot] = value\n return acc\n }, {} as RpcStateMapping)\n}\n\ntype SerializeAccountStateOverrideParameters = Omit<\n StateOverride[number],\n 'address'\n>\n\ntype SerializeAccountStateOverrideErrorType =\n | NumberToHexErrorType\n | StateAssignmentConflictErrorType\n | SerializeStateMappingErrorType\n\n/** @internal */\nexport function serializeAccountStateOverride(\n parameters: SerializeAccountStateOverrideParameters,\n): RpcAccountStateOverride {\n const { balance, nonce, state, stateDiff, code } = parameters\n const rpcAccountStateOverride: RpcAccountStateOverride = {}\n if (code !== undefined) rpcAccountStateOverride.code = code\n if (balance !== undefined)\n rpcAccountStateOverride.balance = numberToHex(balance)\n if (nonce !== undefined) rpcAccountStateOverride.nonce = numberToHex(nonce)\n if (state !== undefined)\n rpcAccountStateOverride.state = serializeStateMapping(state)\n if (stateDiff !== undefined) {\n if (rpcAccountStateOverride.state) throw new StateAssignmentConflictError()\n rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff)\n }\n return rpcAccountStateOverride\n}\n\ntype SerializeStateOverrideParameters = StateOverride | undefined\n\nexport type SerializeStateOverrideErrorType =\n | InvalidAddressErrorType\n | AccountStateConflictErrorType\n | SerializeAccountStateOverrideErrorType\n\n/** @internal */\nexport function serializeStateOverride(\n parameters?: SerializeStateOverrideParameters,\n): RpcStateOverride | undefined {\n if (!parameters) return undefined\n const rpcStateOverride: RpcStateOverride = {}\n for (const { address, ...accountState } of parameters) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n if (rpcStateOverride[address])\n throw new AccountStateConflictError({ address: address })\n rpcStateOverride[address] = serializeAccountStateOverride(accountState)\n }\n return rpcStateOverride\n}\n","export const maxInt8 = 2n ** (8n - 1n) - 1n\nexport const maxInt16 = 2n ** (16n - 1n) - 1n\nexport const maxInt24 = 2n ** (24n - 1n) - 1n\nexport const maxInt32 = 2n ** (32n - 1n) - 1n\nexport const maxInt40 = 2n ** (40n - 1n) - 1n\nexport const maxInt48 = 2n ** (48n - 1n) - 1n\nexport const maxInt56 = 2n ** (56n - 1n) - 1n\nexport const maxInt64 = 2n ** (64n - 1n) - 1n\nexport const maxInt72 = 2n ** (72n - 1n) - 1n\nexport const maxInt80 = 2n ** (80n - 1n) - 1n\nexport const maxInt88 = 2n ** (88n - 1n) - 1n\nexport const maxInt96 = 2n ** (96n - 1n) - 1n\nexport const maxInt104 = 2n ** (104n - 1n) - 1n\nexport const maxInt112 = 2n ** (112n - 1n) - 1n\nexport const maxInt120 = 2n ** (120n - 1n) - 1n\nexport const maxInt128 = 2n ** (128n - 1n) - 1n\nexport const maxInt136 = 2n ** (136n - 1n) - 1n\nexport const maxInt144 = 2n ** (144n - 1n) - 1n\nexport const maxInt152 = 2n ** (152n - 1n) - 1n\nexport const maxInt160 = 2n ** (160n - 1n) - 1n\nexport const maxInt168 = 2n ** (168n - 1n) - 1n\nexport const maxInt176 = 2n ** (176n - 1n) - 1n\nexport const maxInt184 = 2n ** (184n - 1n) - 1n\nexport const maxInt192 = 2n ** (192n - 1n) - 1n\nexport const maxInt200 = 2n ** (200n - 1n) - 1n\nexport const maxInt208 = 2n ** (208n - 1n) - 1n\nexport const maxInt216 = 2n ** (216n - 1n) - 1n\nexport const maxInt224 = 2n ** (224n - 1n) - 1n\nexport const maxInt232 = 2n ** (232n - 1n) - 1n\nexport const maxInt240 = 2n ** (240n - 1n) - 1n\nexport const maxInt248 = 2n ** (248n - 1n) - 1n\nexport const maxInt256 = 2n ** (256n - 1n) - 1n\n\nexport const minInt8 = -(2n ** (8n - 1n))\nexport const minInt16 = -(2n ** (16n - 1n))\nexport const minInt24 = -(2n ** (24n - 1n))\nexport const minInt32 = -(2n ** (32n - 1n))\nexport const minInt40 = -(2n ** (40n - 1n))\nexport const minInt48 = -(2n ** (48n - 1n))\nexport const minInt56 = -(2n ** (56n - 1n))\nexport const minInt64 = -(2n ** (64n - 1n))\nexport const minInt72 = -(2n ** (72n - 1n))\nexport const minInt80 = -(2n ** (80n - 1n))\nexport const minInt88 = -(2n ** (88n - 1n))\nexport const minInt96 = -(2n ** (96n - 1n))\nexport const minInt104 = -(2n ** (104n - 1n))\nexport const minInt112 = -(2n ** (112n - 1n))\nexport const minInt120 = -(2n ** (120n - 1n))\nexport const minInt128 = -(2n ** (128n - 1n))\nexport const minInt136 = -(2n ** (136n - 1n))\nexport const minInt144 = -(2n ** (144n - 1n))\nexport const minInt152 = -(2n ** (152n - 1n))\nexport const minInt160 = -(2n ** (160n - 1n))\nexport const minInt168 = -(2n ** (168n - 1n))\nexport const minInt176 = -(2n ** (176n - 1n))\nexport const minInt184 = -(2n ** (184n - 1n))\nexport const minInt192 = -(2n ** (192n - 1n))\nexport const minInt200 = -(2n ** (200n - 1n))\nexport const minInt208 = -(2n ** (208n - 1n))\nexport const minInt216 = -(2n ** (216n - 1n))\nexport const minInt224 = -(2n ** (224n - 1n))\nexport const minInt232 = -(2n ** (232n - 1n))\nexport const minInt240 = -(2n ** (240n - 1n))\nexport const minInt248 = -(2n ** (248n - 1n))\nexport const minInt256 = -(2n ** (256n - 1n))\n\nexport const maxUint8 = 2n ** 8n - 1n\nexport const maxUint16 = 2n ** 16n - 1n\nexport const maxUint24 = 2n ** 24n - 1n\nexport const maxUint32 = 2n ** 32n - 1n\nexport const maxUint40 = 2n ** 40n - 1n\nexport const maxUint48 = 2n ** 48n - 1n\nexport const maxUint56 = 2n ** 56n - 1n\nexport const maxUint64 = 2n ** 64n - 1n\nexport const maxUint72 = 2n ** 72n - 1n\nexport const maxUint80 = 2n ** 80n - 1n\nexport const maxUint88 = 2n ** 88n - 1n\nexport const maxUint96 = 2n ** 96n - 1n\nexport const maxUint104 = 2n ** 104n - 1n\nexport const maxUint112 = 2n ** 112n - 1n\nexport const maxUint120 = 2n ** 120n - 1n\nexport const maxUint128 = 2n ** 128n - 1n\nexport const maxUint136 = 2n ** 136n - 1n\nexport const maxUint144 = 2n ** 144n - 1n\nexport const maxUint152 = 2n ** 152n - 1n\nexport const maxUint160 = 2n ** 160n - 1n\nexport const maxUint168 = 2n ** 168n - 1n\nexport const maxUint176 = 2n ** 176n - 1n\nexport const maxUint184 = 2n ** 184n - 1n\nexport const maxUint192 = 2n ** 192n - 1n\nexport const maxUint200 = 2n ** 200n - 1n\nexport const maxUint208 = 2n ** 208n - 1n\nexport const maxUint216 = 2n ** 216n - 1n\nexport const maxUint224 = 2n ** 224n - 1n\nexport const maxUint232 = 2n ** 232n - 1n\nexport const maxUint240 = 2n ** 240n - 1n\nexport const maxUint248 = 2n ** 248n - 1n\nexport const maxUint256 = 2n ** 256n - 1n\n","import { type Address, parseAbi } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { multicall3Abi } from '../../constants/abis.js'\nimport { aggregate3Signature } from '../../constants/contract.js'\nimport {\n deploylessCallViaBytecodeBytecode,\n deploylessCallViaFactoryBytecode,\n} from '../../constants/contracts.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ChainDoesNotSupportContract,\n ClientChainNotConfiguredError,\n} from '../../errors/chain.js'\nimport {\n CounterfactualDeploymentFailedError,\n RawContractError,\n type RawContractErrorType,\n} from '../../errors/contract.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type { StateOverride } from '../../types/stateOverride.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { ExactPartial, UnionOmit } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeDeployDataErrorType,\n encodeDeployData,\n} from '../../utils/abi/encodeDeployData.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type GetCallErrorReturnType,\n getCallError,\n} from '../../utils/errors/getCallError.js'\nimport { extract } from '../../utils/formatters/extract.js'\nimport {\n type FormatTransactionRequestErrorType,\n type FormattedTransactionRequest,\n formatTransactionRequest,\n} from '../../utils/formatters/transactionRequest.js'\nimport {\n type CreateBatchSchedulerErrorType,\n createBatchScheduler,\n} from '../../utils/promise/createBatchScheduler.js'\nimport {\n type SerializeStateOverrideErrorType,\n serializeStateOverride,\n} from '../../utils/stateOverride.js'\nimport { assertRequest } from '../../utils/transaction/assertRequest.js'\nimport type {\n AssertRequestErrorType,\n AssertRequestParameters,\n} from '../../utils/transaction/assertRequest.js'\n\nexport type CallParameters<\n chain extends Chain | undefined = Chain | undefined,\n> = UnionOmit, 'from'> & {\n /** Account attached to the call (msg.sender). */\n account?: Account | Address | undefined\n /** Whether or not to enable multicall batching on this call. */\n batch?: boolean | undefined\n /** Bytecode to perform the call on. */\n code?: Hex | undefined\n /** Contract deployment factory address (ie. Create2 factory, Smart Account factory, etc). */\n factory?: Address | undefined\n /** Calldata to execute on the factory to deploy the contract. */\n factoryData?: Hex | undefined\n /** State overrides for the call. */\n stateOverride?: StateOverride | undefined\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /**\n * The balance of the account at a block tag.\n * @default 'latest'\n */\n blockTag?: BlockTag | undefined\n }\n )\ntype FormattedCall =\n FormattedTransactionRequest\n\nexport type CallReturnType = { data: Hex | undefined }\n\nexport type CallErrorType = GetCallErrorReturnType<\n | ParseAccountErrorType\n | SerializeStateOverrideErrorType\n | AssertRequestErrorType\n | NumberToHexErrorType\n | FormatTransactionRequestErrorType\n | ScheduleMulticallErrorType\n | RequestErrorType\n | ToDeploylessCallViaBytecodeDataErrorType\n | ToDeploylessCallViaFactoryDataErrorType\n>\n\n/**\n * Executes a new message call immediately without submitting a transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/call\n * - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)\n *\n * @param client - Client to use\n * @param parameters - {@link CallParameters}\n * @returns The call data. {@link CallReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { call } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const data = await call(client, {\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\nexport async function call(\n client: Client,\n args: CallParameters,\n): Promise {\n const {\n account: account_ = client.account,\n batch = Boolean(client.batch?.multicall),\n blockNumber,\n blockTag = 'latest',\n accessList,\n blobs,\n code,\n data: data_,\n factory,\n factoryData,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n stateOverride,\n ...rest\n } = args\n const account = account_ ? parseAccount(account_) : undefined\n\n if (code && (factory || factoryData))\n throw new BaseError(\n 'Cannot provide both `code` & `factory`/`factoryData` as parameters.',\n )\n if (code && to)\n throw new BaseError('Cannot provide both `code` & `to` as parameters.')\n\n // Check if the call is deployless via bytecode.\n const deploylessCallViaBytecode = code && data_\n // Check if the call is deployless via a factory.\n const deploylessCallViaFactory = factory && factoryData && to && data_\n const deploylessCall = deploylessCallViaBytecode || deploylessCallViaFactory\n\n const data = (() => {\n if (deploylessCallViaBytecode)\n return toDeploylessCallViaBytecodeData({\n code,\n data: data_,\n })\n if (deploylessCallViaFactory)\n return toDeploylessCallViaFactoryData({\n data: data_,\n factory,\n factoryData,\n to,\n })\n return data_\n })()\n\n try {\n assertRequest(args as AssertRequestParameters)\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const rpcStateOverride = serializeStateOverride(stateOverride)\n\n const chainFormat = client.chain?.formatters?.transactionRequest?.format\n const format = chainFormat || formatTransactionRequest\n\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n accessList,\n blobs,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to: deploylessCall ? undefined : to,\n value,\n } as TransactionRequest) as TransactionRequest\n\n if (batch && shouldPerformMulticall({ request }) && !rpcStateOverride) {\n try {\n return await scheduleMulticall(client, {\n ...request,\n blockNumber,\n blockTag,\n } as unknown as ScheduleMulticallParameters)\n } catch (err) {\n if (\n !(err instanceof ClientChainNotConfiguredError) &&\n !(err instanceof ChainDoesNotSupportContract)\n )\n throw err\n }\n }\n\n const response = await client.request({\n method: 'eth_call',\n params: rpcStateOverride\n ? [\n request as ExactPartial,\n block,\n rpcStateOverride,\n ]\n : [request as ExactPartial, block],\n })\n if (response === '0x') return { data: undefined }\n return { data: response }\n } catch (err) {\n const data = getRevertErrorData(err)\n\n // Check for CCIP-Read offchain lookup signature.\n const { offchainLookup, offchainLookupSignature } = await import(\n '../../utils/ccip.js'\n )\n if (\n client.ccipRead !== false &&\n data?.slice(0, 10) === offchainLookupSignature &&\n to\n )\n return { data: await offchainLookup(client, { data, to }) }\n\n // Check for counterfactual deployment error.\n if (deploylessCall && data?.slice(0, 10) === '0x101bb98d')\n throw new CounterfactualDeploymentFailedError({ factory })\n\n throw getCallError(err as ErrorType, {\n ...args,\n account,\n chain: client.chain,\n })\n }\n}\n\n// We only want to perform a scheduled multicall if:\n// - The request has calldata,\n// - The request has a target address,\n// - The target address is not already the aggregate3 signature,\n// - The request has no other properties (`nonce`, `gas`, etc cannot be sent with a multicall).\nfunction shouldPerformMulticall({ request }: { request: TransactionRequest }) {\n const { data, to, ...request_ } = request\n if (!data) return false\n if (data.startsWith(aggregate3Signature)) return false\n if (!to) return false\n if (\n Object.values(request_).filter((x) => typeof x !== 'undefined').length > 0\n )\n return false\n return true\n}\n\ntype ScheduleMulticallParameters = Pick<\n CallParameters,\n 'blockNumber' | 'blockTag'\n> & {\n data: Hex\n multicallAddress?: Address | undefined\n to: Address\n}\n\ntype ScheduleMulticallErrorType =\n | GetChainContractAddressErrorType\n | NumberToHexErrorType\n | CreateBatchSchedulerErrorType\n | EncodeFunctionDataErrorType\n | DecodeFunctionResultErrorType\n | RawContractErrorType\n | ErrorType\n\nasync function scheduleMulticall(\n client: Client,\n args: ScheduleMulticallParameters,\n) {\n const { batchSize = 1024, wait = 0 } =\n typeof client.batch?.multicall === 'object' ? client.batch.multicall : {}\n const {\n blockNumber,\n blockTag = 'latest',\n data,\n multicallAddress: multicallAddress_,\n to,\n } = args\n\n let multicallAddress = multicallAddress_\n if (!multicallAddress) {\n if (!client.chain) throw new ClientChainNotConfiguredError()\n\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n })\n }\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const { schedule } = createBatchScheduler({\n id: `${client.uid}.${block}`,\n wait,\n shouldSplitBatch(args) {\n const size = args.reduce((size, { data }) => size + (data.length - 2), 0)\n return size > batchSize * 2\n },\n fn: async (\n requests: {\n data: Hex\n to: Address\n }[],\n ) => {\n const calls = requests.map((request) => ({\n allowFailure: true,\n callData: request.data,\n target: request.to,\n }))\n\n const calldata = encodeFunctionData({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n })\n\n const data = await client.request({\n method: 'eth_call',\n params: [\n {\n data: calldata,\n to: multicallAddress,\n },\n block,\n ],\n })\n\n return decodeFunctionResult({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n data: data || '0x',\n })\n },\n })\n\n const [{ returnData, success }] = await schedule({ data, to })\n\n if (!success) throw new RawContractError({ data: returnData })\n if (returnData === '0x') return { data: undefined }\n return { data: returnData }\n}\n\ntype ToDeploylessCallViaBytecodeDataErrorType =\n | EncodeDeployDataErrorType\n | ErrorType\n\nfunction toDeploylessCallViaBytecodeData(parameters: {\n code: Hex\n data: Hex\n}) {\n const { code, data } = parameters\n return encodeDeployData({\n abi: parseAbi(['constructor(bytes, bytes)']),\n bytecode: deploylessCallViaBytecodeBytecode,\n args: [code, data],\n })\n}\n\ntype ToDeploylessCallViaFactoryDataErrorType =\n | EncodeDeployDataErrorType\n | ErrorType\n\nfunction toDeploylessCallViaFactoryData(parameters: {\n data: Hex\n factory: Address\n factoryData: Hex\n to: Address\n}) {\n const { data, factory, factoryData, to } = parameters\n return encodeDeployData({\n abi: parseAbi(['constructor(address, bytes, address, bytes)']),\n bytecode: deploylessCallViaFactoryBytecode,\n args: [to, data, factory, factoryData],\n })\n}\n\n/** @internal */\nexport type GetRevertErrorDataErrorType = ErrorType\n\n/** @internal */\nexport function getRevertErrorData(err: unknown) {\n if (!(err instanceof BaseError)) return undefined\n const error = err.walk() as RawContractError\n return typeof error?.data === 'object' ? error.data?.data : error.data\n}\n","import {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport { maxUint256 } from '../../constants/number.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport {\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n} from '../../errors/node.js'\nimport {\n FeeConflictError,\n type FeeConflictErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { isAddress } from '../address/isAddress.js'\n\nexport type AssertRequestParameters = ExactPartial<\n SendTransactionParameters\n>\n\nexport type AssertRequestErrorType =\n | InvalidAddressErrorType\n | FeeConflictErrorType\n | FeeCapTooHighErrorType\n | ParseAccountErrorType\n | TipAboveFeeCapErrorType\n | ErrorType\n\nexport function assertRequest(args: AssertRequestParameters) {\n const {\n account: account_,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n to,\n } = args\n const account = account_ ? parseAccount(account_) : undefined\n if (account && !isAddress(account.address))\n throw new InvalidAddressError({ address: account.address })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (\n typeof gasPrice !== 'undefined' &&\n (typeof maxFeePerGas !== 'undefined' ||\n typeof maxPriorityFeePerGas !== 'undefined')\n )\n throw new FeeConflictError()\n\n if (maxFeePerGas && maxFeePerGas > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas })\n if (\n maxPriorityFeePerGas &&\n maxFeePerGas &&\n maxPriorityFeePerGas > maxFeePerGas\n )\n throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas })\n}\n","/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n {\n name: 'target',\n type: 'address',\n },\n {\n name: 'allowFailure',\n type: 'bool',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n ],\n name: 'calls',\n type: 'tuple[]',\n },\n ],\n name: 'aggregate3',\n outputs: [\n {\n components: [\n {\n name: 'success',\n type: 'bool',\n },\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'returnData',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nconst universalResolverErrors = [\n {\n inputs: [],\n name: 'ResolverNotFound',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverWildcardNotSupported',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverNotContract',\n type: 'error',\n },\n {\n inputs: [\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'ResolverError',\n type: 'error',\n },\n {\n inputs: [\n {\n components: [\n {\n name: 'status',\n type: 'uint16',\n },\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'errors',\n type: 'tuple[]',\n },\n ],\n name: 'HttpError',\n type: 'error',\n },\n] as const\n\nexport const universalResolverResolveAbi = [\n ...universalResolverErrors,\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n { name: 'gateways', type: 'string[]' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n] as const\n\nexport const universalResolverReverseAbi = [\n ...universalResolverErrors,\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'bytes', name: 'reverseName' },\n { type: 'string[]', name: 'gateways' },\n ],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n] as const\n\nexport const textResolverAbi = [\n {\n name: 'text',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'key', type: 'string' },\n ],\n outputs: [{ name: '', type: 'string' }],\n },\n] as const\n\nexport const addressResolverAbi = [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [{ name: '', type: 'address' }],\n },\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'coinType', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes' }],\n },\n] as const\n\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue\n/** @internal */\nexport const smartAccountAbi = [\n {\n name: 'isValidSignature',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'hash', type: 'bytes32' },\n { name: 'signature', type: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4' }],\n },\n] as const\n\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) → bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n] as const\n\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n name: 'approved',\n type: 'bool',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'getApproved',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'operator',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'ownerOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'id',\n type: 'uint256',\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'operator',\n type: 'address',\n },\n {\n name: 'approved',\n type: 'bool',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenURI',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'tokeId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n] as const\n\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'asset',\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'convertToAssets',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'convertToShares',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxDeposit',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxMint',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxRedeem',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxWithdraw',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'mint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewDeposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewMint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewRedeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewWithdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'redeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAssets',\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","import type { AbiError } from 'abitype'\n\n// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#panic-via-assert-and-error-via-require\nexport const panicReasons = {\n 1: 'An `assert` condition failed.',\n 17: 'Arithmetic operation resulted in underflow or overflow.',\n 18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',\n 33: 'Attempted to convert to an invalid type.',\n 34: 'Attempted to access a storage byte array that is incorrectly encoded.',\n 49: 'Performed `.pop()` on an empty array',\n 50: 'Array index is out of bounds.',\n 65: 'Allocated too much memory or created an array which is too large.',\n 81: 'Attempted to call a zero-initialized variable of internal function type.',\n} as const\n\nexport const solidityError: AbiError = {\n inputs: [\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'Error',\n type: 'error',\n}\nexport const solidityPanic: AbiError = {\n inputs: [\n {\n name: 'reason',\n type: 'uint256',\n },\n ],\n name: 'Panic',\n type: 'error',\n}\n","export const etherUnits = {\n gwei: 9,\n wei: 18,\n}\nexport const gweiUnits = {\n ether: -9,\n wei: 9,\n}\nexport const weiUnits = {\n ether: -18,\n gwei: -9,\n}\n","import type { Abi, AbiEvent, AbiParameter } from 'abitype'\n\nimport type { Hex } from '../types/misc.js'\nimport { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js'\nimport { size } from '../utils/data/size.js'\n\nimport { BaseError } from './base.js'\n\nexport type AbiConstructorNotFoundErrorType = AbiConstructorNotFoundError & {\n name: 'AbiConstructorNotFoundError'\n}\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiConstructorParamsNotFoundErrorType =\n AbiConstructorParamsNotFoundError & {\n name: 'AbiConstructorParamsNotFoundError'\n }\n\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeInvalidErrorType =\n AbiDecodingDataSizeInvalidError & {\n name: 'AbiDecodingDataSizeInvalidError'\n }\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }: { data: Hex; size: number }) {\n super(\n [\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'),\n {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeTooSmallErrorType =\n AbiDecodingDataSizeTooSmallError & {\n name: 'AbiDecodingDataSizeTooSmallError'\n }\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n data,\n params,\n size,\n }: { data: Hex; params: readonly AbiParameter[]; size: number }) {\n super(\n [`Data size of ${size} bytes is too small for given parameters.`].join(\n '\\n',\n ),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n },\n )\n\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type AbiDecodingZeroDataErrorType = AbiDecodingZeroDataError & {\n name: 'AbiDecodingZeroDataError'\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n })\n }\n}\n\nexport type AbiEncodingArrayLengthMismatchErrorType =\n AbiEncodingArrayLengthMismatchError & {\n name: 'AbiEncodingArrayLengthMismatchError'\n }\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n type,\n }: { expectedLength: number; givenLength: number; type: string }) {\n super(\n [\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingArrayLengthMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingBytesSizeMismatchErrorType =\n AbiEncodingBytesSizeMismatchError & {\n name: 'AbiEncodingBytesSizeMismatchError'\n }\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }: { expectedSize: number; value: Hex }) {\n super(\n `Size of bytes \"${value}\" (bytes${size(\n value,\n )}) does not match expected size (bytes${expectedSize}).`,\n { name: 'AbiEncodingBytesSizeMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingLengthMismatchErrorType =\n AbiEncodingLengthMismatchError & {\n name: 'AbiEncodingLengthMismatchError'\n }\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n }: { expectedLength: number; givenLength: number }) {\n super(\n [\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingLengthMismatchError' },\n )\n }\n}\n\nexport type AbiErrorInputsNotFoundErrorType = AbiErrorInputsNotFoundError & {\n name: 'AbiErrorInputsNotFoundError'\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorNotFoundErrorType = AbiErrorNotFoundError & {\n name: 'AbiErrorNotFoundError'\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(\n errorName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorSignatureNotFoundErrorType =\n AbiErrorSignatureNotFoundError & {\n name: 'AbiErrorSignatureNotFoundError'\n }\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n signature: Hex\n\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n },\n )\n this.signature = signature\n }\n}\n\nexport type AbiEventSignatureEmptyTopicsErrorType =\n AbiEventSignatureEmptyTopicsError & {\n name: 'AbiEventSignatureEmptyTopicsError'\n }\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n })\n }\n}\n\nexport type AbiEventSignatureNotFoundErrorType =\n AbiEventSignatureNotFoundError & {\n name: 'AbiEventSignatureNotFoundError'\n }\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiEventNotFoundErrorType = AbiEventNotFoundError & {\n name: 'AbiEventNotFoundError'\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(\n eventName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionNotFoundErrorType = AbiFunctionNotFoundError & {\n name: 'AbiFunctionNotFoundError'\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(\n functionName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionOutputsNotFoundErrorType =\n AbiFunctionOutputsNotFoundError & {\n name: 'AbiFunctionOutputsNotFoundError'\n }\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionSignatureNotFoundErrorType =\n AbiFunctionSignatureNotFoundError & {\n name: 'AbiFunctionSignatureNotFoundError'\n }\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiItemAmbiguityErrorType = AbiItemAmbiguityError & {\n name: 'AbiItemAmbiguityError'\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(\n x: { abiItem: Abi[number]; type: string },\n y: { abiItem: Abi[number]; type: string },\n ) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n })\n }\n}\n\nexport type BytesSizeMismatchErrorType = BytesSizeMismatchError & {\n name: 'BytesSizeMismatchError'\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({\n expectedSize,\n givenSize,\n }: { expectedSize: number; givenSize: number }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n })\n }\n}\n\nexport type DecodeLogDataMismatchErrorType = DecodeLogDataMismatch & {\n name: 'DecodeLogDataMismatch'\n}\nexport class DecodeLogDataMismatch extends BaseError {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n abiItem,\n data,\n params,\n size,\n }: {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n }) {\n super(\n [\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n },\n )\n\n this.abiItem = abiItem\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type DecodeLogTopicsMismatchErrorType = DecodeLogTopicsMismatch & {\n name: 'DecodeLogTopicsMismatch'\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n abiItem: AbiEvent\n\n constructor({\n abiItem,\n param,\n }: {\n abiItem: AbiEvent\n param: AbiParameter & { indexed: boolean }\n }) {\n super(\n [\n `Expected a topic for indexed event parameter${\n param.name ? ` \"${param.name}\"` : ''\n } on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'),\n { name: 'DecodeLogTopicsMismatch' },\n )\n\n this.abiItem = abiItem\n }\n}\n\nexport type InvalidAbiEncodingTypeErrorType = InvalidAbiEncodingTypeError & {\n name: 'InvalidAbiEncodingTypeError'\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiEncodingType' },\n )\n }\n}\n\nexport type InvalidAbiDecodingTypeErrorType = InvalidAbiDecodingTypeError & {\n name: 'InvalidAbiDecodingTypeError'\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiDecodingType' },\n )\n }\n}\n\nexport type InvalidArrayErrorType = InvalidArrayError & {\n name: 'InvalidArrayError'\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value: unknown) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n })\n }\n}\n\nexport type InvalidDefinitionTypeErrorType = InvalidDefinitionTypeError & {\n name: 'InvalidDefinitionTypeError'\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type: string) {\n super(\n [\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'),\n { name: 'InvalidDefinitionTypeError' },\n )\n }\n}\n\nexport type UnsupportedPackedAbiTypeErrorType = UnsupportedPackedAbiType & {\n name: 'UnsupportedPackedAbiType'\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type: unknown) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n })\n }\n}\n","import { BaseError } from './base.js'\n\nexport type InvalidAddressErrorType = InvalidAddressError & {\n name: 'InvalidAddressError'\n}\nexport class InvalidAddressError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n })\n }\n}\n","export const version = '2.21.15'\n","import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn)\n return fn ? null : err\n}\n","import type { Chain } from '../types/chain.js'\n\nimport { BaseError } from './base.js'\n\nexport type ChainDoesNotSupportContractErrorType =\n ChainDoesNotSupportContract & {\n name: 'ChainDoesNotSupportContract'\n }\nexport class ChainDoesNotSupportContract extends BaseError {\n constructor({\n blockNumber,\n chain,\n contract,\n }: {\n blockNumber?: bigint | undefined\n chain: Chain\n contract: { name: string; blockCreated?: number | undefined }\n }) {\n super(\n `Chain \"${chain.name}\" does not support contract \"${contract.name}\".`,\n {\n metaMessages: [\n 'This could be due to any of the following:',\n ...(blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n ? [\n `- The contract \"${contract.name}\" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`,\n ]\n : [\n `- The chain does not have the contract \"${contract.name}\" configured.`,\n ]),\n ],\n name: 'ChainDoesNotSupportContract',\n },\n )\n }\n}\n\nexport type ChainMismatchErrorType = ChainMismatchError & {\n name: 'ChainMismatchError'\n}\nexport class ChainMismatchError extends BaseError {\n constructor({\n chain,\n currentChainId,\n }: {\n chain: Chain\n currentChainId: number\n }) {\n super(\n `The current chain of the wallet (id: ${currentChainId}) does not match the target chain for the transaction (id: ${chain.id} – ${chain.name}).`,\n {\n metaMessages: [\n `Current Chain ID: ${currentChainId}`,\n `Expected Chain ID: ${chain.id} – ${chain.name}`,\n ],\n name: 'ChainMismatchError',\n },\n )\n }\n}\n\nexport type ChainNotFoundErrorType = ChainNotFoundError & {\n name: 'ChainNotFoundError'\n}\nexport class ChainNotFoundError extends BaseError {\n constructor() {\n super(\n [\n 'No chain was provided to the request.',\n 'Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient.',\n ].join('\\n'),\n {\n name: 'ChainNotFoundError',\n },\n )\n }\n}\n\nexport type ClientChainNotConfiguredErrorType =\n ClientChainNotConfiguredError & {\n name: 'ClientChainNotConfiguredError'\n }\nexport class ClientChainNotConfiguredError extends BaseError {\n constructor() {\n super('No chain was provided to the Client.', {\n name: 'ClientChainNotConfiguredError',\n })\n }\n}\n\nexport type InvalidChainIdErrorType = InvalidChainIdError & {\n name: 'InvalidChainIdError'\n}\nexport class InvalidChainIdError extends BaseError {\n constructor({ chainId }: { chainId?: number | undefined }) {\n super(\n typeof chainId === 'number'\n ? `Chain ID \"${chainId}\" is invalid.`\n : 'Chain ID is invalid.',\n { name: 'InvalidChainIdError' },\n )\n }\n}\n","import type { AbiParameter } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\nimport { stringify } from '../stringify.js'\n\nexport type FormatAbiItemWithArgsErrorType = ErrorType\n\nexport function formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName = true,\n includeName = false,\n}: {\n abiItem: AbiItem\n args: readonly unknown[]\n includeFunctionName?: boolean | undefined\n includeName?: boolean | undefined\n}) {\n if (!('name' in abiItem)) return\n if (!('inputs' in abiItem)) return\n if (!abiItem.inputs) return\n return `${includeFunctionName ? abiItem.name : ''}(${abiItem.inputs\n .map(\n (input: AbiParameter, i: number) =>\n `${includeName && input.name ? `${input.name}: ` : ''}${\n typeof args[i] === 'object' ? stringify(args[i]) : args[i]\n }`,\n )\n .join(', ')})`\n}\n","import type { Abi, Address } from 'abitype'\n\nimport { parseAccount } from '../accounts/utils/parseAccount.js'\nimport type { CallParameters } from '../actions/public/call.js'\nimport { panicReasons } from '../constants/solidity.js'\nimport type { Chain } from '../types/chain.js'\nimport type { Hex } from '../types/misc.js'\nimport {\n type DecodeErrorResultReturnType,\n decodeErrorResult,\n} from '../utils/abi/decodeErrorResult.js'\nimport { formatAbiItem } from '../utils/abi/formatAbiItem.js'\nimport { formatAbiItemWithArgs } from '../utils/abi/formatAbiItemWithArgs.js'\nimport { getAbiItem } from '../utils/abi/getAbiItem.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { AbiErrorSignatureNotFoundError } from './abi.js'\nimport { BaseError } from './base.js'\nimport { prettyStateOverride } from './stateOverride.js'\nimport { prettyPrint } from './transaction.js'\nimport { getContractAddress } from './utils.js'\n\nexport type CallExecutionErrorType = CallExecutionError & {\n name: 'CallExecutionError'\n}\nexport class CallExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account: account_,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n stateOverride,\n }: CallParameters & {\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const account = account_ ? parseAccount(account_) : undefined\n let prettyArgs = prettyPrint({\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n if (stateOverride) {\n prettyArgs += `\\n${prettyStateOverride(stateOverride)}`\n }\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Raw Call Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'CallExecutionError',\n })\n this.cause = cause\n }\n}\n\nexport type ContractFunctionExecutionErrorType =\n ContractFunctionExecutionError & {\n name: 'ContractFunctionExecutionError'\n }\nexport class ContractFunctionExecutionError extends BaseError {\n abi: Abi\n args?: unknown[] | undefined\n override cause: BaseError\n contractAddress?: Address | undefined\n formattedArgs?: string | undefined\n functionName: string\n sender?: Address | undefined\n\n constructor(\n cause: BaseError,\n {\n abi,\n args,\n contractAddress,\n docsPath,\n functionName,\n sender,\n }: {\n abi: Abi\n args?: any | undefined\n contractAddress?: Address | undefined\n docsPath?: string | undefined\n functionName: string\n sender?: Address | undefined\n },\n ) {\n const abiItem = getAbiItem({ abi, args, name: functionName })\n const formattedArgs = abiItem\n ? formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined\n const functionWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined\n\n const prettyArgs = prettyPrint({\n address: contractAddress && getContractAddress(contractAddress),\n function: functionWithParams,\n args:\n formattedArgs &&\n formattedArgs !== '()' &&\n `${[...Array(functionName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`,\n sender,\n })\n\n super(\n cause.shortMessage ||\n `An unknown error occurred while executing the contract function \"${functionName}\".`,\n {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n prettyArgs && 'Contract Call:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'ContractFunctionExecutionError',\n },\n )\n this.abi = abi\n this.args = args\n this.cause = cause\n this.contractAddress = contractAddress\n this.functionName = functionName\n this.sender = sender\n }\n}\n\nexport type ContractFunctionRevertedErrorType =\n ContractFunctionRevertedError & {\n name: 'ContractFunctionRevertedError'\n }\nexport class ContractFunctionRevertedError extends BaseError {\n data?: DecodeErrorResultReturnType | undefined\n reason?: string | undefined\n signature?: Hex | undefined\n\n constructor({\n abi,\n data,\n functionName,\n message,\n }: {\n abi: Abi\n data?: Hex | undefined\n functionName: string\n message?: string | undefined\n }) {\n let cause: Error | undefined\n let decodedData: DecodeErrorResultReturnType | undefined = undefined\n let metaMessages: string[] | undefined\n let reason: string | undefined\n if (data && data !== '0x') {\n try {\n decodedData = decodeErrorResult({ abi, data })\n const { abiItem, errorName, args: errorArgs } = decodedData\n if (errorName === 'Error') {\n reason = (errorArgs as [string])[0]\n } else if (errorName === 'Panic') {\n const [firstArg] = errorArgs as [number]\n reason = panicReasons[firstArg as keyof typeof panicReasons]\n } else {\n const errorWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined\n const formattedArgs =\n abiItem && errorArgs\n ? formatAbiItemWithArgs({\n abiItem,\n args: errorArgs,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined\n\n metaMessages = [\n errorWithParams ? `Error: ${errorWithParams}` : '',\n formattedArgs && formattedArgs !== '()'\n ? ` ${[...Array(errorName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`\n : '',\n ]\n }\n } catch (err) {\n cause = err as Error\n }\n } else if (message) reason = message\n\n let signature: Hex | undefined\n if (cause instanceof AbiErrorSignatureNotFoundError) {\n signature = cause.signature\n metaMessages = [\n `Unable to decode signature \"${signature}\" as it was not found on the provided ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ]\n }\n\n super(\n (reason && reason !== 'execution reverted') || signature\n ? [\n `The contract function \"${functionName}\" reverted with the following ${\n signature ? 'signature' : 'reason'\n }:`,\n reason || signature,\n ].join('\\n')\n : `The contract function \"${functionName}\" reverted.`,\n {\n cause,\n metaMessages,\n name: 'ContractFunctionRevertedError',\n },\n )\n\n this.data = decodedData\n this.reason = reason\n this.signature = signature\n }\n}\n\nexport type ContractFunctionZeroDataErrorType =\n ContractFunctionZeroDataError & {\n name: 'ContractFunctionZeroDataError'\n }\nexport class ContractFunctionZeroDataError extends BaseError {\n constructor({ functionName }: { functionName: string }) {\n super(`The contract function \"${functionName}\" returned no data (\"0x\").`, {\n metaMessages: [\n 'This could be due to any of the following:',\n ` - The contract does not have the function \"${functionName}\",`,\n ' - The parameters passed to the contract function may be invalid, or',\n ' - The address is not a contract.',\n ],\n name: 'ContractFunctionZeroDataError',\n })\n }\n}\n\nexport type CounterfactualDeploymentFailedErrorType =\n CounterfactualDeploymentFailedError & {\n name: 'CounterfactualDeploymentFailedError'\n }\nexport class CounterfactualDeploymentFailedError extends BaseError {\n constructor({ factory }: { factory?: Address | undefined }) {\n super(\n `Deployment for counterfactual contract call failed${\n factory ? ` for factory \"${factory}\".` : ''\n }`,\n {\n metaMessages: [\n 'Please ensure:',\n '- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).',\n '- The `factoryData` is a valid encoded function call for contract deployment function on the factory.',\n ],\n name: 'CounterfactualDeploymentFailedError',\n },\n )\n }\n}\n\nexport type RawContractErrorType = RawContractError & {\n name: 'RawContractError'\n}\nexport class RawContractError extends BaseError {\n code = 3\n\n data?: Hex | { data?: Hex | undefined } | undefined\n\n constructor({\n data,\n message,\n }: {\n data?: Hex | { data?: Hex | undefined } | undefined\n message?: string | undefined\n }) {\n super(message || '', { name: 'RawContractError' })\n this.data = data\n }\n}\n","import { BaseError } from './base.js'\n\nexport type SliceOffsetOutOfBoundsErrorType = SliceOffsetOutOfBoundsError & {\n name: 'SliceOffsetOutOfBoundsError'\n}\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({\n offset,\n position,\n size,\n }: { offset: number; position: 'start' | 'end'; size: number }) {\n super(\n `Slice ${\n position === 'start' ? 'starting' : 'ending'\n } at offset \"${offset}\" is out-of-bounds (size: ${size}).`,\n { name: 'SliceOffsetOutOfBoundsError' },\n )\n }\n}\n\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`,\n { name: 'SizeExceedsPaddingSizeError' },\n )\n }\n}\n\nexport type InvalidBytesLengthErrorType = InvalidBytesLengthError & {\n name: 'InvalidBytesLengthError'\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`,\n { name: 'InvalidBytesLengthError' },\n )\n }\n}\n","import type { ByteArray, Hex } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type IntegerOutOfRangeErrorType = IntegerOutOfRangeError & {\n name: 'IntegerOutOfRangeError'\n}\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({\n max,\n min,\n signed,\n size,\n value,\n }: {\n max?: string | undefined\n min: string\n signed?: boolean | undefined\n size?: number | undefined\n value: string\n }) {\n super(\n `Number \"${value}\" is not in safe ${\n size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''\n }integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`,\n { name: 'IntegerOutOfRangeError' },\n )\n }\n}\n\nexport type InvalidBytesBooleanErrorType = InvalidBytesBooleanError & {\n name: 'InvalidBytesBooleanError'\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes: ByteArray) {\n super(\n `Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,\n {\n name: 'InvalidBytesBooleanError',\n },\n )\n }\n}\n\nexport type InvalidHexBooleanErrorType = InvalidHexBooleanError & {\n name: 'InvalidHexBooleanError'\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex: Hex) {\n super(\n `Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`,\n { name: 'InvalidHexBooleanError' },\n )\n }\n}\n\nexport type InvalidHexValueErrorType = InvalidHexValueError & {\n name: 'InvalidHexValueError'\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value: Hex) {\n super(\n `Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`,\n { name: 'InvalidHexValueError' },\n )\n }\n}\n\nexport type SizeOverflowErrorType = SizeOverflowError & {\n name: 'SizeOverflowError'\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {\n super(\n `Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`,\n { name: 'SizeOverflowError' },\n )\n }\n}\n","import { stringify } from '../utils/stringify.js'\n\nimport { BaseError } from './base.js'\nimport { getUrl } from './utils.js'\n\nexport type HttpRequestErrorType = HttpRequestError & {\n name: 'HttpRequestError'\n}\nexport class HttpRequestError extends BaseError {\n body?: { [x: string]: unknown } | { [y: string]: unknown }[] | undefined\n headers?: Headers | undefined\n status?: number | undefined\n url: string\n\n constructor({\n body,\n cause,\n details,\n headers,\n status,\n url,\n }: {\n body?: { [x: string]: unknown } | { [y: string]: unknown }[] | undefined\n cause?: Error | undefined\n details?: string | undefined\n headers?: Headers | undefined\n status?: number | undefined\n url: string\n }) {\n super('HTTP request failed.', {\n cause,\n details,\n metaMessages: [\n status && `Status: ${status}`,\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean) as string[],\n name: 'HttpRequestError',\n })\n this.body = body\n this.headers = headers\n this.status = status\n this.url = url\n }\n}\n\nexport type WebSocketRequestErrorType = WebSocketRequestError & {\n name: 'WebSocketRequestError'\n}\nexport class WebSocketRequestError extends BaseError {\n constructor({\n body,\n cause,\n details,\n url,\n }: {\n body?: { [key: string]: unknown } | undefined\n cause?: Error | undefined\n details?: string | undefined\n url: string\n }) {\n super('WebSocket request failed.', {\n cause,\n details,\n metaMessages: [\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean) as string[],\n name: 'WebSocketRequestError',\n })\n }\n}\n\nexport type RpcRequestErrorType = RpcRequestError & {\n name: 'RpcRequestError'\n}\nexport class RpcRequestError extends BaseError {\n code: number\n\n constructor({\n body,\n error,\n url,\n }: {\n body: { [x: string]: unknown } | { [y: string]: unknown }[]\n error: { code: number; message: string }\n url: string\n }) {\n super('RPC Request failed.', {\n cause: error as any,\n details: error.message,\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'RpcRequestError',\n })\n this.code = error.code\n }\n}\n\nexport type SocketClosedErrorType = SocketClosedError & {\n name: 'SocketClosedError'\n}\nexport class SocketClosedError extends BaseError {\n constructor({\n url,\n }: {\n url?: string | undefined\n } = {}) {\n super('The socket has been closed.', {\n metaMessages: [url && `URL: ${getUrl(url)}`].filter(Boolean) as string[],\n name: 'SocketClosedError',\n })\n }\n}\n\nexport type TimeoutErrorType = TimeoutError & {\n name: 'TimeoutError'\n}\nexport class TimeoutError extends BaseError {\n constructor({\n body,\n url,\n }: {\n body: { [x: string]: unknown } | { [y: string]: unknown }[]\n url: string\n }) {\n super('The request took too long to respond.', {\n details: 'The request timed out.',\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'TimeoutError',\n })\n }\n}\n","import type { StateMapping, StateOverride } from '../types/stateOverride.js'\nimport { BaseError } from './base.js'\n\nexport type AccountStateConflictErrorType = AccountStateConflictError & {\n name: 'AccountStateConflictError'\n}\n\nexport class AccountStateConflictError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`State for account \"${address}\" is set multiple times.`, {\n name: 'AccountStateConflictError',\n })\n }\n}\n\nexport type StateAssignmentConflictErrorType = StateAssignmentConflictError & {\n name: 'StateAssignmentConflictError'\n}\n\nexport class StateAssignmentConflictError extends BaseError {\n constructor() {\n super('state and stateDiff are set on the same account.', {\n name: 'StateAssignmentConflictError',\n })\n }\n}\n\n/** @internal */\nexport function prettyStateMapping(stateMapping: StateMapping) {\n return stateMapping.reduce((pretty, { slot, value }) => {\n return `${pretty} ${slot}: ${value}\\n`\n }, '')\n}\n\nexport function prettyStateOverride(stateOverride: StateOverride) {\n return stateOverride\n .reduce((pretty, { address, ...state }) => {\n let val = `${pretty} ${address}:\\n`\n if (state.nonce) val += ` nonce: ${state.nonce}\\n`\n if (state.balance) val += ` balance: ${state.balance}\\n`\n if (state.code) val += ` code: ${state.code}\\n`\n if (state.state) {\n val += ' state:\\n'\n val += prettyStateMapping(state.state)\n }\n if (state.stateDiff) {\n val += ' stateDiff:\\n'\n val += prettyStateMapping(state.stateDiff)\n }\n return val\n }, ' State Override:\\n')\n .slice(0, -1)\n}\n","import type { Account } from '../accounts/types.js'\nimport type { SendTransactionParameters } from '../actions/wallet/sendTransaction.js'\nimport type { BlockTag } from '../types/block.js'\nimport type { Chain } from '../types/chain.js'\nimport type { Hash, Hex } from '../types/misc.js'\nimport type { TransactionType } from '../types/transaction.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\n\nexport function prettyPrint(\n args: Record,\n) {\n const entries = Object.entries(args)\n .map(([key, value]) => {\n if (value === undefined || value === false) return null\n return [key, value]\n })\n .filter(Boolean) as [string, string][]\n const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0)\n return entries\n .map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`)\n .join('\\n')\n}\n\nexport type FeeConflictErrorType = FeeConflictError & {\n name: 'FeeConflictError'\n}\nexport class FeeConflictError extends BaseError {\n constructor() {\n super(\n [\n 'Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.',\n 'Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.',\n ].join('\\n'),\n { name: 'FeeConflictError' },\n )\n }\n}\n\nexport type InvalidLegacyVErrorType = InvalidLegacyVError & {\n name: 'InvalidLegacyVError'\n}\nexport class InvalidLegacyVError extends BaseError {\n constructor({ v }: { v: bigint }) {\n super(`Invalid \\`v\\` value \"${v}\". Expected 27 or 28.`, {\n name: 'InvalidLegacyVError',\n })\n }\n}\n\nexport type InvalidSerializableTransactionErrorType =\n InvalidSerializableTransactionError & {\n name: 'InvalidSerializableTransactionError'\n }\nexport class InvalidSerializableTransactionError extends BaseError {\n constructor({ transaction }: { transaction: Record }) {\n super('Cannot infer a transaction type from provided transaction.', {\n metaMessages: [\n 'Provided Transaction:',\n '{',\n prettyPrint(transaction),\n '}',\n '',\n 'To infer the type, either provide:',\n '- a `type` to the Transaction, or',\n '- an EIP-1559 Transaction with `maxFeePerGas`, or',\n '- an EIP-2930 Transaction with `gasPrice` & `accessList`, or',\n '- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or',\n '- an EIP-7702 Transaction with `authorizationList`, or',\n '- a Legacy Transaction with `gasPrice`',\n ],\n name: 'InvalidSerializableTransactionError',\n })\n }\n}\n\nexport type InvalidSerializedTransactionTypeErrorType =\n InvalidSerializedTransactionTypeError & {\n name: 'InvalidSerializedTransactionTypeError'\n }\nexport class InvalidSerializedTransactionTypeError extends BaseError {\n serializedType: Hex\n\n constructor({ serializedType }: { serializedType: Hex }) {\n super(`Serialized transaction type \"${serializedType}\" is invalid.`, {\n name: 'InvalidSerializedTransactionType',\n })\n\n this.serializedType = serializedType\n }\n}\n\nexport type InvalidSerializedTransactionErrorType =\n InvalidSerializedTransactionError & {\n name: 'InvalidSerializedTransactionError'\n }\nexport class InvalidSerializedTransactionError extends BaseError {\n serializedTransaction: Hex\n type: TransactionType\n\n constructor({\n attributes,\n serializedTransaction,\n type,\n }: {\n attributes: Record\n serializedTransaction: Hex\n type: TransactionType\n }) {\n const missing = Object.entries(attributes)\n .map(([key, value]) => (typeof value === 'undefined' ? key : undefined))\n .filter(Boolean)\n super(`Invalid serialized transaction of type \"${type}\" was provided.`, {\n metaMessages: [\n `Serialized Transaction: \"${serializedTransaction}\"`,\n missing.length > 0 ? `Missing Attributes: ${missing.join(', ')}` : '',\n ].filter(Boolean),\n name: 'InvalidSerializedTransactionError',\n })\n\n this.serializedTransaction = serializedTransaction\n this.type = type\n }\n}\n\nexport type InvalidStorageKeySizeErrorType = InvalidStorageKeySizeError & {\n name: 'InvalidStorageKeySizeError'\n}\nexport class InvalidStorageKeySizeError extends BaseError {\n constructor({ storageKey }: { storageKey: Hex }) {\n super(\n `Size for storage key \"${storageKey}\" is invalid. Expected 32 bytes. Got ${Math.floor(\n (storageKey.length - 2) / 2,\n )} bytes.`,\n { name: 'InvalidStorageKeySizeError' },\n )\n }\n}\n\nexport type TransactionExecutionErrorType = TransactionExecutionError & {\n name: 'TransactionExecutionError'\n}\nexport class TransactionExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n }: Omit & {\n account: Account\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const prettyArgs = prettyPrint({\n chain: chain && `${chain?.name} (id: ${chain?.id})`,\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Request Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'TransactionExecutionError',\n })\n this.cause = cause\n }\n}\n\nexport type TransactionNotFoundErrorType = TransactionNotFoundError & {\n name: 'TransactionNotFoundError'\n}\nexport class TransactionNotFoundError extends BaseError {\n constructor({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n }: {\n blockHash?: Hash | undefined\n blockNumber?: bigint | undefined\n blockTag?: BlockTag | undefined\n hash?: Hash | undefined\n index?: number | undefined\n }) {\n let identifier = 'Transaction'\n if (blockTag && index !== undefined)\n identifier = `Transaction at block time \"${blockTag}\" at index \"${index}\"`\n if (blockHash && index !== undefined)\n identifier = `Transaction at block hash \"${blockHash}\" at index \"${index}\"`\n if (blockNumber && index !== undefined)\n identifier = `Transaction at block number \"${blockNumber}\" at index \"${index}\"`\n if (hash) identifier = `Transaction with hash \"${hash}\"`\n super(`${identifier} could not be found.`, {\n name: 'TransactionNotFoundError',\n })\n }\n}\n\nexport type TransactionReceiptNotFoundErrorType =\n TransactionReceiptNotFoundError & {\n name: 'TransactionReceiptNotFoundError'\n }\nexport class TransactionReceiptNotFoundError extends BaseError {\n constructor({ hash }: { hash: Hash }) {\n super(\n `Transaction receipt with hash \"${hash}\" could not be found. The Transaction may not be processed on a block yet.`,\n {\n name: 'TransactionReceiptNotFoundError',\n },\n )\n }\n}\n\nexport type WaitForTransactionReceiptTimeoutErrorType =\n WaitForTransactionReceiptTimeoutError & {\n name: 'WaitForTransactionReceiptTimeoutError'\n }\nexport class WaitForTransactionReceiptTimeoutError extends BaseError {\n constructor({ hash }: { hash: Hash }) {\n super(\n `Timed out while waiting for transaction with hash \"${hash}\" to be confirmed.`,\n { name: 'WaitForTransactionReceiptTimeoutError' },\n )\n }\n}\n","import type { Address } from 'abitype'\n\nexport type ErrorType = Error & { name: name }\n\nexport const getContractAddress = (address: Address) => address\nexport const getUrl = (url: string) => url\n","import { BaseError } from './base.js'\n\nexport type NegativeOffsetErrorType = NegativeOffsetError & {\n name: 'NegativeOffsetError'\n}\nexport class NegativeOffsetError extends BaseError {\n constructor({ offset }: { offset: number }) {\n super(`Offset \\`${offset}\\` cannot be negative.`, {\n name: 'NegativeOffsetError',\n })\n }\n}\n\nexport type PositionOutOfBoundsErrorType = PositionOutOfBoundsError & {\n name: 'PositionOutOfBoundsError'\n}\nexport class PositionOutOfBoundsError extends BaseError {\n constructor({ length, position }: { length: number; position: number }) {\n super(\n `Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`,\n { name: 'PositionOutOfBoundsError' },\n )\n }\n}\n\nexport type RecursiveReadLimitExceededErrorType =\n RecursiveReadLimitExceededError & {\n name: 'RecursiveReadLimitExceededError'\n }\nexport class RecursiveReadLimitExceededError extends BaseError {\n constructor({ count, limit }: { count: number; limit: number }) {\n super(\n `Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`,\n { name: 'RecursiveReadLimitExceededError' },\n )\n }\n}\n","import {\n NegativeOffsetError,\n type NegativeOffsetErrorType,\n PositionOutOfBoundsError,\n type PositionOutOfBoundsErrorType,\n RecursiveReadLimitExceededError,\n type RecursiveReadLimitExceededErrorType,\n} from '../errors/cursor.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { ByteArray } from '../types/misc.js'\n\nexport type Cursor = {\n bytes: ByteArray\n dataView: DataView\n position: number\n positionReadCount: Map\n recursiveReadCount: number\n recursiveReadLimit: number\n remaining: number\n assertReadLimit(position?: number): void\n assertPosition(position: number): void\n decrementPosition(offset: number): void\n getReadCount(position?: number): number\n incrementPosition(offset: number): void\n inspectByte(position?: number): ByteArray[number]\n inspectBytes(length: number, position?: number): ByteArray\n inspectUint8(position?: number): number\n inspectUint16(position?: number): number\n inspectUint24(position?: number): number\n inspectUint32(position?: number): number\n pushByte(byte: ByteArray[number]): void\n pushBytes(bytes: ByteArray): void\n pushUint8(value: number): void\n pushUint16(value: number): void\n pushUint24(value: number): void\n pushUint32(value: number): void\n readByte(): ByteArray[number]\n readBytes(length: number, size?: number): ByteArray\n readUint8(): number\n readUint16(): number\n readUint24(): number\n readUint32(): number\n setPosition(position: number): () => void\n _touch(): void\n}\n\ntype CursorErrorType =\n | CursorAssertPositionErrorType\n | CursorDecrementPositionErrorType\n | CursorIncrementPositionErrorType\n | ErrorType\n\ntype CursorAssertPositionErrorType = PositionOutOfBoundsErrorType | ErrorType\n\ntype CursorDecrementPositionErrorType = NegativeOffsetError | ErrorType\n\ntype CursorIncrementPositionErrorType = NegativeOffsetError | ErrorType\n\ntype StaticCursorErrorType =\n | NegativeOffsetErrorType\n | RecursiveReadLimitExceededErrorType\n\nconst staticCursor: Cursor = {\n bytes: new Uint8Array(),\n dataView: new DataView(new ArrayBuffer(0)),\n position: 0,\n positionReadCount: new Map(),\n recursiveReadCount: 0,\n recursiveReadLimit: Number.POSITIVE_INFINITY,\n assertReadLimit() {\n if (this.recursiveReadCount >= this.recursiveReadLimit)\n throw new RecursiveReadLimitExceededError({\n count: this.recursiveReadCount + 1,\n limit: this.recursiveReadLimit,\n })\n },\n assertPosition(position) {\n if (position < 0 || position > this.bytes.length - 1)\n throw new PositionOutOfBoundsError({\n length: this.bytes.length,\n position,\n })\n },\n decrementPosition(offset) {\n if (offset < 0) throw new NegativeOffsetError({ offset })\n const position = this.position - offset\n this.assertPosition(position)\n this.position = position\n },\n getReadCount(position) {\n return this.positionReadCount.get(position || this.position) || 0\n },\n incrementPosition(offset) {\n if (offset < 0) throw new NegativeOffsetError({ offset })\n const position = this.position + offset\n this.assertPosition(position)\n this.position = position\n },\n inspectByte(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position)\n return this.bytes[position]\n },\n inspectBytes(length, position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + length - 1)\n return this.bytes.subarray(position, position + length)\n },\n inspectUint8(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position)\n return this.bytes[position]\n },\n inspectUint16(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 1)\n return this.dataView.getUint16(position)\n },\n inspectUint24(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 2)\n return (\n (this.dataView.getUint16(position) << 8) +\n this.dataView.getUint8(position + 2)\n )\n },\n inspectUint32(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 3)\n return this.dataView.getUint32(position)\n },\n pushByte(byte: ByteArray[number]) {\n this.assertPosition(this.position)\n this.bytes[this.position] = byte\n this.position++\n },\n pushBytes(bytes: ByteArray) {\n this.assertPosition(this.position + bytes.length - 1)\n this.bytes.set(bytes, this.position)\n this.position += bytes.length\n },\n pushUint8(value: number) {\n this.assertPosition(this.position)\n this.bytes[this.position] = value\n this.position++\n },\n pushUint16(value: number) {\n this.assertPosition(this.position + 1)\n this.dataView.setUint16(this.position, value)\n this.position += 2\n },\n pushUint24(value: number) {\n this.assertPosition(this.position + 2)\n this.dataView.setUint16(this.position, value >> 8)\n this.dataView.setUint8(this.position + 2, value & ~4294967040)\n this.position += 3\n },\n pushUint32(value: number) {\n this.assertPosition(this.position + 3)\n this.dataView.setUint32(this.position, value)\n this.position += 4\n },\n readByte() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectByte()\n this.position++\n return value\n },\n readBytes(length, size) {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectBytes(length)\n this.position += size ?? length\n return value\n },\n readUint8() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint8()\n this.position += 1\n return value\n },\n readUint16() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint16()\n this.position += 2\n return value\n },\n readUint24() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint24()\n this.position += 3\n return value\n },\n readUint32() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint32()\n this.position += 4\n return value\n },\n get remaining() {\n return this.bytes.length - this.position\n },\n setPosition(position) {\n const oldPosition = this.position\n this.assertPosition(position)\n this.position = position\n return () => (this.position = oldPosition)\n },\n _touch() {\n if (this.recursiveReadLimit === Number.POSITIVE_INFINITY) return\n const count = this.getReadCount()\n this.positionReadCount.set(this.position, count + 1)\n if (count > 0) this.recursiveReadCount++\n },\n}\n\ntype CursorConfig = { recursiveReadLimit?: number | undefined }\n\nexport type CreateCursorErrorType =\n | CursorErrorType\n | StaticCursorErrorType\n | ErrorType\n\nexport function createCursor(\n bytes: ByteArray,\n { recursiveReadLimit = 8_192 }: CursorConfig = {},\n): Cursor {\n const cursor: Cursor = Object.create(staticCursor)\n cursor.bytes = bytes\n cursor.dataView = new DataView(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength,\n )\n cursor.positionReadCount = new Map()\n cursor.recursiveReadLimit = recursiveReadLimit\n return cursor\n}\n","import { InvalidBytesBooleanError } from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport {\n type AssertSizeErrorType,\n type HexToBigIntErrorType,\n type HexToNumberErrorType,\n assertSize,\n hexToBigInt,\n hexToNumber,\n} from './fromHex.js'\nimport { type BytesToHexErrorType, bytesToHex } from './toHex.js'\n\nexport type FromBytesParameters<\n to extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean',\n> =\n | to\n | {\n /** Size of the bytes. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromBytesReturnType = to extends 'string'\n ? string\n : to extends 'hex'\n ? Hex\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromBytesErrorType =\n | BytesToHexErrorType\n | BytesToBigIntErrorType\n | BytesToBoolErrorType\n | BytesToNumberErrorType\n | BytesToStringErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a UTF-8 string, hex value, number, bigint or boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes\n * - Example: https://viem.sh/docs/utilities/fromBytes#usage\n *\n * @param bytes Byte array to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(new Uint8Array([1, 164]), 'number')\n * // 420\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(\n * new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]),\n * 'string'\n * )\n * // 'Hello world'\n */\nexport function fromBytes<\n to extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean',\n>(\n bytes: ByteArray,\n toOrOpts: FromBytesParameters,\n): FromBytesReturnType {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number')\n return bytesToNumber(bytes, opts) as FromBytesReturnType\n if (to === 'bigint')\n return bytesToBigInt(bytes, opts) as FromBytesReturnType\n if (to === 'boolean')\n return bytesToBool(bytes, opts) as FromBytesReturnType\n if (to === 'string')\n return bytesToString(bytes, opts) as FromBytesReturnType\n return bytesToHex(bytes, opts) as FromBytesReturnType\n}\n\nexport type BytesToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToBigIntErrorType =\n | BytesToHexErrorType\n | HexToBigIntErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobigint\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { bytesToBigInt } from 'viem'\n * const data = bytesToBigInt(new Uint8Array([1, 164]))\n * // 420n\n */\nexport function bytesToBigInt(\n bytes: ByteArray,\n opts: BytesToBigIntOpts = {},\n): bigint {\n if (typeof opts.size !== 'undefined') assertSize(bytes, { size: opts.size })\n const hex = bytesToHex(bytes, opts)\n return hexToBigInt(hex, opts)\n}\n\nexport type BytesToBoolOpts = {\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToBoolErrorType =\n | AssertSizeErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobool\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { bytesToBool } from 'viem'\n * const data = bytesToBool(new Uint8Array([1]))\n * // true\n */\nexport function bytesToBool(\n bytes_: ByteArray,\n opts: BytesToBoolOpts = {},\n): boolean {\n let bytes = bytes_\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes)\n }\n if (bytes.length > 1 || bytes[0] > 1)\n throw new InvalidBytesBooleanError(bytes)\n return Boolean(bytes[0])\n}\n\nexport type BytesToNumberOpts = BytesToBigIntOpts\n\nexport type BytesToNumberErrorType =\n | BytesToHexErrorType\n | HexToNumberErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestonumber\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { bytesToNumber } from 'viem'\n * const data = bytesToNumber(new Uint8Array([1, 164]))\n * // 420\n */\nexport function bytesToNumber(\n bytes: ByteArray,\n opts: BytesToNumberOpts = {},\n): number {\n if (typeof opts.size !== 'undefined') assertSize(bytes, { size: opts.size })\n const hex = bytesToHex(bytes, opts)\n return hexToNumber(hex, opts)\n}\n\nexport type BytesToStringOpts = {\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToStringErrorType =\n | AssertSizeErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestostring\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { bytesToString } from 'viem'\n * const data = bytesToString(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // 'Hello world'\n */\nexport function bytesToString(\n bytes_: ByteArray,\n opts: BytesToStringOpts = {},\n): string {\n let bytes = bytes_\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import type { AbiParameter, AbiParametersToPrimitiveTypes } from 'abitype'\n\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport {\n AbiDecodingDataSizeTooSmallError,\n AbiDecodingZeroDataError,\n InvalidAbiDecodingTypeError,\n type InvalidAbiDecodingTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../address/getAddress.js'\nimport {\n type CreateCursorErrorType,\n type Cursor,\n createCursor,\n} from '../cursor.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type SliceBytesErrorType, sliceBytes } from '../data/slice.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\nimport {\n type BytesToBigIntErrorType,\n type BytesToBoolErrorType,\n type BytesToNumberErrorType,\n type BytesToStringErrorType,\n bytesToBigInt,\n bytesToBool,\n bytesToNumber,\n bytesToString,\n} from '../encoding/fromBytes.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { getArrayComponents } from './encodeAbiParameters.js'\n\nexport type DecodeAbiParametersReturnType<\n params extends readonly AbiParameter[] = readonly AbiParameter[],\n> = AbiParametersToPrimitiveTypes<\n params extends readonly AbiParameter[] ? params : AbiParameter[]\n>\n\nexport type DecodeAbiParametersErrorType =\n | HexToBytesErrorType\n | BytesToHexErrorType\n | DecodeParameterErrorType\n | SizeErrorType\n | CreateCursorErrorType\n | ErrorType\n\nexport function decodeAbiParameters<\n const params extends readonly AbiParameter[],\n>(\n params: params,\n data: ByteArray | Hex,\n): DecodeAbiParametersReturnType {\n const bytes = typeof data === 'string' ? hexToBytes(data) : data\n const cursor = createCursor(bytes)\n\n if (size(bytes) === 0 && params.length > 0)\n throw new AbiDecodingZeroDataError()\n if (size(data) && size(data) < 32)\n throw new AbiDecodingDataSizeTooSmallError({\n data: typeof data === 'string' ? data : bytesToHex(data),\n params: params as readonly AbiParameter[],\n size: size(data),\n })\n\n let consumed = 0\n const values = []\n for (let i = 0; i < params.length; ++i) {\n const param = params[i]\n cursor.setPosition(consumed)\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: 0,\n })\n consumed += consumed_\n values.push(data)\n }\n return values as DecodeAbiParametersReturnType\n}\n\ntype DecodeParameterErrorType =\n | DecodeArrayErrorType\n | DecodeTupleErrorType\n | DecodeAddressErrorType\n | DecodeBoolErrorType\n | DecodeBytesErrorType\n | DecodeNumberErrorType\n | DecodeStringErrorType\n | InvalidAbiDecodingTypeErrorType\n\nfunction decodeParameter(\n cursor: Cursor,\n param: AbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n const arrayComponents = getArrayComponents(param.type)\n if (arrayComponents) {\n const [length, type] = arrayComponents\n return decodeArray(cursor, { ...param, type }, { length, staticPosition })\n }\n if (param.type === 'tuple')\n return decodeTuple(cursor, param as TupleAbiParameter, { staticPosition })\n\n if (param.type === 'address') return decodeAddress(cursor)\n if (param.type === 'bool') return decodeBool(cursor)\n if (param.type.startsWith('bytes'))\n return decodeBytes(cursor, param, { staticPosition })\n if (param.type.startsWith('uint') || param.type.startsWith('int'))\n return decodeNumber(cursor, param)\n if (param.type === 'string') return decodeString(cursor, { staticPosition })\n throw new InvalidAbiDecodingTypeError(param.type, {\n docsPath: '/docs/contract/decodeAbiParameters',\n })\n}\n\n////////////////////////////////////////////////////////////////////\n// Type Decoders\n\nconst sizeOfLength = 32\nconst sizeOfOffset = 32\n\ntype DecodeAddressErrorType =\n | ChecksumAddressErrorType\n | BytesToHexErrorType\n | SliceBytesErrorType\n | ErrorType\n\nfunction decodeAddress(cursor: Cursor) {\n const value = cursor.readBytes(32)\n return [checksumAddress(bytesToHex(sliceBytes(value, -20))), 32]\n}\n\ntype DecodeArrayErrorType = BytesToNumberErrorType | ErrorType\n\nfunction decodeArray(\n cursor: Cursor,\n param: AbiParameter,\n { length, staticPosition }: { length: number | null; staticPosition: number },\n) {\n // If the length of the array is not known in advance (dynamic array),\n // this means we will need to wonder off to the pointer and decode.\n if (!length) {\n // Dealing with a dynamic type, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n const startOfData = start + sizeOfLength\n\n // Get the length of the array from the offset.\n cursor.setPosition(start)\n const length = bytesToNumber(cursor.readBytes(sizeOfLength))\n\n // Check if the array has any dynamic children.\n const dynamicChild = hasDynamicChild(param)\n\n let consumed = 0\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n // If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).\n // Otherwise, elements will be the size of their encoding (consumed bytes).\n cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed))\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: startOfData,\n })\n consumed += consumed_\n value.push(data)\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the length of the array is known in advance,\n // and the length of an element deeply nested in the array is not known,\n // we need to decode the offset of the array data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n // Move cursor along to the next slot (next offset pointer).\n cursor.setPosition(start + i * 32)\n const [data] = decodeParameter(cursor, param, {\n staticPosition: start,\n })\n value.push(data)\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the length of the array is known in advance and the array is deeply static,\n // then we can just decode each element in sequence.\n let consumed = 0\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: staticPosition + consumed,\n })\n consumed += consumed_\n value.push(data)\n }\n return [value, consumed]\n}\n\ntype DecodeBoolErrorType = BytesToBoolErrorType | ErrorType\n\nfunction decodeBool(cursor: Cursor) {\n return [bytesToBool(cursor.readBytes(32), { size: 32 }), 32]\n}\n\ntype DecodeBytesErrorType =\n | BytesToNumberErrorType\n | BytesToHexErrorType\n | ErrorType\n\nfunction decodeBytes(\n cursor: Cursor,\n param: AbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n const [_, size] = param.type.split('bytes')\n if (!size) {\n // Dealing with dynamic types, so get the offset of the bytes data.\n const offset = bytesToNumber(cursor.readBytes(32))\n\n // Set position of the cursor to start of bytes data.\n cursor.setPosition(staticPosition + offset)\n\n const length = bytesToNumber(cursor.readBytes(32))\n\n // If there is no length, we have zero data.\n if (length === 0) {\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return ['0x', 32]\n }\n\n const data = cursor.readBytes(length)\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [bytesToHex(data), 32]\n }\n\n const value = bytesToHex(cursor.readBytes(Number.parseInt(size), 32))\n return [value, 32]\n}\n\ntype DecodeNumberErrorType =\n | BytesToNumberErrorType\n | BytesToBigIntErrorType\n | ErrorType\n\nfunction decodeNumber(cursor: Cursor, param: AbiParameter) {\n const signed = param.type.startsWith('int')\n const size = Number.parseInt(param.type.split('int')[1] || '256')\n const value = cursor.readBytes(32)\n return [\n size > 48\n ? bytesToBigInt(value, { signed })\n : bytesToNumber(value, { signed }),\n 32,\n ]\n}\n\ntype TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }\n\ntype DecodeTupleErrorType = BytesToNumberErrorType | ErrorType\n\nfunction decodeTuple(\n cursor: Cursor,\n param: TupleAbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n // Tuples can have unnamed components (i.e. they are arrays), so we must\n // determine whether the tuple is named or unnamed. In the case of a named\n // tuple, the value will be an object where each property is the name of the\n // component. In the case of an unnamed tuple, the value will be an array.\n const hasUnnamedChild =\n param.components.length === 0 || param.components.some(({ name }) => !name)\n\n // Initialize the value to an object or an array, depending on whether the\n // tuple is named or unnamed.\n const value: any = hasUnnamedChild ? [] : {}\n let consumed = 0\n\n // If the tuple has a dynamic child, we must first decode the offset to the\n // tuple data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the tuple data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of referencing slot + offset.\n const start = staticPosition + offset\n\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i]\n cursor.setPosition(start + consumed)\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition: start,\n })\n consumed += consumed_\n value[hasUnnamedChild ? i : component?.name!] = data\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the tuple has static children, we can just decode each component\n // in sequence.\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i]\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition,\n })\n value[hasUnnamedChild ? i : component?.name!] = data\n consumed += consumed_\n }\n return [value, consumed]\n}\n\ntype DecodeStringErrorType =\n | BytesToNumberErrorType\n | BytesToStringErrorType\n | TrimErrorType\n | ErrorType\n\nfunction decodeString(\n cursor: Cursor,\n { staticPosition }: { staticPosition: number },\n) {\n // Get offset to start of string data.\n const offset = bytesToNumber(cursor.readBytes(32))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n cursor.setPosition(start)\n\n const length = bytesToNumber(cursor.readBytes(32))\n\n // If there is no length, we have zero data (empty string).\n if (length === 0) {\n cursor.setPosition(staticPosition + 32)\n return ['', 32]\n }\n\n const data = cursor.readBytes(length, 32)\n const value = bytesToString(trim(data))\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n\n return [value, 32]\n}\n\nfunction hasDynamicChild(param: AbiParameter) {\n const { type } = param\n if (type === 'string') return true\n if (type === 'bytes') return true\n if (type.endsWith('[]')) return true\n\n if (type === 'tuple') return (param as any).components?.some(hasDynamicChild)\n\n const arrayComponents = getArrayComponents(param.type)\n if (\n arrayComponents &&\n hasDynamicChild({ ...param, type: arrayComponents[1] } as AbiParameter)\n )\n return true\n\n return false\n}\n","import type { Abi, ExtractAbiError } from 'abitype'\n\nimport { solidityError, solidityPanic } from '../../constants/solidity.js'\nimport {\n AbiDecodingZeroDataError,\n type AbiDecodingZeroDataErrorType,\n AbiErrorSignatureNotFoundError,\n type AbiErrorSignatureNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n AbiItem,\n ContractErrorArgs,\n ContractErrorName,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { slice } from '../data/slice.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\n\nexport type DecodeErrorResultParameters<\n abi extends Abi | readonly unknown[] = Abi,\n> = { abi?: abi | undefined; data: Hex }\n\nexport type DecodeErrorResultReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n allErrorNames extends ContractErrorName = ContractErrorName,\n> = IsNarrowable extends true\n ? UnionEvaluate<\n {\n [errorName in allErrorNames]: {\n abiItem: abi extends Abi\n ? Abi extends abi\n ? AbiItem\n : ExtractAbiError\n : AbiItem\n args: ContractErrorArgs\n errorName: errorName\n }\n }[allErrorNames]\n >\n : {\n abiItem: AbiItem\n args: readonly unknown[] | undefined\n errorName: string\n }\n\nexport type DecodeErrorResultErrorType =\n | AbiDecodingZeroDataErrorType\n | AbiErrorSignatureNotFoundErrorType\n | DecodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function decodeErrorResult(\n parameters: DecodeErrorResultParameters,\n): DecodeErrorResultReturnType {\n const { abi, data } = parameters as DecodeErrorResultParameters\n\n const signature = slice(data, 0, 4)\n if (signature === '0x') throw new AbiDecodingZeroDataError()\n\n const abi_ = [...(abi || []), solidityError, solidityPanic]\n const abiItem = abi_.find(\n (x) =>\n x.type === 'error' && signature === toFunctionSelector(formatAbiItem(x)),\n )\n if (!abiItem)\n throw new AbiErrorSignatureNotFoundError(signature, {\n docsPath: '/docs/contract/decodeErrorResult',\n })\n return {\n abiItem,\n args:\n 'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0\n ? decodeAbiParameters(abiItem.inputs, slice(data, 4))\n : undefined,\n errorName: (abiItem as { name: string }).name,\n } as DecodeErrorResultReturnType\n}\n","import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'\n\nimport {\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n AbiFunctionOutputsNotFoundError,\n type AbiFunctionOutputsNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionReturnType,\n Widen,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/decodeFunctionResult'\n\nexport type DecodeFunctionResultParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n allFunctionNames = ContractFunctionName,\n> = {\n abi: abi\n data: Hex\n} & UnionEvaluate<\n IsNarrowable extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | undefined }\n : { functionName: functionName | allFunctionNames }\n : { functionName?: functionName | allFunctionNames | undefined }\n> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? {\n args?:\n | allArgs // show all options\n // infer value, widen inferred value of `args` conditionally to match `allArgs`\n | (abi extends Abi\n ? args extends allArgs\n ? Widen\n : never\n : never)\n | undefined\n }\n : {\n args?:\n | allArgs // show all options\n | (Widen & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)\n | undefined\n }\n > &\n (hasFunctions extends true ? unknown : never)\n\nexport type DecodeFunctionResultReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n> = ContractFunctionReturnType<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName,\n args\n>\n\nexport type DecodeFunctionResultErrorType =\n | AbiFunctionNotFoundErrorType\n | AbiFunctionOutputsNotFoundErrorType\n | DecodeAbiParametersErrorType\n | GetAbiItemErrorType\n | ErrorType\n\nexport function decodeFunctionResult<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName | undefined = undefined,\n const args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n>(\n parameters: DecodeFunctionResultParameters,\n): DecodeFunctionResultReturnType {\n const { abi, args, functionName, data } =\n parameters as DecodeFunctionResultParameters\n\n let abiItem = abi[0]\n if (functionName) {\n const item = getAbiItem({ abi, args, name: functionName })\n if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath })\n if (!abiItem.outputs)\n throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath })\n\n const values = decodeAbiParameters(abiItem.outputs, data)\n if (values && values.length > 1)\n return values as DecodeFunctionResultReturnType\n if (values && values.length === 1)\n return values[0] as DecodeFunctionResultReturnType\n return undefined as DecodeFunctionResultReturnType\n}\n","import type {\n AbiParameter,\n AbiParameterToPrimitiveType,\n AbiParametersToPrimitiveTypes,\n} from 'abitype'\n\nimport {\n AbiEncodingArrayLengthMismatchError,\n type AbiEncodingArrayLengthMismatchErrorType,\n AbiEncodingBytesSizeMismatchError,\n type AbiEncodingBytesSizeMismatchErrorType,\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n InvalidAbiEncodingTypeError,\n type InvalidAbiEncodingTypeErrorType,\n InvalidArrayError,\n type InvalidArrayErrorType,\n} from '../../errors/abi.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { type ConcatErrorType, concat } from '../data/concat.js'\nimport { type PadHexErrorType, padHex } from '../data/pad.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type BoolToHexErrorType,\n type NumberToHexErrorType,\n type StringToHexErrorType,\n boolToHex,\n numberToHex,\n stringToHex,\n} from '../encoding/toHex.js'\n\nexport type EncodeAbiParametersReturnType = Hex\n\nexport type EncodeAbiParametersErrorType =\n | AbiEncodingLengthMismatchErrorType\n | PrepareParamsErrorType\n | EncodeParamsErrorType\n | ErrorType\n\n/**\n * @description Encodes a list of primitive values into an ABI-encoded hex value.\n *\n * - Docs: https://viem.sh/docs/abi/encodeAbiParameters#encodeabiparameters\n *\n * Generates ABI encoded data using the [ABI specification](https://docs.soliditylang.org/en/latest/abi-spec), given a set of ABI parameters (inputs/outputs) and their corresponding values.\n *\n * @param params - a set of ABI Parameters (params), that can be in the shape of the inputs or outputs attribute of an ABI Item.\n * @param values - a set of values (values) that correspond to the given params.\n * @example\n * ```typescript\n * import { encodeAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * [\n * { name: 'x', type: 'string' },\n * { name: 'y', type: 'uint' },\n * { name: 'z', type: 'bool' }\n * ],\n * ['wagmi', 420n, true]\n * )\n * ```\n *\n * You can also pass in Human Readable parameters with the parseAbiParameters utility.\n *\n * @example\n * ```typescript\n * import { encodeAbiParameters, parseAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * parseAbiParameters('string x, uint y, bool z'),\n * ['wagmi', 420n, true]\n * )\n * ```\n */\nexport function encodeAbiParameters<\n const params extends readonly AbiParameter[] | readonly unknown[],\n>(\n params: params,\n values: params extends readonly AbiParameter[]\n ? AbiParametersToPrimitiveTypes\n : never,\n): EncodeAbiParametersReturnType {\n if (params.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: params.length as number,\n givenLength: values.length as any,\n })\n // Prepare the parameters to determine dynamic types to encode.\n const preparedParams = prepareParams({\n params: params as readonly AbiParameter[],\n values: values as any,\n })\n const data = encodeParams(preparedParams)\n if (data.length === 0) return '0x'\n return data\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype PreparedParam = { dynamic: boolean; encoded: Hex }\n\ntype TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }\ntype Tuple = AbiParameterToPrimitiveType\n\ntype PrepareParamsErrorType = PrepareParamErrorType | ErrorType\n\nfunction prepareParams({\n params,\n values,\n}: {\n params: params\n values: AbiParametersToPrimitiveTypes\n}) {\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < params.length; i++) {\n preparedParams.push(prepareParam({ param: params[i], value: values[i] }))\n }\n return preparedParams\n}\n\ntype PrepareParamErrorType =\n | EncodeAddressErrorType\n | EncodeArrayErrorType\n | EncodeBytesErrorType\n | EncodeBoolErrorType\n | EncodeNumberErrorType\n | EncodeStringErrorType\n | EncodeTupleErrorType\n | GetArrayComponentsErrorType\n | InvalidAbiEncodingTypeErrorType\n | ErrorType\n\nfunction prepareParam({\n param,\n value,\n}: {\n param: param\n value: AbiParameterToPrimitiveType\n}): PreparedParam {\n const arrayComponents = getArrayComponents(param.type)\n if (arrayComponents) {\n const [length, type] = arrayComponents\n return encodeArray(value, { length, param: { ...param, type } })\n }\n if (param.type === 'tuple') {\n return encodeTuple(value as unknown as Tuple, {\n param: param as TupleAbiParameter,\n })\n }\n if (param.type === 'address') {\n return encodeAddress(value as unknown as Hex)\n }\n if (param.type === 'bool') {\n return encodeBool(value as unknown as boolean)\n }\n if (param.type.startsWith('uint') || param.type.startsWith('int')) {\n const signed = param.type.startsWith('int')\n return encodeNumber(value as unknown as number, { signed })\n }\n if (param.type.startsWith('bytes')) {\n return encodeBytes(value as unknown as Hex, { param })\n }\n if (param.type === 'string') {\n return encodeString(value as unknown as string)\n }\n throw new InvalidAbiEncodingTypeError(param.type, {\n docsPath: '/docs/contract/encodeAbiParameters',\n })\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype EncodeParamsErrorType = NumberToHexErrorType | SizeErrorType | ErrorType\n\nfunction encodeParams(preparedParams: PreparedParam[]): Hex {\n // 1. Compute the size of the static part of the parameters.\n let staticSize = 0\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i]\n if (dynamic) staticSize += 32\n else staticSize += size(encoded)\n }\n\n // 2. Split the parameters into static and dynamic parts.\n const staticParams: Hex[] = []\n const dynamicParams: Hex[] = []\n let dynamicSize = 0\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i]\n if (dynamic) {\n staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }))\n dynamicParams.push(encoded)\n dynamicSize += size(encoded)\n } else {\n staticParams.push(encoded)\n }\n }\n\n // 3. Concatenate static and dynamic parts.\n return concat([...staticParams, ...dynamicParams])\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype EncodeAddressErrorType =\n | InvalidAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nfunction encodeAddress(value: Hex): PreparedParam {\n if (!isAddress(value)) throw new InvalidAddressError({ address: value })\n return { dynamic: false, encoded: padHex(value.toLowerCase() as Hex) }\n}\n\ntype EncodeArrayErrorType =\n | AbiEncodingArrayLengthMismatchErrorType\n | ConcatErrorType\n | EncodeParamsErrorType\n | InvalidArrayErrorType\n | NumberToHexErrorType\n // TODO: Add back once circular type reference is resolved\n // | PrepareParamErrorType\n | ErrorType\n\nfunction encodeArray(\n value: AbiParameterToPrimitiveType,\n {\n length,\n param,\n }: {\n length: number | null\n param: param\n },\n): PreparedParam {\n const dynamic = length === null\n\n if (!Array.isArray(value)) throw new InvalidArrayError(value)\n if (!dynamic && value.length !== length)\n throw new AbiEncodingArrayLengthMismatchError({\n expectedLength: length!,\n givenLength: value.length,\n type: `${param.type}[${length}]`,\n })\n\n let dynamicChild = false\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < value.length; i++) {\n const preparedParam = prepareParam({ param, value: value[i] })\n if (preparedParam.dynamic) dynamicChild = true\n preparedParams.push(preparedParam)\n }\n\n if (dynamic || dynamicChild) {\n const data = encodeParams(preparedParams)\n if (dynamic) {\n const length = numberToHex(preparedParams.length, { size: 32 })\n return {\n dynamic: true,\n encoded: preparedParams.length > 0 ? concat([length, data]) : length,\n }\n }\n if (dynamicChild) return { dynamic: true, encoded: data }\n }\n return {\n dynamic: false,\n encoded: concat(preparedParams.map(({ encoded }) => encoded)),\n }\n}\n\ntype EncodeBytesErrorType =\n | AbiEncodingBytesSizeMismatchErrorType\n | ConcatErrorType\n | PadHexErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nfunction encodeBytes(\n value: Hex,\n { param }: { param: param },\n): PreparedParam {\n const [, paramSize] = param.type.split('bytes')\n const bytesSize = size(value)\n if (!paramSize) {\n let value_ = value\n // If the size is not divisible by 32 bytes, pad the end\n // with empty bytes to the ceiling 32 bytes.\n if (bytesSize % 32 !== 0)\n value_ = padHex(value_, {\n dir: 'right',\n size: Math.ceil((value.length - 2) / 2 / 32) * 32,\n })\n return {\n dynamic: true,\n encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_]),\n }\n }\n if (bytesSize !== Number.parseInt(paramSize))\n throw new AbiEncodingBytesSizeMismatchError({\n expectedSize: Number.parseInt(paramSize),\n value,\n })\n return { dynamic: false, encoded: padHex(value, { dir: 'right' }) }\n}\n\ntype EncodeBoolErrorType = PadHexErrorType | BoolToHexErrorType | ErrorType\n\nfunction encodeBool(value: boolean): PreparedParam {\n if (typeof value !== 'boolean')\n throw new BaseError(\n `Invalid boolean value: \"${value}\" (type: ${typeof value}). Expected: \\`true\\` or \\`false\\`.`,\n )\n return { dynamic: false, encoded: padHex(boolToHex(value)) }\n}\n\ntype EncodeNumberErrorType = NumberToHexErrorType | ErrorType\n\nfunction encodeNumber(\n value: number,\n { signed }: { signed: boolean },\n): PreparedParam {\n return {\n dynamic: false,\n encoded: numberToHex(value, {\n size: 32,\n signed,\n }),\n }\n}\n\ntype EncodeStringErrorType =\n | ConcatErrorType\n | NumberToHexErrorType\n | PadHexErrorType\n | SizeErrorType\n | SliceErrorType\n | StringToHexErrorType\n | ErrorType\n\nfunction encodeString(value: string): PreparedParam {\n const hexValue = stringToHex(value)\n const partsLength = Math.ceil(size(hexValue) / 32)\n const parts: Hex[] = []\n for (let i = 0; i < partsLength; i++) {\n parts.push(\n padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n dir: 'right',\n }),\n )\n }\n return {\n dynamic: true,\n encoded: concat([\n padHex(numberToHex(size(hexValue), { size: 32 })),\n ...parts,\n ]),\n }\n}\n\ntype EncodeTupleErrorType =\n | ConcatErrorType\n | EncodeParamsErrorType\n // TODO: Add back once circular type reference is resolved\n // | PrepareParamErrorType\n | ErrorType\n\nfunction encodeTuple<\n const param extends AbiParameter & { components: readonly AbiParameter[] },\n>(\n value: AbiParameterToPrimitiveType,\n { param }: { param: param },\n): PreparedParam {\n let dynamic = false\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < param.components.length; i++) {\n const param_ = param.components[i]\n const index = Array.isArray(value) ? i : param_.name\n const preparedParam = prepareParam({\n param: param_,\n value: (value as any)[index!] as readonly unknown[],\n })\n preparedParams.push(preparedParam)\n if (preparedParam.dynamic) dynamic = true\n }\n return {\n dynamic,\n encoded: dynamic\n ? encodeParams(preparedParams)\n : concat(preparedParams.map(({ encoded }) => encoded)),\n }\n}\n\ntype GetArrayComponentsErrorType = ErrorType\n\nexport function getArrayComponents(\n type: string,\n): [length: number | null, innerType: string] | undefined {\n const matches = type.match(/^(.*)\\[(\\d+)?\\]$/)\n return matches\n ? // Return `null` if the array is dynamic.\n [matches[2] ? Number(matches[2]) : null, matches[1]]\n : undefined\n}\n","import type {\n Abi,\n AbiStateMutability,\n ExtractAbiFunction,\n ExtractAbiFunctions,\n} from 'abitype'\n\nimport {\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport type { ConcatHexErrorType } from '../data/concat.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/encodeFunctionData'\n\nexport type PrepareEncodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n allFunctionNames = ContractFunctionName,\n> = {\n abi: abi\n} & UnionEvaluate<\n IsNarrowable extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | Hex | undefined }\n : { functionName: functionName | allFunctionNames | Hex }\n : { functionName?: functionName | allFunctionNames | Hex | undefined }\n> &\n UnionEvaluate<{ args?: allArgs | undefined }> &\n (hasFunctions extends true ? unknown : never)\n\nexport type PrepareEncodeFunctionDataReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n> = {\n abi: abi extends Abi\n ? functionName extends ContractFunctionName\n ? [ExtractAbiFunction]\n : abi\n : Abi\n functionName: Hex\n}\n\nexport type PrepareEncodeFunctionDataErrorType =\n | AbiFunctionNotFoundErrorType\n | ConcatHexErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function prepareEncodeFunctionData<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName | undefined = undefined,\n>(\n parameters: PrepareEncodeFunctionDataParameters,\n): PrepareEncodeFunctionDataReturnType {\n const { abi, args, functionName } =\n parameters as PrepareEncodeFunctionDataParameters\n\n let abiItem = abi[0]\n if (functionName) {\n const item = getAbiItem({\n abi,\n args,\n name: functionName,\n })\n if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath })\n\n return {\n abi: [abiItem],\n functionName: toFunctionSelector(formatAbiItem(abiItem)),\n } as unknown as PrepareEncodeFunctionDataReturnType\n}\n","import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'\n\nimport type { AbiFunctionNotFoundErrorType } from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport type { ToFunctionSelectorErrorType } from '../hash/toFunctionSelector.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\nimport type { FormatAbiItemErrorType } from './formatAbiItem.js'\nimport type { GetAbiItemErrorType } from './getAbiItem.js'\nimport { prepareEncodeFunctionData } from './prepareEncodeFunctionData.js'\n\nexport type EncodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | Hex\n | undefined = ContractFunctionName,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n allFunctionNames = ContractFunctionName,\n> = {\n abi: abi\n} & UnionEvaluate<\n IsNarrowable extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | Hex | undefined }\n : { functionName: functionName | allFunctionNames | Hex }\n : { functionName?: functionName | allFunctionNames | Hex | undefined }\n> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n > &\n (hasFunctions extends true ? unknown : never)\n\nexport type EncodeFunctionDataReturnType = Hex\n\nexport type EncodeFunctionDataErrorType =\n | AbiFunctionNotFoundErrorType\n | ConcatHexErrorType\n | EncodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function encodeFunctionData<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName | undefined = undefined,\n>(\n parameters: EncodeFunctionDataParameters,\n): EncodeFunctionDataReturnType {\n const { args } = parameters as EncodeFunctionDataParameters\n\n const { abi, functionName } = (() => {\n if (\n parameters.abi.length === 1 &&\n parameters.functionName?.startsWith('0x')\n )\n return parameters as { abi: Abi; functionName: Hex }\n return prepareEncodeFunctionData(parameters)\n })()\n\n const abiItem = abi[0]\n const signature = functionName\n\n const data =\n 'inputs' in abiItem && abiItem.inputs\n ? encodeAbiParameters(abiItem.inputs, args ?? [])\n : undefined\n return concatHex([signature, data ?? '0x'])\n}\n","import type { AbiParameter } from 'abitype'\n\nimport {\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\n\nexport type FormatAbiItemErrorType =\n | FormatAbiParamsErrorType\n | InvalidDefinitionTypeErrorType\n | ErrorType\n\nexport function formatAbiItem(\n abiItem: AbiItem,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n) {\n if (\n abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error'\n )\n throw new InvalidDefinitionTypeError(abiItem.type)\n\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`\n}\n\nexport type FormatAbiParamsErrorType = ErrorType\n\nexport function formatAbiParams(\n params: readonly AbiParameter[] | undefined,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n): string {\n if (!params) return ''\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',')\n}\n\nexport type FormatAbiParamErrorType = ErrorType\n\nfunction formatAbiParam(\n param: AbiParameter,\n { includeName }: { includeName: boolean },\n): string {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(\n (param as unknown as { components: AbiParameter[] }).components,\n { includeName },\n )})${param.type.slice('tuple'.length)}`\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '')\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type ToSignatureHashErrorType,\n toSignatureHash,\n} from './toSignatureHash.js'\n\nexport type ToEventSelectorErrorType = ToSignatureHashErrorType | ErrorType\n\n/**\n * Returns the event selector for a given event definition.\n *\n * @example\n * const selector = toEventSelector('Transfer(address indexed from, address indexed to, uint256 amount)')\n * // 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n */\nexport const toEventSelector = toSignatureHash\n","import type { Abi, AbiParameter, Address } from 'abitype'\n\nimport {\n AbiItemAmbiguityError,\n type AbiItemAmbiguityErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n AbiItem,\n AbiItemArgs,\n AbiItemName,\n ExtractAbiItemForArgs,\n Widen,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { toEventSelector } from '../hash/toEventSelector.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\n\nexport type GetAbiItemParameters<\n abi extends Abi | readonly unknown[] = Abi,\n name extends AbiItemName = AbiItemName,\n args extends AbiItemArgs | undefined = AbiItemArgs,\n ///\n allArgs = AbiItemArgs,\n allNames = AbiItemName,\n> = {\n abi: abi\n name:\n | allNames // show all options\n | (name extends allNames ? name : never) // infer value\n | Hex // function selector\n} & UnionEvaluate<\n readonly [] extends allArgs\n ? {\n args?:\n | allArgs // show all options\n // infer value, widen inferred value of `args` conditionally to match `allArgs`\n | (abi extends Abi\n ? args extends allArgs\n ? Widen\n : never\n : never)\n | undefined\n }\n : {\n args?:\n | allArgs // show all options\n | (Widen & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)\n | undefined\n }\n>\n\nexport type GetAbiItemErrorType =\n | IsArgOfTypeErrorType\n | IsHexErrorType\n | ToFunctionSelectorErrorType\n | AbiItemAmbiguityErrorType\n | ErrorType\n\nexport type GetAbiItemReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n name extends AbiItemName = AbiItemName,\n args extends AbiItemArgs | undefined = AbiItemArgs,\n> = abi extends Abi\n ? Abi extends abi\n ? AbiItem | undefined\n : ExtractAbiItemForArgs<\n abi,\n name,\n args extends AbiItemArgs ? args : AbiItemArgs\n >\n : AbiItem | undefined\n\nexport function getAbiItem<\n const abi extends Abi | readonly unknown[],\n name extends AbiItemName,\n const args extends AbiItemArgs | undefined = undefined,\n>(\n parameters: GetAbiItemParameters,\n): GetAbiItemReturnType {\n const { abi, args = [], name } = parameters as unknown as GetAbiItemParameters\n\n const isSelector = isHex(name, { strict: false })\n const abiItems = (abi as Abi).filter((abiItem) => {\n if (isSelector) {\n if (abiItem.type === 'function')\n return toFunctionSelector(abiItem) === name\n if (abiItem.type === 'event') return toEventSelector(abiItem) === name\n return false\n }\n return 'name' in abiItem && abiItem.name === name\n })\n\n if (abiItems.length === 0)\n return undefined as GetAbiItemReturnType\n if (abiItems.length === 1)\n return abiItems[0] as GetAbiItemReturnType\n\n let matchedAbiItem: AbiItem | undefined = undefined\n for (const abiItem of abiItems) {\n if (!('inputs' in abiItem)) continue\n if (!args || args.length === 0) {\n if (!abiItem.inputs || abiItem.inputs.length === 0)\n return abiItem as GetAbiItemReturnType\n continue\n }\n if (!abiItem.inputs) continue\n if (abiItem.inputs.length === 0) continue\n if (abiItem.inputs.length !== args.length) continue\n const matched = args.every((arg, index) => {\n const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]\n if (!abiParameter) return false\n return isArgOfType(arg, abiParameter)\n })\n if (matched) {\n // Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).\n if (\n matchedAbiItem &&\n 'inputs' in matchedAbiItem &&\n matchedAbiItem.inputs\n ) {\n const ambiguousTypes = getAmbiguousTypes(\n abiItem.inputs,\n matchedAbiItem.inputs,\n args as readonly unknown[],\n )\n if (ambiguousTypes)\n throw new AbiItemAmbiguityError(\n {\n abiItem,\n type: ambiguousTypes[0],\n },\n {\n abiItem: matchedAbiItem,\n type: ambiguousTypes[1],\n },\n )\n }\n\n matchedAbiItem = abiItem\n }\n }\n\n if (matchedAbiItem)\n return matchedAbiItem as GetAbiItemReturnType\n return abiItems[0] as GetAbiItemReturnType\n}\n\ntype IsArgOfTypeErrorType = IsAddressErrorType | ErrorType\n\n/** @internal */\nexport function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean {\n const argType = typeof arg\n const abiParameterType = abiParameter.type\n switch (abiParameterType) {\n case 'address':\n return isAddress(arg as Address, { strict: false })\n case 'bool':\n return argType === 'boolean'\n case 'function':\n return argType === 'string'\n case 'string':\n return argType === 'string'\n default: {\n if (abiParameterType === 'tuple' && 'components' in abiParameter)\n return Object.values(abiParameter.components).every(\n (component, index) => {\n return isArgOfType(\n Object.values(arg as unknown[] | Record)[index],\n component as AbiParameter,\n )\n },\n )\n\n // `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n // https://regexr.com/6v8hp\n if (\n /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(\n abiParameterType,\n )\n )\n return argType === 'number' || argType === 'bigint'\n\n // `bytes`: binary type of `M` bytes, `0 < M <= 32`\n // https://regexr.com/6va55\n if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n return argType === 'string' || arg instanceof Uint8Array\n\n // fixed-length (`[M]`) and dynamic (`[]`) arrays\n // https://regexr.com/6va6i\n if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n return (\n Array.isArray(arg) &&\n arg.every((x: unknown) =>\n isArgOfType(x, {\n ...abiParameter,\n // Pop off `[]` or `[M]` from end of type\n type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, ''),\n } as AbiParameter),\n )\n )\n }\n\n return false\n }\n }\n}\n\n/** @internal */\nexport function getAmbiguousTypes(\n sourceParameters: readonly AbiParameter[],\n targetParameters: readonly AbiParameter[],\n args: AbiItemArgs,\n): AbiParameter['type'][] | undefined {\n for (const parameterIndex in sourceParameters) {\n const sourceParameter = sourceParameters[parameterIndex]\n const targetParameter = targetParameters[parameterIndex]\n\n if (\n sourceParameter.type === 'tuple' &&\n targetParameter.type === 'tuple' &&\n 'components' in sourceParameter &&\n 'components' in targetParameter\n )\n return getAmbiguousTypes(\n sourceParameter.components,\n targetParameter.components,\n (args as any)[parameterIndex],\n )\n\n const types = [sourceParameter.type, targetParameter.type]\n\n const ambiguous = (() => {\n if (types.includes('address') && types.includes('bytes20')) return true\n if (types.includes('address') && types.includes('string'))\n return isAddress(args[parameterIndex] as Address, { strict: false })\n if (types.includes('address') && types.includes('bytes'))\n return isAddress(args[parameterIndex] as Address, { strict: false })\n return false\n })()\n\n if (ambiguous) return types\n }\n\n return\n}\n","import type { Address } from 'abitype'\n\nimport { InvalidAddressError } from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { LruMap } from '../lru.js'\nimport { type IsAddressErrorType, isAddress } from './isAddress.js'\n\nconst checksumAddressCache = /*#__PURE__*/ new LruMap
(8192)\n\nexport type ChecksumAddressErrorType =\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\nexport function checksumAddress(\n address_: Address,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number | undefined,\n): Address {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`)!\n\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase()\n const hash = keccak256(stringToBytes(hexAddress), 'bytes')\n\n const address = (\n chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress\n ).split('')\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase()\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase()\n }\n }\n\n const result = `0x${address.join('')}` as const\n checksumAddressCache.set(`${address_}.${chainId}`, result)\n return result\n}\n\nexport type GetAddressErrorType =\n | ChecksumAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nexport function getAddress(\n address: string,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number,\n): Address {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n return checksumAddress(address, chainId)\n}\n","import type { Address } from 'abitype'\nimport type { ErrorType } from '../../errors/utils.js'\nimport { LruMap } from '../lru.js'\nimport { checksumAddress } from './getAddress.js'\n\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/\n\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192)\n\nexport type IsAddressOptions = {\n /**\n * Enables strict mode. Whether or not to compare the address against its checksum.\n *\n * @default true\n */\n strict?: boolean | undefined\n}\n\nexport type IsAddressErrorType = ErrorType\n\nexport function isAddress(\n address: string,\n options?: IsAddressOptions | undefined,\n): address is Address {\n const { strict = true } = options ?? {}\n const cacheKey = `${address}.${strict}`\n\n if (isAddressCache.has(cacheKey)) return isAddressCache.get(cacheKey)!\n\n const result = (() => {\n if (!addressRegex.test(address)) return false\n if (address.toLowerCase() === address) return true\n if (strict) return checksumAddress(address as Address) === address\n return true\n })()\n isAddressCache.set(cacheKey, result)\n return result\n}\n","import {\n ChainDoesNotSupportContract,\n type ChainDoesNotSupportContractErrorType,\n} from '../../errors/chain.js'\nimport type { Chain, ChainContract } from '../../types/chain.js'\n\nexport type GetChainContractAddressErrorType =\n ChainDoesNotSupportContractErrorType\n\nexport function getChainContractAddress({\n blockNumber,\n chain,\n contract: name,\n}: {\n blockNumber?: bigint | undefined\n chain: Chain\n contract: string\n}) {\n const contract = (chain?.contracts as Record)?.[name]\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain,\n contract: { name },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain,\n contract: {\n name,\n blockCreated: contract.blockCreated,\n },\n })\n\n return contract.address\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nexport type ConcatReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type ConcatErrorType =\n | ConcatBytesErrorType\n | ConcatHexErrorType\n | ErrorType\n\nexport function concat(\n values: readonly value[],\n): ConcatReturnType {\n if (typeof values[0] === 'string')\n return concatHex(values as readonly Hex[]) as ConcatReturnType\n return concatBytes(values as readonly ByteArray[]) as ConcatReturnType\n}\n\nexport type ConcatBytesErrorType = ErrorType\n\nexport function concatBytes(values: readonly ByteArray[]): ByteArray {\n let length = 0\n for (const arr of values) {\n length += arr.length\n }\n const result = new Uint8Array(length)\n let offset = 0\n for (const arr of values) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\nexport type ConcatHexErrorType = ErrorType\n\nexport function concatHex(values: readonly Hex[]): Hex {\n return `0x${(values as Hex[]).reduce(\n (acc, x) => acc + x.replace('0x', ''),\n '',\n )}`\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type IsHexErrorType = ErrorType\n\nexport function isHex(\n value: unknown,\n { strict = true }: { strict?: boolean | undefined } = {},\n): value is Hex {\n if (!value) return false\n if (typeof value !== 'string') return false\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')\n}\n","import {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype PadOptions = {\n dir?: 'left' | 'right' | undefined\n size?: number | null | undefined\n}\nexport type PadReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type PadErrorType = PadHexErrorType | PadBytesErrorType | ErrorType\n\nexport function pad(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {},\n): PadReturnType {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size }) as PadReturnType\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType\n}\n\nexport type PadHexErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padHex(hex_: Hex, { dir, size = 32 }: PadOptions = {}) {\n if (size === null) return hex_\n const hex = hex_.replace('0x', '')\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](\n size * 2,\n '0',\n )}` as Hex\n}\n\nexport type PadBytesErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padBytes(\n bytes: ByteArray,\n { dir, size = 32 }: PadOptions = {},\n) {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\n\nexport type SizeErrorType = IsHexErrorType | ErrorType\n\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value: Hex | ByteArray) {\n if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)\n return value.length\n}\n","import {\n SliceOffsetOutOfBoundsError,\n type SliceOffsetOutOfBoundsErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\nimport { type SizeErrorType, size } from './size.js'\n\nexport type SliceReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type SliceErrorType =\n | IsHexErrorType\n | SliceBytesErrorType\n | SliceHexErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the hex or byte array given a start/end bytes offset.\n *\n * @param value The hex or byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function slice(\n value: value,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): SliceReturnType {\n if (isHex(value, { strict: false }))\n return sliceHex(value as Hex, start, end, {\n strict,\n }) as SliceReturnType\n return sliceBytes(value as ByteArray, start, end, {\n strict,\n }) as SliceReturnType\n}\n\nexport type AssertStartOffsetErrorType =\n | SliceOffsetOutOfBoundsErrorType\n | SizeErrorType\n | ErrorType\n\nfunction assertStartOffset(value: Hex | ByteArray, start?: number | undefined) {\n if (typeof start === 'number' && start > 0 && start > size(value) - 1)\n throw new SliceOffsetOutOfBoundsError({\n offset: start,\n position: 'start',\n size: size(value),\n })\n}\n\nexport type AssertEndOffsetErrorType =\n | SliceOffsetOutOfBoundsErrorType\n | SizeErrorType\n | ErrorType\n\nfunction assertEndOffset(\n value: Hex | ByteArray,\n start?: number | undefined,\n end?: number | undefined,\n) {\n if (\n typeof start === 'number' &&\n typeof end === 'number' &&\n size(value) !== end - start\n ) {\n throw new SliceOffsetOutOfBoundsError({\n offset: end,\n position: 'end',\n size: size(value),\n })\n }\n}\n\nexport type SliceBytesErrorType =\n | AssertStartOffsetErrorType\n | AssertEndOffsetErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the byte array given a start/end bytes offset.\n *\n * @param value The byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceBytes(\n value_: ByteArray,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): ByteArray {\n assertStartOffset(value_, start)\n const value = value_.slice(start, end)\n if (strict) assertEndOffset(value, start, end)\n return value\n}\n\nexport type SliceHexErrorType =\n | AssertStartOffsetErrorType\n | AssertEndOffsetErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the hex value given a start/end bytes offset.\n *\n * @param value The hex value to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceHex(\n value_: Hex,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): Hex {\n assertStartOffset(value_, start)\n const value = `0x${value_\n .replace('0x', '')\n .slice((start ?? 0) * 2, (end ?? value_.length) * 2)}` as const\n if (strict) assertEndOffset(value, start, end)\n return value\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype TrimOptions = {\n dir?: 'left' | 'right' | undefined\n}\nexport type TrimReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type TrimErrorType = ErrorType\n\nexport function trim(\n hexOrBytes: value,\n { dir = 'left' }: TrimOptions = {},\n): TrimReturnType {\n let data: any =\n typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes\n\n let sliceLength = 0\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++\n else break\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength)\n\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right') data = `${data}0`\n return `0x${\n data.length % 2 === 1 ? `0${data}` : data\n }` as TrimReturnType\n }\n return data as TrimReturnType\n}\n","import {\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type SizeErrorType, size as size_ } from '../data/size.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\n\nexport type AssertSizeErrorType =\n | SizeOverflowErrorType\n | SizeErrorType\n | ErrorType\n\nexport function assertSize(\n hexOrBytes: Hex | ByteArray,\n { size }: { size: number },\n): void {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n })\n}\n\nexport type FromHexParameters<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n> =\n | to\n | {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromHexReturnType = to extends 'string'\n ? string\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'bytes'\n ? ByteArray\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromHexErrorType =\n | HexToNumberErrorType\n | HexToBigIntErrorType\n | HexToBoolErrorType\n | HexToStringErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n>(hex: Hex, toOrOpts: FromHexParameters): FromHexReturnType {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number') return hexToNumber(hex, opts) as FromHexReturnType\n if (to === 'bigint') return hexToBigInt(hex, opts) as FromHexReturnType\n if (to === 'string') return hexToString(hex, opts) as FromHexReturnType\n if (to === 'boolean') return hexToBool(hex, opts) as FromHexReturnType\n return hexToBytes(hex, opts) as FromHexReturnType\n}\n\nexport type HexToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBigIntErrorType = AssertSizeErrorType | ErrorType\n\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex: Hex, opts: HexToBigIntOpts = {}): bigint {\n const { signed } = opts\n\n if (opts.size) assertSize(hex, { size: opts.size })\n\n const value = BigInt(hex)\n if (!signed) return value\n\n const size = (hex.length - 2) / 2\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n\n if (value <= max) return value\n\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n\n}\n\nexport type HexToBoolOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBoolErrorType =\n | AssertSizeErrorType\n | InvalidHexBooleanErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_: Hex, opts: HexToBoolOpts = {}): boolean {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = trim(hex)\n }\n if (trim(hex) === '0x00') return false\n if (trim(hex) === '0x01') return true\n throw new InvalidHexBooleanError(hex)\n}\n\nexport type HexToNumberOpts = HexToBigIntOpts\n\nexport type HexToNumberErrorType = HexToBigIntErrorType | ErrorType\n\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex: Hex, opts: HexToNumberOpts = {}): number {\n return Number(hexToBigInt(hex, opts))\n}\n\nexport type HexToStringOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToStringErrorType =\n | AssertSizeErrorType\n | HexToBytesErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex: Hex, opts: HexToStringOpts = {}): string {\n let bytes = hexToBytes(hex)\n if (opts.size) {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\nimport {\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n} from './toHex.js'\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\nexport type ToBytesParameters = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type ToBytesErrorType =\n | NumberToBytesErrorType\n | BoolToBytesErrorType\n | HexToBytesErrorType\n | StringToBytesErrorType\n | IsHexErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(\n value: string | bigint | number | boolean | Hex,\n opts: ToBytesParameters = {},\n): ByteArray {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts)\n if (typeof value === 'boolean') return boolToBytes(value, opts)\n if (isHex(value)) return hexToBytes(value, opts)\n return stringToBytes(value, opts)\n}\n\nexport type BoolToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type BoolToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value: boolean, opts: BoolToBytesOpts = {}) {\n const bytes = new Uint8Array(1)\n bytes[0] = Number(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { size: opts.size })\n }\n return bytes\n}\n\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n} as const\n\nfunction charCodeToBase16(char: number) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10)\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10)\n return undefined\n}\n\nexport type HexToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type HexToBytesErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_: Hex, opts: HexToBytesOpts = {}): ByteArray {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = pad(hex, { dir: 'right', size: opts.size })\n }\n\n let hexString = hex.slice(2) as string\n if (hexString.length % 2) hexString = `0${hexString}`\n\n const length = hexString.length / 2\n const bytes = new Uint8Array(length)\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++))\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++))\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(\n `Invalid byte sequence (\"${hexString[j - 2]}${\n hexString[j - 1]\n }\" in \"${hexString}\").`,\n )\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight\n }\n return bytes\n}\n\nexport type NumberToBytesErrorType =\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(\n value: bigint | number,\n opts?: NumberToHexOpts | undefined,\n) {\n const hex = numberToHex(value, opts)\n return hexToBytes(hex)\n}\n\nexport type StringToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type StringToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(\n value: string,\n opts: StringToBytesOpts = {},\n): ByteArray {\n const bytes = encoder.encode(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { dir: 'right', size: opts.size })\n }\n return bytes\n}\n","import {\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\n\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>\n i.toString(16).padStart(2, '0'),\n)\n\nexport type ToHexParameters = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type ToHexErrorType =\n | BoolToHexErrorType\n | BytesToHexErrorType\n | NumberToHexErrorType\n | StringToHexErrorType\n | ErrorType\n\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(\n value: string | number | bigint | boolean | ByteArray,\n opts: ToHexParameters = {},\n): Hex {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts)\n if (typeof value === 'string') {\n return stringToHex(value, opts)\n }\n if (typeof value === 'boolean') return boolToHex(value, opts)\n return bytesToHex(value, opts)\n}\n\nexport type BoolToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BoolToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value: boolean, opts: BoolToHexOpts = {}): Hex {\n const hex: Hex = `0x${Number(value)}`\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { size: opts.size })\n }\n return hex\n}\n\nexport type BytesToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BytesToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value: ByteArray, opts: BytesToHexOpts = {}): Hex {\n let string = ''\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]]\n }\n const hex = `0x${string}` as const\n\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { dir: 'right', size: opts.size })\n }\n return hex\n}\n\nexport type NumberToHexOpts =\n | {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** The size (in bytes) of the output hex value. */\n size: number\n }\n | {\n signed?: undefined\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n }\n\nexport type NumberToHexErrorType =\n | IntegerOutOfRangeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(\n value_: number | bigint,\n opts: NumberToHexOpts = {},\n): Hex {\n const { signed, size } = opts\n\n const value = BigInt(value_)\n\n let maxValue: bigint | number | undefined\n if (size) {\n if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n\n } else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER)\n }\n\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0\n\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : ''\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n })\n }\n\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value\n ).toString(16)}` as Hex\n if (size) return pad(hex, { size }) as Hex\n return hex\n}\n\nexport type StringToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type StringToHexErrorType = BytesToHexErrorType | ErrorType\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_: string, opts: StringToHexOpts = {}): Hex {\n const value = encoder.encode(value_)\n return bytesToHex(value, opts)\n}\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`positive integer expected, not ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`boolean expected, not ${b}`);\n}\n\n// copied from utils\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(h: Hash) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word: number, shift: number) =>\n (word << shift) | ((word >>> (32 - shift)) >>> 0);\n\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word: number) =>\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n: number) => n : (n: number) => byteSwap(n);\n\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr: Uint32Array) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n isLE,\n byteSwap32,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n if (!isLE) byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE) byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Keccak256Hash =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Keccak256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function keccak256(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Keccak256Hash {\n const to = to_ || 'hex'\n const bytes = keccak_256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Keccak256Hash\n return toHex(bytes) as Keccak256Hash\n}\n","import type { AbiFunction } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type ToSignatureHashErrorType,\n toSignatureHash,\n} from './toSignatureHash.js'\n\nexport type ToFunctionSelectorErrorType =\n | ToSignatureHashErrorType\n | SliceErrorType\n | ErrorType\n\n/**\n * Returns the function selector for a given function definition.\n *\n * @example\n * const selector = toFunctionSelector('function ownerOf(uint256 tokenId)')\n * // 0x6352211e\n */\nexport const toFunctionSelector = (fn: string | AbiFunction) =>\n slice(toSignatureHash(fn), 0, 4)\n","import { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type Keccak256ErrorType, keccak256 } from './keccak256.js'\n\nconst hash = (value: string) => keccak256(toBytes(value))\n\nexport type HashSignatureErrorType =\n | Keccak256ErrorType\n | ToBytesErrorType\n | ErrorType\n\nexport function hashSignature(sig: string) {\n return hash(sig)\n}\n","import type { AbiEventParameter, AbiParameter } from '../abi.js'\nimport { execTyped } from '../regex.js'\nimport type { IsNarrowable, Join } from '../types.js'\nimport type { AssertName } from './types/signatures.js'\n\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * type Result = FormatAbiParameter<{ type: 'address'; name: 'from'; }>\n * // ^? type Result = 'address from'\n */\nexport type FormatAbiParameter<\n abiParameter extends AbiParameter | AbiEventParameter,\n> = abiParameter extends {\n name?: infer name extends string\n type: `tuple${infer array}`\n components: infer components extends readonly AbiParameter[]\n indexed?: infer indexed extends boolean\n}\n ? FormatAbiParameter<\n {\n type: `(${Join<\n {\n [key in keyof components]: FormatAbiParameter<\n {\n type: components[key]['type']\n } & (IsNarrowable extends true\n ? { name: components[key]['name'] }\n : unknown) &\n (components[key] extends { components: readonly AbiParameter[] }\n ? { components: components[key]['components'] }\n : unknown)\n >\n },\n ', '\n >})${array}`\n } & (IsNarrowable extends true ? { name: name } : unknown) &\n (IsNarrowable extends true\n ? { indexed: indexed }\n : unknown)\n >\n : `${abiParameter['type']}${abiParameter extends { indexed: true }\n ? ' indexed'\n : ''}${abiParameter['name'] extends infer name extends string\n ? name extends ''\n ? ''\n : ` ${AssertName}`\n : ''}`\n\n// https://regexr.com/7f7rv\nconst tupleRegex = /^tuple(?(\\[(\\d*)\\])*)$/\n\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * const result = formatAbiParameter({ type: 'address', name: 'from' })\n * // ^? const result: 'address from'\n */\nexport function formatAbiParameter<\n const abiParameter extends AbiParameter | AbiEventParameter,\n>(abiParameter: abiParameter): FormatAbiParameter {\n type Result = FormatAbiParameter\n\n let type = abiParameter.type\n if (tupleRegex.test(abiParameter.type) && 'components' in abiParameter) {\n type = '('\n const length = abiParameter.components.length as number\n for (let i = 0; i < length; i++) {\n const component = abiParameter.components[i]!\n type += formatAbiParameter(component)\n if (i < length - 1) type += ', '\n }\n const result = execTyped<{ array?: string }>(tupleRegex, abiParameter.type)\n type += `)${result?.array ?? ''}`\n return formatAbiParameter({\n ...abiParameter,\n type,\n }) as Result\n }\n // Add `indexed` to type if in `abiParameter`\n if ('indexed' in abiParameter && abiParameter.indexed)\n type = `${type} indexed`\n // Return human-readable ABI parameter\n if (abiParameter.name) return `${type} ${abiParameter.name}` as Result\n return type as Result\n}\n","import type { AbiEventParameter, AbiParameter } from '../abi.js'\nimport type { Join } from '../types.js'\nimport {\n type FormatAbiParameter,\n formatAbiParameter,\n} from './formatAbiParameter.js'\n\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameter.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * type Result = FormatAbiParameters<[\n * // ^? type Result = 'address from, uint256 tokenId'\n * { type: 'address'; name: 'from'; },\n * { type: 'uint256'; name: 'tokenId'; },\n * ]>\n */\nexport type FormatAbiParameters<\n abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ],\n> = Join<\n {\n [key in keyof abiParameters]: FormatAbiParameter\n },\n ', '\n>\n\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameters.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * const result = formatAbiParameters([\n * // ^? const result: 'address from, uint256 tokenId'\n * { type: 'address', name: 'from' },\n * { type: 'uint256', name: 'tokenId' },\n * ])\n */\nexport function formatAbiParameters<\n const abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ],\n>(abiParameters: abiParameters): FormatAbiParameters {\n let params = ''\n const length = abiParameters.length\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i]!\n params += formatAbiParameter(abiParameter)\n if (i !== length - 1) params += ', '\n }\n return params as FormatAbiParameters\n}\n","import { type AbiEvent, type AbiFunction, formatAbiItem } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type NormalizeSignatureErrorType,\n normalizeSignature,\n} from './normalizeSignature.js'\n\nexport type ToSignatureErrorType = NormalizeSignatureErrorType | ErrorType\n\n/**\n * Returns the signature for a given function or event definition.\n *\n * @example\n * const signature = toSignature('function ownerOf(uint256 tokenId)')\n * // 'ownerOf(uint256)'\n *\n * @example\n * const signature_3 = toSignature({\n * name: 'ownerOf',\n * type: 'function',\n * inputs: [{ name: 'tokenId', type: 'uint256' }],\n * outputs: [],\n * stateMutability: 'view',\n * })\n * // 'ownerOf(uint256)'\n */\nexport const toSignature = (def: string | AbiFunction | AbiEvent) => {\n const def_ = (() => {\n if (typeof def === 'string') return def\n return formatAbiItem(def)\n })()\n return normalizeSignature(def_)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\ntype NormalizeSignatureParameters = string\ntype NormalizeSignatureReturnType = string\nexport type NormalizeSignatureErrorType = ErrorType\n\nexport function normalizeSignature(\n signature: NormalizeSignatureParameters,\n): NormalizeSignatureReturnType {\n let active = true\n let current = ''\n let level = 0\n let result = ''\n let valid = false\n\n for (let i = 0; i < signature.length; i++) {\n const char = signature[i]\n\n // If the character is a separator, we want to reactivate.\n if (['(', ')', ','].includes(char)) active = true\n\n // If the character is a \"level\" token, we want to increment/decrement.\n if (char === '(') level++\n if (char === ')') level--\n\n // If we aren't active, we don't want to mutate the result.\n if (!active) continue\n\n // If level === 0, we are at the definition level.\n if (level === 0) {\n if (char === ' ' && ['event', 'function', ''].includes(result))\n result = ''\n else {\n result += char\n\n // If we are at the end of the definition, we must be finished.\n if (char === ')') {\n valid = true\n break\n }\n }\n\n continue\n }\n\n // Ignore spaces\n if (char === ' ') {\n // If the previous character is a separator, and the current section isn't empty, we want to deactivate.\n if (signature[i - 1] !== ',' && current !== ',' && current !== ',(') {\n current = ''\n active = false\n }\n continue\n }\n\n result += char\n current += char\n }\n\n if (!valid) throw new BaseError('Unable to normalize signature.')\n\n return result\n}\n","import type {\n Abi,\n AbiConstructor,\n AbiError,\n AbiEvent,\n AbiEventParameter,\n AbiFallback,\n AbiFunction,\n AbiParameter,\n AbiReceive,\n AbiStateMutability,\n} from '../abi.js'\nimport {\n type FormatAbiParameters as FormatAbiParameters_,\n formatAbiParameters,\n} from './formatAbiParameters.js'\nimport type { AssertName } from './types/signatures.js'\n\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport type FormatAbiItem =\n Abi[number] extends abiItem\n ? string\n :\n | (abiItem extends AbiFunction\n ? AbiFunction extends abiItem\n ? string\n : `function ${AssertName}(${FormatAbiParameters<\n abiItem['inputs']\n >})${abiItem['stateMutability'] extends Exclude<\n AbiStateMutability,\n 'nonpayable'\n >\n ? ` ${abiItem['stateMutability']}`\n : ''}${abiItem['outputs']['length'] extends 0\n ? ''\n : ` returns (${FormatAbiParameters})`}`\n : never)\n | (abiItem extends AbiEvent\n ? AbiEvent extends abiItem\n ? string\n : `event ${AssertName}(${FormatAbiParameters<\n abiItem['inputs']\n >})`\n : never)\n | (abiItem extends AbiError\n ? AbiError extends abiItem\n ? string\n : `error ${AssertName}(${FormatAbiParameters<\n abiItem['inputs']\n >})`\n : never)\n | (abiItem extends AbiConstructor\n ? AbiConstructor extends abiItem\n ? string\n : `constructor(${FormatAbiParameters<\n abiItem['inputs']\n >})${abiItem['stateMutability'] extends 'payable'\n ? ' payable'\n : ''}`\n : never)\n | (abiItem extends AbiFallback\n ? AbiFallback extends abiItem\n ? string\n : 'fallback()'\n : never)\n | (abiItem extends AbiReceive\n ? AbiReceive extends abiItem\n ? string\n : 'receive() external payable'\n : never)\n\ntype FormatAbiParameters<\n abiParameters extends readonly (AbiParameter | AbiEventParameter)[],\n> = abiParameters['length'] extends 0\n ? ''\n : FormatAbiParameters_<\n abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ]\n ? abiParameters\n : never\n >\n\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport function formatAbiItem(\n abiItem: abiItem,\n): FormatAbiItem {\n type Result = FormatAbiItem\n type Params = readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ]\n\n if (abiItem.type === 'function')\n return `function ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})${\n abiItem.stateMutability && abiItem.stateMutability !== 'nonpayable'\n ? ` ${abiItem.stateMutability}`\n : ''\n }${\n abiItem.outputs.length\n ? ` returns (${formatAbiParameters(abiItem.outputs as Params)})`\n : ''\n }`\n if (abiItem.type === 'event')\n return `event ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})`\n if (abiItem.type === 'error')\n return `error ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})`\n if (abiItem.type === 'constructor')\n return `constructor(${formatAbiParameters(abiItem.inputs as Params)})${\n abiItem.stateMutability === 'payable' ? ' payable' : ''\n }`\n if (abiItem.type === 'fallback') return 'fallback()' as Result\n return 'receive() external payable' as Result\n}\n","import type { AbiEvent, AbiFunction } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type HashSignatureErrorType, hashSignature } from './hashSignature.js'\nimport { type ToSignatureErrorType, toSignature } from './toSignature.js'\n\nexport type ToSignatureHashErrorType =\n | HashSignatureErrorType\n | ToSignatureErrorType\n | ErrorType\n\n/**\n * Returns the hash (of the function/event signature) for a given event or function definition.\n */\nexport function toSignatureHash(fn: string | AbiFunction | AbiEvent) {\n return hashSignature(toSignature(fn))\n}\n","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n maxSize: number\n\n constructor(size: number) {\n super()\n this.maxSize = size\n }\n\n override get(key: string) {\n const value = super.get(key)\n\n if (super.has(key) && value !== undefined) {\n this.delete(key)\n super.set(key, value)\n }\n\n return value\n }\n\n override set(key: string, value: value) {\n super.set(key, value)\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value\n if (firstKey) this.delete(firstKey)\n }\n return this\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\ntype Resolved = [\n result: returnType[number],\n results: returnType,\n]\n\ntype PendingPromise = {\n resolve?: ((data: Resolved) => void) | undefined\n reject?: ((reason?: unknown) => void) | undefined\n}\n\ntype SchedulerItem = { args: unknown; pendingPromise: PendingPromise }\n\ntype BatchResultsCompareFn = (a: result, b: result) => number\n\ntype CreateBatchSchedulerArguments<\n parameters = unknown,\n returnType extends readonly unknown[] = readonly unknown[],\n> = {\n fn: (args: parameters[]) => Promise\n id: number | string\n shouldSplitBatch?: ((args: parameters[]) => boolean) | undefined\n wait?: number | undefined\n sort?: BatchResultsCompareFn | undefined\n}\n\ntype CreateBatchSchedulerReturnType<\n parameters = unknown,\n returnType extends readonly unknown[] = readonly unknown[],\n> = {\n flush: () => void\n schedule: parameters extends undefined\n ? (args?: parameters | undefined) => Promise>\n : (args: parameters) => Promise>\n}\n\nexport type CreateBatchSchedulerErrorType = ErrorType\n\nconst schedulerCache = /*#__PURE__*/ new Map()\n\n/** @internal */\nexport function createBatchScheduler<\n parameters,\n returnType extends readonly unknown[],\n>({\n fn,\n id,\n shouldSplitBatch,\n wait = 0,\n sort,\n}: CreateBatchSchedulerArguments<\n parameters,\n returnType\n>): CreateBatchSchedulerReturnType {\n const exec = async () => {\n const scheduler = getScheduler()\n flush()\n\n const args = scheduler.map(({ args }) => args)\n\n if (args.length === 0) return\n\n fn(args as parameters[])\n .then((data) => {\n if (sort && Array.isArray(data)) data.sort(sort)\n for (let i = 0; i < scheduler.length; i++) {\n const { pendingPromise } = scheduler[i]\n pendingPromise.resolve?.([data[i], data])\n }\n })\n .catch((err) => {\n for (let i = 0; i < scheduler.length; i++) {\n const { pendingPromise } = scheduler[i]\n pendingPromise.reject?.(err)\n }\n })\n }\n\n const flush = () => schedulerCache.delete(id)\n\n const getBatchedArgs = () =>\n getScheduler().map(({ args }) => args) as parameters[]\n\n const getScheduler = () => schedulerCache.get(id) || []\n\n const setScheduler = (item: SchedulerItem) =>\n schedulerCache.set(id, [...getScheduler(), item])\n\n return {\n flush,\n async schedule(args: parameters) {\n const pendingPromise: PendingPromise = {}\n const promise = new Promise>((resolve, reject) => {\n pendingPromise.resolve = resolve\n pendingPromise.reject = reject\n })\n\n const split = shouldSplitBatch?.([...getBatchedArgs(), args])\n\n if (split) exec()\n\n const hasActiveScheduler = getScheduler().length > 0\n if (hasActiveScheduler) {\n setScheduler({ args, pendingPromise })\n return promise\n }\n\n setScheduler({ args, pendingPromise })\n setTimeout(exec, wait)\n return promise\n },\n } as unknown as CreateBatchSchedulerReturnType\n}\n","import type { ErrorType } from '../errors/utils.js'\n\nexport type StringifyErrorType = ErrorType\n\nexport const stringify: typeof JSON.stringify = (value, replacer, space) =>\n JSON.stringify(\n value,\n (key, value_) => {\n const value = typeof value_ === 'bigint' ? value_.toString() : value_\n return typeof replacer === 'function' ? replacer(key, value) : value\n },\n space,\n )\n","import { etherUnits } from '../../constants/unit.js'\n\nimport { type FormatUnitsErrorType, formatUnits } from './formatUnits.js'\n\nexport type FormatEtherErrorType = FormatUnitsErrorType\n\n/**\n * Converts numerical wei to a string representation of ether.\n *\n * - Docs: https://viem.sh/docs/utilities/formatEther\n *\n * @example\n * import { formatEther } from 'viem'\n *\n * formatEther(1000000000000000000n)\n * // '1'\n */\nexport function formatEther(wei: bigint, unit: 'wei' | 'gwei' = 'wei') {\n return formatUnits(wei, etherUnits[unit])\n}\n","import { gweiUnits } from '../../constants/unit.js'\n\nimport { type FormatUnitsErrorType, formatUnits } from './formatUnits.js'\n\nexport type FormatGweiErrorType = FormatUnitsErrorType\n\n/**\n * Converts numerical wei to a string representation of gwei.\n *\n * - Docs: https://viem.sh/docs/utilities/formatGwei\n *\n * @example\n * import { formatGwei } from 'viem'\n *\n * formatGwei(1000000000n)\n * // '1'\n */\nexport function formatGwei(wei: bigint, unit: 'wei' = 'wei') {\n return formatUnits(wei, gweiUnits[unit])\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\nexport type FormatUnitsErrorType = ErrorType\n\n/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value: bigint, decimals: number) {\n let display = value.toString()\n\n const negative = display.startsWith('-')\n if (negative) display = display.slice(1)\n\n display = display.padStart(decimals, '0')\n\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ]\n fraction = fraction.replace(/(0+)$/, '')\n return `${negative ? '-' : ''}${integer || '0'}${\n fraction ? `.${fraction}` : ''\n }`\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"126\":\"6f908421\",\"171\":\"86b27080\",\"444\":\"8be81bae\",\"453\":\"ae7e94b8\",\"507\":\"ba41d260\",\"968\":\"197e6bc7\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"airdao-staking-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/staking/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkairdao_staking_frontend\"] = self[\"webpackChunkairdao_staking_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","const niceErrors = {\n 0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n 1(annotationType, key: PropertyKey) {\n return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: `Invalid annotation`,\n 13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 16: `Modification exception: the internal structure of an observable array was changed.`,\n 17(index, length) {\n return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n },\n 20(other) {\n return \"Cannot initialize map from \" + other\n },\n 21(dataStructure) {\n return `Cannot convert to map from '${dataStructure}'`\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24(thing) {\n return \"Cannot obtain administration from \" + thing\n },\n 25(property, name) {\n return `the entry '${property}' does not exist in the observable map '${name}'`\n },\n 26: \"please specify a property\",\n 27(property, name) {\n return `no observable property '${property.toString()}' found on the observable object '${name}'`\n },\n 28(thing) {\n return \"Cannot obtain atom from \" + thing\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32(name, derivation) {\n return `Cycle detected in computation ${name}: ${derivation}`\n },\n 33(name) {\n return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n },\n 34(name) {\n return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37(method) {\n return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n if (__DEV__) {\n let e: any = typeof error === \"string\" ? error : errors[error]\n if (typeof e === \"function\") e = e.apply(null, args as any)\n throw new Error(`[MobX] ${e}`)\n }\n throw new Error(\n typeof error === \"number\"\n ? `[MobX] minified error nr: ${error}${\n args.length ? \" \" + args.map(String).join(\",\") : \"\"\n }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n : `[MobX] ${error}`\n )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof global !== \"undefined\") {\n return global\n }\n if (typeof self !== \"undefined\") {\n return self\n }\n return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) {\n return\n }\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n if (!isObject(value)) {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n if (proto == null) {\n return true\n }\n const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n return (\n typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) {\n return false\n }\n if (\n \"GeneratorFunction\" === constructor.name ||\n \"GeneratorFunction\" === constructor.displayName\n ) {\n return true\n }\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing: any): thing is Map {\n return thing != null && Object.prototype.toString.call(thing) === \"[object Map]\"\n}\n\nexport function isPlainES6Map(thing: Map): boolean {\n const mapProto = Object.getPrototypeOf(thing)\n const objectProto = Object.getPrototypeOf(mapProto)\n const nullProto = Object.getPrototypeOf(objectProto)\n return nullProto === null\n}\n\nexport function isES6Set(thing: any): thing is Set {\n return thing != null && Object.prototype.toString.call(thing) === \"[object Set]\"\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys\n }\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) {\n return keys\n }\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") {\n return key\n }\n if (typeof key === \"symbol\") {\n return key.toString()\n }\n return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n\nexport function getFlag(flags: number, mask: number) {\n return !!(flags & mask)\n}\n\nexport function setFlag(flags: number, mask: number, newValue: boolean): number {\n if (newValue) {\n flags |= mask\n } else {\n flags &= ~mask\n }\n return flags\n}\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nimport type { Decorator } from \"../types/decorator_fills\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(\n annotation: Annotation\n): PropertyDecorator & Annotation & D {\n function decorator(target, property) {\n if (is20223Decorator(property)) {\n return annotation.decorate_20223_(target, property)\n } else {\n storeAnnotation(target, property, annotation)\n }\n }\n return Object.assign(decorator, annotation) as any\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overridden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n // die(\n // `No annotations were passed to makeObservable, but no decorated members have been found either`\n // )\n // }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n\nexport function is20223Decorator(context): context is DecoratorContext {\n return typeof context == \"object\" && typeof context[\"kind\"] == \"string\"\n}\n\nexport function assert20223DecoratorType(\n context: DecoratorContext,\n types: DecoratorContext[\"kind\"][]\n) {\n if (__DEV__ && !types.includes(context.kind)) {\n die(\n `The decorator applied to '${String(context.name)}' cannot be used on a ${\n context.kind\n } element`\n )\n }\n}\n","import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"./decorator_fills\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator & ClassMethodDecorator =\n createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_,\n decorate_20223_\n })\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(this: Annotation, adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(this: Annotation, adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: DecoratorContext) {\n console.warn(`'${this.annotationType_}' cannot be used with decorators - this is a no-op`)\n}\n","import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved(): boolean\n reportChanged(): void\n}\n\nexport class Atom implements IAtom {\n private static readonly isBeingObservedMask_ = 0b001\n private static readonly isPendingUnobservationMask_ = 0b010\n private static readonly diffValueMask_ = 0b100\n private flags_ = 0b000\n\n observers_ = new Set()\n\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n get isBeingObserved(): boolean {\n return getFlag(this.flags_, Atom.isBeingObservedMask_)\n }\n set isBeingObserved(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, Atom.isBeingObservedMask_, newValue)\n }\n\n get isPendingUnobservation(): boolean {\n return getFlag(this.flags_, Atom.isPendingUnobservationMask_)\n }\n set isPendingUnobservation(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, Atom.isPendingUnobservationMask_, newValue)\n }\n\n get diffValue(): 0 | 1 {\n return getFlag(this.flags_, Atom.diffValueMask_) ? 1 : 0\n }\n set diffValue(newValue: 0 | 1) {\n this.flags_ = setFlag(this.flags_, Atom.diffValueMask_, newValue === 1 ? true : false)\n }\n\n // onBecomeObservedListeners\n public onBOL: Set | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n","import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue\n | IObservableArray\n | ObservableMap\n | ObservableSet\n | IObservableValue,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(\n value: ObservableMap | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue\n | IObservableArray\n | ObservableMap\n | ObservableSet\n | IObservableValue,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(\n value: ObservableMap | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) {\n return Object.is(a, b)\n }\n\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n","import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v\n }\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, { name })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name })\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) {\n return v\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v\n }\n if (Array.isArray(v)) {\n return observable.array(v, { name, deep: false })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name, deep: false })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name, deep: false })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name, deep: false })\n }\n\n if (__DEV__) {\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n }\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v)) {\n die(`observable.struct should not be used with observable values`)\n }\n if (deepEqual(v, oldValue)) {\n return oldValue\n }\n return v\n}\n","import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult,\n assert20223DecoratorType,\n storeAnnotation\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: DecoratorContext) {\n if (__DEV__) {\n assert20223DecoratorType(context, [\"method\", \"field\"])\n }\n const { kind, name, addInitializer } = context\n const ann = this\n\n const _createAction = m =>\n createAction(ann.options_?.name ?? name!.toString(), m, ann.options_?.autoAction ?? false)\n\n // Backwards/Legacy behavior, expects makeObservable(this)\n if (kind == \"field\") {\n addInitializer(function () {\n storeAnnotation(this, name, ann)\n })\n return\n }\n\n if (kind == \"method\") {\n if (!isAction(mthd)) {\n mthd = _createAction(mthd)\n }\n\n if (this.options_?.bound) {\n addInitializer(function () {\n const self = this as any\n const bound = self[name].bind(self)\n bound.isMobxAction = true\n self[name] = bound\n })\n }\n\n return mthd\n }\n\n die(\n `Cannot apply '${ann.annotationType_}' to '${String(name)}' (kind: ${kind}):` +\n `\\n'${ann.annotationType_}' can only be used on properties with a function value.`\n )\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult,\n hasProp,\n assert20223DecoratorType\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return MakeResult.Cancel\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: ClassMethodDecoratorContext) {\n if (__DEV__) {\n assert20223DecoratorType(context, [\"method\"])\n }\n const { name, addInitializer } = context\n\n if (!isFlow(mthd)) {\n mthd = flow(mthd)\n }\n\n if (this.options_?.bound) {\n addInitializer(function () {\n const self = this as any\n const bound = self[name].bind(self)\n bound.isMobXFlow = true\n self[name] = bound\n })\n }\n\n return mthd\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value)\n }\n if (bound) {\n // We do not keep original function around, so we bind the existing flow\n value = value.bind(adm.proxy_ ?? adm.target_)\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true\n }\n return {\n value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n die,\n Annotation,\n MakeResult,\n assert20223DecoratorType,\n $mobx,\n asObservableObject,\n ComputedValue\n} from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorContext) {\n if (__DEV__) {\n assert20223DecoratorType(context, [\"getter\"])\n }\n const ann = this\n const { name: key, addInitializer } = context\n\n addInitializer(function () {\n const adm: ObservableObjectAdministration = asObservableObject(this)[$mobx]\n const options = {\n ...ann.options_,\n get,\n context: this\n }\n options.name ||= __DEV__\n ? `${adm.name_}.${key.toString()}`\n : `ObservableObject.${key.toString()}`\n adm.values_.set(key, new ComputedValue(options))\n })\n\n return function () {\n return this[$mobx].getObservablePropValue_(key)\n }\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult,\n assert20223DecoratorType,\n ObservableValue,\n asObservableObject,\n $mobx\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction decorate_20223_(\n this: Annotation,\n desc,\n context: ClassAccessorDecoratorContext | ClassFieldDecoratorContext\n) {\n if (__DEV__) {\n if (context.kind === \"field\") {\n throw die(\n `Please use \\`@observable accessor ${String(\n context.name\n )}\\` instead of \\`@observable ${String(context.name)}\\``\n )\n }\n assert20223DecoratorType(context, [\"accessor\"])\n }\n\n const ann = this\n const { kind, name } = context\n\n // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n // `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n // This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n // before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n // from an object whose class did not declare it` error.\n // TODO: it seems that this will not be required anymore in the final version of the spec\n // See TODO: link\n const initializedObjects = new WeakSet()\n\n function initializeObservable(target, value) {\n const adm: ObservableObjectAdministration = asObservableObject(target)[$mobx]\n const observable = new ObservableValue(\n value,\n ann.options_?.enhancer ?? deepEnhancer,\n __DEV__ ? `${adm.name_}.${name.toString()}` : `ObservableObject.${name.toString()}`,\n false\n )\n adm.values_.set(name, observable)\n initializedObjects.add(target)\n }\n\n if (kind == \"accessor\") {\n return {\n get() {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, desc.get.call(this))\n }\n return this[$mobx].getObservablePropValue_(name)\n },\n set(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value)\n }\n return this[$mobx].setObservablePropValue_(name, value)\n },\n init(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value)\n }\n return value\n }\n }\n }\n\n return\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult,\n die\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: ClassGetterDecoratorContext) {\n die(`'${this.annotationType_}' cannot be used as a decorator`)\n}\n","import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation,\n is20223Decorator,\n initObservable\n} from \"../internal\"\n\nimport type { ClassAccessorDecorator, ClassFieldDecorator } from \"../types/decorator_fills\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation =\n createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp; (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return observableAnnotation.decorate_20223_(v, arg2)\n }\n\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) {\n return v\n }\n\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3)\n }\n\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2)\n }\n\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2)\n }\n\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2)\n }\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v\n }\n\n // anything else\n return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n (value: T, options?: CreateObservableOptions): IObservableValue\n (value?: T, options?: CreateObservableOptions): IObservableValue\n}\n\nexport interface IObservableFactory\n extends Annotation,\n PropertyDecorator,\n ClassAccessorDecorator,\n ClassFieldDecorator {\n // TODO: remove ClassFieldDecorator, this is only temporarily support for legacy decorators\n (value: T[], options?: CreateObservableOptions): IObservableArray\n (value: Set, options?: CreateObservableOptions): ObservableSet\n (value: Map, options?: CreateObservableOptions): ObservableMap\n (\n value: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ): T\n\n box: IObservableValueFactory\n array: (initialValues?: T[], options?: CreateObservableOptions) => IObservableArray\n set: (\n initialValues?: IObservableSetInitialValues,\n options?: CreateObservableOptions\n ) => ObservableSet\n map: (\n initialValues?: IObservableMapInitialValues,\n options?: CreateObservableOptions\n ) => ObservableMap\n object: (\n props: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n deep: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n struct: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box(value: T, options?: CreateObservableOptions): IObservableValue {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array(initialValues?: T[], options?: CreateObservableOptions): IObservableArray {\n const o = asCreateObservableOptions(options)\n return (\n globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray\n )(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map(\n initialValues?: IObservableMapInitialValues,\n options?: CreateObservableOptions\n ): ObservableMap {\n const o = asCreateObservableOptions(options)\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set(\n initialValues?: IObservableSetInitialValues,\n options?: CreateObservableOptions\n ): ObservableSet {\n const o = asCreateObservableOptions(options)\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object(\n props: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ): T {\n return initObservable(() =>\n extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n }\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) {\n return false\n }\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) {\n return false\n }\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): ArrayLike {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n }\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer,\n is20223Decorator\n} from \"../internal\"\n\nimport type { ClassGetterDecorator } from \"../types/decorator_fills\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator, ClassGetterDecorator {\n // @computed(opts)\n (options: IComputedValueOptions): Annotation & PropertyDecorator & ClassGetterDecorator\n // computed(fn, opts)\n (func: () => T, options?: IComputedValueOptions): IComputedValue\n\n struct: Annotation & PropertyDecorator & ClassGetterDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (is20223Decorator(arg2)) {\n // @computed (2022.3 Decorators)\n return computedAnnotation.decorate_20223_(arg1, arg2)\n }\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\")\n }\n if (isFunction(arg2)) {\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n }\n const opts: IComputedValueOptions = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor,\n defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\")\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(`actions should have valid names, got: '${actionName}'`)\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n res.toString = () => fn.toString()\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_)\n }\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n","import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange {\n object: IObservableValue\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\nexport type IBoxDidChange =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue\n debugObjectName: string\n newValue: T\n }\n | IValueDidChange\n\nexport interface IObservableValue {\n get(): T\n set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue\n extends Atom\n implements IObservableValue, IInterceptable>, IListenable\n{\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) {\n return globalState.UNCHANGED\n }\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n }\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue\n","import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\nexport interface IComputedValue {\n get(): T\n set(value: T): void\n}\n\nexport interface IComputedValueOptions {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue implements IObservable, IComputedValue, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n observers_ = new Set()\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n\n private static readonly isComputingMask_ = 0b00001\n private static readonly isRunningSetterMask_ = 0b00010\n private static readonly isBeingObservedMask_ = 0b00100\n private static readonly isPendingUnobservationMask_ = 0b01000\n private static readonly diffValueMask_ = 0b10000\n private flags_ = 0b00000\n\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer\n private requiresReaction_: boolean | undefined\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions) {\n if (!options.get) {\n die(31)\n }\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set | undefined\n public onBUOL: Set | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n // to check for cycles\n private get isComputing(): boolean {\n return getFlag(this.flags_, ComputedValue.isComputingMask_)\n }\n private set isComputing(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isComputingMask_, newValue)\n }\n\n private get isRunningSetter(): boolean {\n return getFlag(this.flags_, ComputedValue.isRunningSetterMask_)\n }\n private set isRunningSetter(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isRunningSetterMask_, newValue)\n }\n\n get isBeingObserved(): boolean {\n return getFlag(this.flags_, ComputedValue.isBeingObservedMask_)\n }\n set isBeingObserved(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isBeingObservedMask_, newValue)\n }\n\n get isPendingUnobservation(): boolean {\n return getFlag(this.flags_, ComputedValue.isPendingUnobservationMask_)\n }\n set isPendingUnobservation(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isPendingUnobservationMask_, newValue)\n }\n\n get diffValue(): 0 | 1 {\n return getFlag(this.flags_, ComputedValue.diffValueMask_) ? 1 : 0\n }\n set diffValue(newValue: 0 | 1) {\n this.flags_ = setFlag(\n this.flags_,\n ComputedValue.diffValueMask_,\n newValue === 1 ? true : false\n )\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing) {\n die(32, this.name_, this.derivation)\n }\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this)\n }\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) {\n throw result.cause\n }\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter) {\n die(33, this.name_)\n }\n this.isRunningSetter = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter = false\n }\n } else {\n die(34, this.name_)\n }\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) {\n return\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (\n typeof this.requiresReaction_ === \"boolean\"\n ? this.requiresReaction_\n : globalState.computedRequiresReaction\n ) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set | undefined\n onBOL: Set | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_\n }\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved && globalState.trackingContext) {\n observable.isBeingObserved = true\n observable.onBO()\n }\n }\n return observable.isBeingObserved\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) {\n tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n }\n}\n","import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (\n !globalState.allowStateChanges &&\n (hasObservers || globalState.enforceActions === \"always\")\n ) {\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n changeDependenciesStateTo0(derivation)\n // Preallocate array; will be trimmed by bindDependencies.\n derivation.newObserving_ = new Array(\n // Reserve constant space for initial dependencies, dynamic space otherwise.\n // See https://github.com/mobxjs/mobx/pull/3833\n derivation.runId_ === 0 ? 100 : derivation.observing_.length\n )\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) {\n return\n }\n\n if (derivation.observing_.length !== 0) {\n return\n }\n\n if (\n typeof derivation.requiresObservable_ === \"boolean\"\n ? derivation.requiresObservable_\n : globalState.reactionRequiresObservable\n ) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue === 0) {\n dep.diffValue = 1\n if (i0 !== i) {\n observing[i0] = dep\n }\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue === 1) {\n dep.diffValue = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) {\n removeObserver(obs[i], derivation)\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false\n }\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {}\n } // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n ) {\n die(36)\n }\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined\n }\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals) {\n if (persistentKeys.indexOf(key as any) === -1) {\n globalState[key] = defaultGlobals[key]\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction,\n GenericAbortSignal\n} from \"../internal\"\n\nimport { getFlag, setFlag } from \"../utils/utils\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n [$mobx]: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n runId_ = 0\n unboundDepsCount_ = 0\n\n private static readonly isDisposedMask_ = 0b00001\n private static readonly isScheduledMask_ = 0b00010\n private static readonly isTrackPendingMask_ = 0b00100\n private static readonly isRunningMask_ = 0b01000\n private static readonly diffValueMask_ = 0b10000\n private flags_ = 0b00000\n\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_?\n ) {}\n\n get isDisposed() {\n return getFlag(this.flags_, Reaction.isDisposedMask_)\n }\n set isDisposed(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, Reaction.isDisposedMask_, newValue)\n }\n\n get isScheduled() {\n return getFlag(this.flags_, Reaction.isScheduledMask_)\n }\n set isScheduled(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, Reaction.isScheduledMask_, newValue)\n }\n\n get isTrackPending() {\n return getFlag(this.flags_, Reaction.isTrackPendingMask_)\n }\n set isTrackPending(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, Reaction.isTrackPendingMask_, newValue)\n }\n\n get isRunning() {\n return getFlag(this.flags_, Reaction.isRunningMask_)\n }\n set isRunning(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, Reaction.isRunningMask_, newValue)\n }\n\n get diffValue(): 0 | 1 {\n return getFlag(this.flags_, Reaction.diffValueMask_) ? 1 : 0\n }\n set diffValue(newValue: 0 | 1) {\n this.flags_ = setFlag(this.flags_, Reaction.diffValueMask_, newValue === 1 ? true : false)\n }\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled) {\n this.isScheduled = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed) {\n startBatch()\n this.isScheduled = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning = false\n this.isTrackPending = false\n if (this.isDisposed) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause)\n }\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) {\n throw error\n }\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed) {\n this.isDisposed = true\n if (!this.isRunning) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(abortSignal?: GenericAbortSignal): IReactionDisposer {\n const dispose = (() => {\n this.dispose()\n abortSignal?.removeEventListener?.(\"abort\", dispose)\n }) as IReactionDisposer\n abortSignal?.addEventListener?.(\"abort\", dispose)\n dispose[$mobx] = this\n\n return dispose\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return\n }\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_()\n }\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation,\n is20223Decorator\n} from \"../internal\"\n\nimport type { ClassFieldDecorator, ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory\n extends Annotation,\n PropertyDecorator,\n ClassMethodDecorator,\n ClassFieldDecorator {\n // nameless actions\n (fn: T): T\n // named actions\n (name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator &\n Annotation &\n ClassMethodDecorator &\n ClassFieldDecorator\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator & ClassMethodDecorator & ClassFieldDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction)\n }\n // @action (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(\n arg1,\n arg2\n )\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) {\n die(\"Invalid arguments for `action`\")\n }\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges,\n GenericAbortSignal\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n signal?: GenericAbortSignal\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\")\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\")\n }\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed) {\n reaction.track(reactionRunner)\n }\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n if (!opts?.signal?.aborted) {\n reaction.schedule_()\n }\n return reaction.getDisposer_(opts?.signal)\n}\n\nexport type IReactionOptions = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\")\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\")\n }\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n\n const equals: IEqualsComparer = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed) {\n return\n }\n let changed: boolean = false\n const oldValue = value\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current function implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) {\n effectAction(value, oldValue as OldValue, r)\n } else if (!firstTime && changed) {\n effectAction(value, oldValue as OldValue, r)\n }\n firstTime = false\n }\n\n if (!opts?.signal?.aborted) {\n r.schedule_()\n }\n return r.getDisposer_(opts?.signal)\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true\n }\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) {\n globalState[key] = !!options[key]\n }\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n","import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys,\n initObservable\n} from \"../internal\"\n\nexport function extendObservable(\n target: A,\n properties: B,\n annotations?: AnnotationsMap,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\")\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\")\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n }\n if (!isPlainObject(properties)) {\n die(`'extendObservable' only accepts plain objects as second argument`)\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(`Extending an object with another observable (object) is not supported`)\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n initObservable(() => {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n })\n\n return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n }\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any)) {\n result.observers = Array.from(getObservers(node as any)).map(nodeToObserverTree)\n }\n return result\n}\n\nfunction unique(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n","import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation,\n is20223Decorator\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise = Promise & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator, ClassMethodDecorator {\n (\n generator: (...args: Args) => Generator | AsyncGenerator\n ): (...args: Args) => CancellablePromise\n bound: Annotation & PropertyDecorator & ClassMethodDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return flowAnnotation.decorate_20223_(arg1, arg2)\n }\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1) {\n die(`Flow expects single argument with generator function`)\n }\n const generator = arg1\n const name = generator.name || \"\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) {\n return resolve(ret.value)\n }\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise)\n }\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel()\n }\n}\n\nexport function flowResult(\n result: T\n): T extends Generator\n ? CancellablePromise\n : T extends CancellablePromise\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n","import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) {\n return false\n }\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1) {\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n }\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`expected a property name as second argument`)\n }\n return _isObservable(value, propName)\n}\n","import {\n isObservable,\n isObservableArray,\n isObservableValue,\n isObservableMap,\n isObservableSet,\n isComputedValue,\n die,\n apiOwnKeys,\n objectPrototype\n} from \"../internal\"\n\nfunction cache(map: Map, key: K, value: V): V {\n map.set(key, value)\n return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map) {\n if (\n source == null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n !isObservable(source)\n ) {\n return source\n }\n\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen)\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source)\n }\n if (isObservableArray(source)) {\n const res = cache(__alreadySeen, source, new Array(source.length))\n source.forEach((value, idx) => {\n res[idx] = toJSHelper(value, __alreadySeen)\n })\n return res\n }\n if (isObservableSet(source)) {\n const res = cache(__alreadySeen, source, new Set())\n source.forEach(value => {\n res.add(toJSHelper(value, __alreadySeen))\n })\n return res\n }\n if (isObservableMap(source)) {\n const res = cache(__alreadySeen, source, new Map())\n source.forEach((value, key) => {\n res.set(key, toJSHelper(value, __alreadySeen))\n })\n return res\n } else {\n // must be observable object\n const res = cache(__alreadySeen, source, {})\n apiOwnKeys(source).forEach((key: any) => {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n res[key] = toJSHelper(source[key], __alreadySeen)\n }\n })\n return res\n }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS(source: T, options?: any): T {\n if (__DEV__ && options) {\n die(\"toJS no longer supports options\")\n }\n return toJSHelper(source, new Map())\n}\n","import {\n $mobx,\n IIsObservableObject,\n IObservableArray,\n ObservableMap,\n ObservableSet,\n ObservableObjectAdministration,\n endBatch,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n startBatch,\n die\n} from \"../internal\"\n\nexport function keys(map: ObservableMap): ReadonlyArray\nexport function keys(ar: IObservableArray): ReadonlyArray\nexport function keys(set: ObservableSet): ReadonlyArray\nexport function keys(obj: T): ReadonlyArray\nexport function keys(obj: any): any {\n if (isObservableObject(obj)) {\n return (\n (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n ).keys_()\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys())\n }\n if (isObservableArray(obj)) {\n return obj.map((_, index) => index)\n }\n die(5)\n}\n\nexport function values(map: ObservableMap): ReadonlyArray\nexport function values(set: ObservableSet): ReadonlyArray\nexport function values(ar: IObservableArray): ReadonlyArray\nexport function values(obj: T): ReadonlyArray\nexport function values(obj: any): string[] {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => obj[key])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => obj.get(key))\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values())\n }\n if (isObservableArray(obj)) {\n return obj.slice()\n }\n die(6)\n}\n\nexport function entries(map: ObservableMap): ReadonlyArray<[K, T]>\nexport function entries(set: ObservableSet): ReadonlyArray<[T, T]>\nexport function entries(ar: IObservableArray): ReadonlyArray<[number, T]>\nexport function entries(\n obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => [key, obj[key]])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => [key, obj.get(key)])\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries())\n }\n if (isObservableArray(obj)) {\n return obj.map((key, index) => [index, key])\n }\n die(7)\n}\n\nexport function set(obj: ObservableMap, values: { [key: string]: V })\nexport function set(obj: ObservableMap, key: K, value: V)\nexport function set(obj: ObservableSet, value: T)\nexport function set(obj: IObservableArray, index: number, value: T)\nexport function set(obj: T, values: { [key: string]: any })\nexport function set(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch()\n const values = key\n try {\n for (let key in values) {\n set(obj, key, values[key])\n }\n } finally {\n endBatch()\n }\n return\n }\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n } else if (isObservableMap(obj)) {\n obj.set(key, value)\n } else if (isObservableSet(obj)) {\n obj.add(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n if (key < 0) {\n die(`Invalid index: '${key}'`)\n }\n startBatch()\n if (key >= obj.length) {\n obj.length = key + 1\n }\n obj[key] = value\n endBatch()\n } else {\n die(8)\n }\n}\n\nexport function remove(obj: ObservableMap, key: K)\nexport function remove(obj: ObservableSet, key: T)\nexport function remove(obj: IObservableArray, index: number)\nexport function remove(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n } else if (isObservableMap(obj)) {\n obj.delete(key)\n } else if (isObservableSet(obj)) {\n obj.delete(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n obj.splice(key, 1)\n } else {\n die(9)\n }\n}\n\nexport function has(obj: ObservableMap, key: K): boolean\nexport function has(obj: ObservableSet, key: T): boolean\nexport function has(obj: IObservableArray, index: number): boolean\nexport function has(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].has_(key)\n } else if (isObservableMap(obj)) {\n return obj.has(key)\n } else if (isObservableSet(obj)) {\n return obj.has(key)\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length\n }\n die(10)\n}\n\nexport function get(obj: ObservableMap, key: K): V | undefined\nexport function get(obj: IObservableArray, index: number): T | undefined\nexport function get(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n if (!has(obj, key)) {\n return undefined\n }\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].get_(key)\n } else if (isObservableMap(obj)) {\n return obj.get(key)\n } else if (isObservableArray(obj)) {\n return obj[key]\n }\n die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n }\n die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n }\n die(38)\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor = (change: T) => T | null\n\nexport interface IInterceptable {\n interceptors_: IInterceptor[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor(\n interceptable: IInterceptable,\n handler: IInterceptor\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) {\n interceptors.splice(idx, 1)\n }\n })\n}\n\nexport function interceptChange(\n interceptable: IInterceptable,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) {\n die(14)\n }\n if (!change) {\n break\n }\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) {\n listeners.splice(idx, 1)\n }\n })\n}\n\nexport function notifyListeners(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) {\n return\n }\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n","import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol,\n initObservable\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer = [T][T extends any ? 0 : never]\n\ntype MakeObservableOptions = Omit\n\nexport function makeObservable(\n target: T,\n annotations?: AnnotationsMap>,\n options?: MakeObservableOptions\n): T {\n initObservable(() => {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n })\n return target\n}\n\n// proto[keysSymbol] = new Set()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable(\n target: T,\n overrides?: AnnotationsMap>,\n options?: MakeObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n }\n if (isObservableObject(target)) {\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n initObservable(() => {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n })\n\n return target\n}\n","import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState,\n initObservable\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray extends Array {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange {\n object: IObservableArray\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange = IArrayUpdate | IArraySplice\n\nexport interface IArrayUpdate extends IArrayBaseChange {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice extends IArrayBaseChange {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange {\n object: IObservableArray\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice {\n object: IObservableArray\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) {\n return adm\n }\n if (name === \"length\") {\n return adm.getArrayLength_()\n }\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable | IArrayWillSplice>, IListenable\n{\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer) as any\n }\n return values\n }\n\n intercept_(handler: IInterceptor | IArrayWillSplice>): Lambda {\n return registerInterceptor | IArrayWillSplice>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength)\n }\n let currentLength = this.values_.length\n if (newLength === currentLength) {\n return\n } else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength)\n }\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) {\n die(16)\n }\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1)\n }\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) {\n index = 0\n } else if (index > length) {\n index = length\n } else if (index < 0) {\n index = Math.max(0, length + index)\n }\n\n if (arguments.length === 1) {\n deleteCount = length - index\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n }\n\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY\n }\n\n if (hasInterceptors(this)) {\n const change = interceptChange>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) {\n return EMPTY_ARRAY\n }\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res)\n }\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n // The items removed by the splice\n const res = this.values_.slice(index, index + deleteCount)\n // The items that that should remain at the end of the array\n let oldItems = this.values_.slice(index + deleteCount)\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i]\n }\n for (let i = 0; i < oldItems.length; i++) {\n this.values_[index + newItems.length + i] = oldItems[i]\n }\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get_(index: number): any | undefined {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(\n __DEV__\n ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n : `[mobx] Out of bounds read: ${index}`\n )\n return undefined\n }\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length)\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) {\n return\n }\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n const newItems = new Array(index + 1 - values.length)\n for (let i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue\n this.spliceWithArray_(values.length, 0, newItems)\n }\n }\n}\n\nexport function createObservableArray(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray {\n assertProxies()\n return initObservable(() => {\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n adm.spliceWithArray_(0, 0, initialValues)\n }\n return proxy\n })\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc)\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\naddArrayExtension(\"toSorted\", simpleFunc)\naddArrayExtension(\"toSpliced\", simpleFunc)\naddArrayExtension(\"with\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"findLast\", mapLikeFunc)\naddArrayExtension(\"findLastIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\naddArrayExtension(\"toReversed\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange\n | IObjectDidChange\n | IArrayDidChange\n | IMapDidChange\n | ISetDidChange\n | IValueDidChange\n | IBoxDidChange\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) {\n return\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return\n }\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event)\n }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) {\n return\n }\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) {\n return\n }\n if (change) {\n spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n } else {\n spyReport(END_EVENT)\n }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n","import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom,\n PureSpyEvent,\n initObservable\n} from \"../internal\"\n\nexport interface IKeyValueMap {\n [key: string]: V\n}\n\nexport type IMapEntry = [K, V]\nexport type IReadonlyMapEntry = readonly [K, V]\nexport type IMapEntries = IMapEntry[]\nexport type IReadonlyMapEntries = IReadonlyMapEntry[]\n\nexport type IMapDidChange = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange {\n object: ObservableMap\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues =\n | IMapEntries\n | IReadonlyMapEntries\n | IKeyValueMap\n | Map\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap\n implements Map, IInterceptable>, IListenable\n{\n [$mobx] = ObservableMapMarker\n data_!: Map>\n hasMap_!: Map> // hasMap, not hashMap >-).\n keysAtom_!: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues,\n public enhancer_: IEnhancer = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n initObservable(() => {\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n if (initialData) {\n this.merge(initialData)\n }\n })\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) {\n return this.has_(key)\n }\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) {\n return this\n }\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) {\n return false\n }\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n observable.setNewValue_(newValue as V)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key)!.get())\n }\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map) => void, thisArg?) {\n for (const [key, value] of this) {\n callback.call(thisArg, value, key, this)\n }\n }\n\n /** Merge another object into this object, returns this. */\n merge(other?: IObservableMapInitialValues): ObservableMap {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set(key as K, (other as IKeyValueMap)[key])\n )\n } else if (Array.isArray(other)) {\n other.forEach(([key, value]) => this.set(key, value))\n } else if (isES6Map(other)) {\n if (!isPlainES6Map(other)) {\n die(19, other)\n }\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) {\n die(20, other)\n }\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) {\n this.delete(key)\n }\n })\n })\n }\n\n replace(values: IObservableMapInitialValues): ObservableMap {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap\n\nfunction convertToMap(dataStructure: any): Map {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n","import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction,\n initObservable\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues = Set | readonly T[]\n\nexport type ISetDidChange =\n | {\n object: ObservableSet\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange =\n | {\n type: \"delete\"\n object: ObservableSet\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet\n newValue: T\n }\n\nexport class ObservableSet implements Set, IInterceptable, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set = new Set()\n atom_!: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues,\n enhancer: IEnhancer = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n initObservable(() => {\n this.atom_ = createAtom(this.name_)\n if (initialData) {\n this.replace(initialData)\n }\n })\n }\n\n private dehanceValue_(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) {\n this.delete(value)\n }\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) {\n return this\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? >{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n }\n\n return this\n }\n\n delete(value: T) {\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) {\n return false\n }\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? >{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n has(value: T) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator {\n return this.values()\n }\n\n values(): IterableIterator {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n intersection(otherSet: ReadonlySetLike | Set): Set {\n if (isES6Set(otherSet)) {\n return otherSet.intersection(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.intersection(otherSet)\n }\n }\n\n union(otherSet: ReadonlySetLike | Set): Set {\n if (isES6Set(otherSet)) {\n return otherSet.union(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.union(otherSet)\n }\n }\n\n difference(otherSet: ReadonlySetLike): Set {\n return new Set(this).difference(otherSet)\n }\n\n symmetricDifference(otherSet: ReadonlySetLike | Set): Set {\n if (isES6Set(otherSet)) {\n return otherSet.symmetricDifference(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.symmetricDifference(otherSet)\n }\n }\n\n isSubsetOf(otherSet: ReadonlySetLike): boolean {\n return new Set(this).isSubsetOf(otherSet)\n }\n\n isSupersetOf(otherSet: ReadonlySetLike): boolean {\n return new Set(this).isSupersetOf(otherSet)\n }\n\n isDisjointFrom(otherSet: ReadonlySetLike | Set): boolean {\n if (isES6Set(otherSet)) {\n return otherSet.isDisjointFrom(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.isDisjointFrom(otherSet)\n }\n }\n\n replace(other: ObservableSet | IObservableSetInitialValues): ObservableSet {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet\n","import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult,\n checkIfStateModificationsAreAllowed\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable, IListenable\n{\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map>\n\n constructor(\n public target_: any,\n public values_ = new Map | ComputedValue>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) {\n return null\n }\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n ;(observable as ObservableValue).setNewValue_(newValue)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) {\n return\n }\n if (outcome === MakeResult.Break) {\n break\n }\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) {\n return null\n }\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer,\n proxyTrap: boolean = false\n ): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) {\n return null\n }\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions,\n proxyTrap: boolean = false\n ): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) {\n return null\n }\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) {\n return null\n }\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n }\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): Array {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n [$mobx]: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\")\n }\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overridden by subclass.`\n )\n }\n}\n","import {\n getNextId,\n addHiddenFinalProp,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty,\n initObservable\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n let v = false\n const p = {}\n Object.defineProperty(p, \"0\", {\n set: () => {\n v = true\n }\n })\n Object.create(p)[\"0\"] = 1\n return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nexport class LegacyObservableArray extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n initObservable(() => {\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n }\n\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter until any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(this, \"0\", ENTRY_0)\n }\n })\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index)\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name?: string\n): IObservableArray {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction,\n allowStateChangesStart,\n untrackedStart,\n allowStateChangesEnd,\n untrackedEnd,\n startBatch,\n endBatch\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23)\n }\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return thing.atom_\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_\n }\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) {\n die(25, property, getDebugName(thing))\n }\n return observable\n }\n if (property && !thing[$mobx]) {\n thing[property]\n } // See #1072\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26)\n }\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) {\n die(27, property, getDebugName(thing))\n }\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) {\n die(29)\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property))\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing\n }\n if (thing[$mobx]) {\n return thing[$mobx]\n }\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nexport function initObservable(cb: () => T): T {\n const derivation = untrackedStart()\n const allowStateChanges = allowStateChangesStart(true)\n startBatch()\n try {\n return cb()\n } finally {\n endBatch()\n allowStateChangesEnd(allowStateChanges)\n untrackedEnd(derivation)\n }\n}\n","import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b\n }\n // Exhaust primitive checks\n const type = typeof a\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false\n }\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) {\n return false\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false\n }\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b\n }\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) {\n return false\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false\n }\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false\n }\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) {\n return a.slice()\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries())\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries())\n }\n return a\n}\n","export function makeIterable(iterator: Iterator): IterableIterator {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n","import { makeObservable } from \"mobx\"\nimport { useState } from \"react\"\n\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\")\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\")\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n","import { configure } from \"mobx\"\n\nexport function defaultNoopBatch(callback: () => void) {\n callback()\n}\n\nexport function observerBatching(reactionScheduler: any) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[MobX] Failed to get unstable_batched updates from react-dom / react-native\"\n )\n }\n }\n configure({ reactionScheduler })\n}\n\nexport const isObserverBatched = () => {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\")\n }\n\n return true\n}\n","import { getDependencyTree, Reaction } from \"mobx\"\n\nexport function printDebugValue(v: Reaction) {\n return getDependencyTree(v)\n}\n","export declare class FinalizationRegistryType {\n constructor(finalize: (value: T) => void)\n register(target: object, value: T, token?: object): void\n unregister(token: object): void\n}\n\ndeclare const FinalizationRegistry: typeof FinalizationRegistryType | undefined\n\nexport const REGISTRY_FINALIZE_AFTER = 10_000\nexport const REGISTRY_SWEEP_INTERVAL = 10_000\n\nexport class TimerBasedFinalizationRegistry implements FinalizationRegistryType {\n private registrations: Map = new Map()\n private sweepTimeout: ReturnType | undefined\n\n constructor(private readonly finalize: (value: T) => void) {}\n\n // Token is actually required with this impl\n register(target: object, value: T, token?: object) {\n this.registrations.set(token, {\n value,\n registeredAt: Date.now()\n })\n this.scheduleSweep()\n }\n\n unregister(token: unknown) {\n this.registrations.delete(token)\n }\n\n // Bound so it can be used directly as setTimeout callback.\n sweep = (maxAge = REGISTRY_FINALIZE_AFTER) => {\n // cancel timeout so we can force sweep anytime\n clearTimeout(this.sweepTimeout)\n this.sweepTimeout = undefined\n\n const now = Date.now()\n this.registrations.forEach((registration, token) => {\n if (now - registration.registeredAt >= maxAge) {\n this.finalize(registration.value)\n this.registrations.delete(token)\n }\n })\n\n if (this.registrations.size > 0) {\n this.scheduleSweep()\n }\n }\n\n // Bound so it can be exported directly as clearTimers test utility.\n finalizeAllImmediately = () => {\n this.sweep(0)\n }\n\n private scheduleSweep() {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL)\n }\n }\n}\n\nexport const UniversalFinalizationRegistry =\n typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry\n","import { Reaction } from \"mobx\"\nimport { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\"\n\nexport const observerFinalizationRegistry = new UniversalFinalizationRegistry(\n (adm: { reaction: Reaction | null }) => {\n adm.reaction?.dispose()\n adm.reaction = null\n }\n)\n","let globalIsUsingStaticRendering = false\n\nexport function enableStaticRendering(enable: boolean) {\n globalIsUsingStaticRendering = enable\n}\n\nexport function isUsingStaticRendering(): boolean {\n return globalIsUsingStaticRendering\n}\n","import { Reaction } from \"mobx\"\nimport React from \"react\"\nimport { printDebugValue } from \"./utils/printDebugValue\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\nimport { isUsingStaticRendering } from \"./staticRendering\"\n\nfunction observerComponentNameFor(baseComponentName: string) {\n return `observer${baseComponentName}`\n}\n\ntype ObserverAdministration = {\n /** The Reaction created during first render, which may be leaked */\n reaction: Reaction | null\n\n /**\n * Whether the component has yet completed mounting (for us, whether\n * its useEffect has run)\n */\n mounted: boolean\n\n /**\n * Whether the observables that the component is tracking changed between\n * the first render and the first useEffect.\n */\n changedBeforeMount: boolean\n}\n\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nclass ObjectToBeRetainedByReact {}\n\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact()\n}\n\nexport function useObserver(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (isUsingStaticRendering()) {\n return fn()\n }\n\n const [objectRetainedByReact] = React.useState(objectToBeRetainedByReactFactory)\n // Force update, see #2982\n const [, setState] = React.useState()\n const forceUpdate = () => setState([] as any)\n\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n const admRef = React.useRef(null)\n\n if (!admRef.current) {\n // First render\n admRef.current = {\n reaction: null,\n mounted: false,\n changedBeforeMount: false\n }\n }\n\n const adm = admRef.current!\n\n if (!adm.reaction) {\n // First render or component was not committed and reaction was disposed by registry\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (adm.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate()\n } else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n adm.changedBeforeMount = true\n }\n })\n\n observerFinalizationRegistry.register(objectRetainedByReact, adm, adm)\n }\n\n React.useDebugValue(adm.reaction, printDebugValue)\n\n React.useEffect(() => {\n observerFinalizationRegistry.unregister(adm)\n\n adm.mounted = true\n\n if (adm.reaction) {\n if (adm.changedBeforeMount) {\n // Got a change before mount, force an update\n adm.changedBeforeMount = false\n forceUpdate()\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n\n // Re-create the reaction\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // We've definitely already been mounted at this point\n forceUpdate()\n })\n forceUpdate()\n }\n\n return () => {\n adm.reaction!.dispose()\n adm.reaction = null\n adm.mounted = false\n adm.changedBeforeMount = false\n }\n }, [])\n\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n let rendering!: T\n let exception\n adm.reaction.track(() => {\n try {\n rendering = fn()\n } catch (e) {\n exception = e\n }\n })\n\n if (exception) {\n throw exception // re-throw any exceptions caught during rendering\n }\n\n return rendering\n}\n","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nlet warnObserverOptionsDeprecated = true\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo((props: any) => null)[\"$$typeof\"]\n\nexport interface IObserverOptions {\n readonly forwardRef?: boolean\n}\n\nexport function observer

(\n baseComponent: React.ForwardRefRenderFunction,\n options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent & React.RefAttributes>\n>\n\nexport function observer

(\n baseComponent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef

& React.RefAttributes\n >\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent & React.RefAttributes>\n>\n\nexport function observer

(\n baseComponent: React.FunctionComponent

,\n options?: IObserverOptions\n): React.FunctionComponent

\n\nexport function observer<\n C extends React.FunctionComponent | React.ForwardRefRenderFunction,\n Options extends IObserverOptions\n>(\n baseComponent: C,\n options?: Options\n): Options extends { forwardRef: true }\n ? C extends React.ForwardRefRenderFunction\n ? C &\n React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n React.PropsWithoutRef

& React.RefAttributes\n >\n >\n : never /* forwardRef set for a non forwarding component */\n : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer

(\n baseComponent:\n | React.ForwardRefRenderFunction\n | React.FunctionComponent

;\n}\n\nexport const Icons = {\n info: Info,\n warning: Warning,\n success: Success,\n error: Error,\n spinner: Spinner\n};\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { ProgressBar } from './ProgressBar';\nimport { Icons } from './Icons';\nimport { ToastProps } from '../types';\nimport { Default, isFn, isStr } from '../utils';\nimport { useToast } from '../hooks';\n\nexport const Toast: React.FC = props => {\n const {\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n } = useToast(props);\n const {\n closeButton,\n children,\n autoClose,\n onClick,\n type,\n hideProgressBar,\n closeToast,\n transition: Transition,\n position,\n className,\n style,\n bodyClassName,\n bodyStyle,\n progressClassName,\n progressStyle,\n updateId,\n role,\n progress,\n rtl,\n toastId,\n deleteToast,\n isIn,\n isLoading,\n icon,\n theme\n } = props;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast`,\n `${Default.CSS_NAMESPACE}__toast-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__toast--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n }\n );\n const cssClasses = isFn(className)\n ? className({\n rtl,\n position,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n const isProgressControlled = !!progress;\n const maybeIcon = Icons[type as keyof typeof Icons];\n const iconProps = { theme, type };\n let Icon: React.ReactNode = maybeIcon && maybeIcon(iconProps);\n\n if (icon === false) {\n Icon = void 0;\n } else if (isFn(icon)) {\n Icon = icon(iconProps);\n } else if (React.isValidElement(icon)) {\n Icon = React.cloneElement(icon, iconProps);\n } else if (isStr(icon)) {\n Icon = icon;\n } else if (isLoading) {\n Icon = Icons.spinner();\n }\n\n function renderCloseButton(closeButton: any) {\n if (!closeButton) return;\n\n const props = { closeToast, type, theme };\n\n if (isFn(closeButton)) return closeButton(props);\n\n if (React.isValidElement(closeButton))\n return React.cloneElement(closeButton, props);\n }\n\n return (\n \n \n \n {Icon && (\n \n {Icon}\n
\n )}\n
{children}
\n \n {renderCloseButton(closeButton)}\n {(autoClose || isProgressControlled) && (\n \n )}\n \n \n );\n};\n","import { Default, cssTransition } from '../utils';\n\nconst Bounce = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-exit`,\n appendPosition: true\n});\n\nconst Slide = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-exit`,\n appendPosition: true\n});\n\nconst Zoom = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-exit`\n});\n\nconst Flip = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-exit`\n});\n\nexport { Bounce, Slide, Zoom, Flip };\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { Toast } from './Toast';\nimport { CloseButton } from './CloseButton';\nimport { Bounce } from './Transitions';\nimport { POSITION, Direction, Default, parseClassName, isFn } from '../utils';\nimport { useToastContainer } from '../hooks';\nimport { ToastContainerProps, ToastPosition } from '../types';\n\nexport const ToastContainer: React.FC = props => {\n const { getToastToRender, containerRef, isToastActive } = useToastContainer(\n props\n );\n const { className, style, rtl, containerId } = props;\n\n function getClassName(position: ToastPosition) {\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast-container`,\n `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n );\n return isFn(className)\n ? className({\n position,\n rtl,\n defaultClassName\n })\n : cx(defaultClassName, parseClassName(className));\n }\n\n return (\n \n {getToastToRender((position, toastList) => {\n const containerStyle: React.CSSProperties = !toastList.length\n ? { ...style, pointerEvents: 'none' }\n : { ...style };\n\n return (\n \n {toastList.map(({ content, props: toastProps }) => {\n return (\n \n {content}\n \n );\n })}\n \n );\n })}\n \n );\n};\n\nToastContainer.defaultProps = {\n position: POSITION.TOP_RIGHT as ToastPosition,\n transition: Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: CloseButton,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: Default.DRAGGABLE_PERCENT as number,\n draggableDirection: Direction.X,\n role: 'alert',\n theme: 'light'\n};\n","import * as React from 'react';\nimport { render } from 'react-dom';\n\nimport { POSITION, TYPE, canUseDom, isStr, isNum, isFn } from '../utils';\nimport { eventManager, OnChangeCallback, Event } from './eventManager';\nimport {\n ToastContent,\n ToastOptions,\n ToastProps,\n Id,\n ToastContainerProps,\n UpdateOptions,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n TypeOptions\n} from '../types';\nimport { ContainerInstance } from '../hooks';\nimport { ToastContainer } from '../components';\n\ninterface EnqueuedToast {\n content: ToastContent;\n options: NotValidatedToastProps;\n}\n\nlet containers = new Map();\nlet latestInstance: ContainerInstance | Id;\nlet containerDomNode: HTMLElement;\nlet containerConfig: ToastContainerProps;\nlet queue: EnqueuedToast[] = [];\nlet lazy = false;\n\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\nfunction getToast(toastId: Id, { containerId }: ToastOptions) {\n const container = containers.get(containerId || latestInstance);\n if (!container) return null;\n\n return container.getToast(toastId);\n}\n\n/**\n * Generate a random toastId\n */\nfunction generateToastId() {\n return Math.random()\n .toString(36)\n .substring(2, 9);\n}\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n if (options && (isStr(options.toastId) || isNum(options.toastId))) {\n return options.toastId;\n }\n\n return generateToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\nfunction dispatchToast(\n content: ToastContent,\n options: NotValidatedToastProps\n): Id {\n if (containers.size > 0) {\n eventManager.emit(Event.Show, content, options);\n } else {\n queue.push({ content, options });\n if (lazy && canUseDom) {\n lazy = false;\n containerDomNode = document.createElement('div');\n document.body.appendChild(containerDomNode);\n render(, containerDomNode);\n }\n }\n\n return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n return {\n ...options,\n type: (options && options.type) || type,\n toastId: getToastId(options)\n } as NotValidatedToastProps;\n}\n\nfunction createToastByType(type: string) {\n return (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(type, options));\n}\n\nfunction toast(content: ToastContent, options?: ToastOptions) {\n return dispatchToast(content, mergeOptions(TYPE.DEFAULT, options));\n}\n\ntoast.loading = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(TYPE.DEFAULT, {\n isLoading: true,\n autoClose: false,\n closeOnClick: false,\n closeButton: false,\n draggable: false,\n ...options\n })\n );\n\nexport interface ToastPromiseParams {\n pending?: string | UpdateOptions;\n success?: string | UpdateOptions;\n error?: string | UpdateOptions;\n}\n\nfunction handlePromise(\n promise: Promise | (() => Promise),\n { pending, error, success }: ToastPromiseParams,\n options?: ToastOptions\n) {\n let id: Id;\n\n if (pending) {\n id = isStr(pending)\n ? toast.loading(pending, options)\n : toast.loading(pending.render, {\n ...options,\n ...(pending as ToastOptions)\n });\n }\n\n const resetParams = {\n isLoading: null,\n autoClose: null,\n closeOnClick: null,\n closeButton: null,\n draggable: null\n };\n\n const resolver = (\n type: TypeOptions,\n input: string | UpdateOptions | undefined,\n result: T\n ) => {\n // Remove the toast if the input has not been provided. This prevents the toast from hanging\n // in the pending state if a success/error toast has not been provided.\n if (input == null) {\n toast.dismiss(id);\n return;\n }\n\n const baseParams = {\n type,\n ...resetParams,\n ...options,\n data: result\n };\n const params = isStr(input) ? { render: input } : input;\n\n // if the id is set we know that it's an update\n if (id) {\n toast.update(id, {\n ...baseParams,\n ...params\n });\n } else {\n // using toast.promise without loading\n toast(params.render, {\n ...baseParams,\n ...params\n } as ToastOptions);\n }\n\n return result;\n };\n\n const p = isFn(promise) ? promise() : promise;\n\n //call the resolvers only when needed\n p.then(result => resolver('success', success, result)).catch(err =>\n resolver('error', error, err)\n );\n\n return p;\n}\n\ntoast.promise = handlePromise;\ntoast.success = createToastByType(TYPE.SUCCESS);\ntoast.info = createToastByType(TYPE.INFO);\ntoast.error = createToastByType(TYPE.ERROR);\ntoast.warning = createToastByType(TYPE.WARNING);\ntoast.warn = toast.warning;\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(TYPE.DEFAULT, {\n theme: 'dark',\n ...options\n })\n );\n\n/**\n * Remove toast programmaticaly\n */\ntoast.dismiss = (id?: Id) => eventManager.emit(Event.Clear, id);\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = (params: ClearWaitingQueueParams = {}) =>\n eventManager.emit(Event.ClearWaitingQueue, params);\n\n/**\n * return true if one container is displaying the toast\n */\ntoast.isActive = (id: Id) => {\n let isToastActive = false;\n\n containers.forEach(container => {\n if (container.isToastActive && container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n\n return isToastActive;\n};\n\ntoast.update = (toastId: Id, options: UpdateOptions = {}) => {\n // if you call toast and toast.update directly nothing will be displayed\n // this is why I defered the update\n setTimeout(() => {\n const toast = getToast(toastId, options as ToastOptions);\n if (toast) {\n const { props: oldOptions, content: oldContent } = toast;\n\n const nextOptions = {\n ...oldOptions,\n ...options,\n toastId: options.toastId || toastId,\n updateId: generateToastId()\n } as ToastProps & UpdateOptions;\n\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n const content = nextOptions.render || oldContent;\n delete nextOptions.render;\n\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n\n/**\n * Used for controlled progress bar.\n */\ntoast.done = (id: Id) => {\n toast.update(id, {\n progress: 1\n });\n};\n\n/**\n * @deprecated\n * API will change in the next major release\n *\n * Track changes. The callback get the number of toast displayed\n */\ntoast.onChange = (callback: OnChangeCallback) => {\n if (isFn(callback)) {\n eventManager.on(Event.Change, callback);\n }\n return () => {\n isFn(callback) && eventManager.off(Event.Change, callback);\n };\n};\n\n/**\n * @deprecated\n * will be removed in the next major release\n *\n * Configure the ToastContainer when lazy mounted\n * Prefer ToastContainer over this one\n */\ntoast.configure = (config: ToastContainerProps = {}) => {\n lazy = true;\n containerConfig = config;\n};\n\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\neventManager\n .on(Event.DidMount, (containerInstance: ContainerInstance) => {\n latestInstance = containerInstance.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n\n queue.forEach(item => {\n eventManager.emit(Event.Show, item.content, item.options);\n });\n\n queue = [];\n })\n .on(Event.WillUnmount, (containerInstance: ContainerInstance) => {\n containers.delete(containerInstance.containerId || containerInstance);\n\n if (containers.size === 0) {\n eventManager\n .off(Event.Show)\n .off(Event.Clear)\n .off(Event.ClearWaitingQueue);\n }\n\n if (canUseDom && containerDomNode) {\n document.body.removeChild(containerDomNode);\n }\n });\n\nexport { toast };\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"providers/5.7.2\";\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","export const version = \"abstract-signer/5.7.0\";\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bignumber/5.7.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","export const version = \"rlp/5.7.0\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"address/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","export const version = \"hash/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","export const version = \"strings/5.7.0\";\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","export const version = \"signing-key/5.7.0\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"transactions/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n const request: RequestInit = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n };\n\n if (options.skipFetchSetup !== true) {\n request.mode = \"cors\"; // no-cors, cors, *same-origin\n request.cache = \"no-cache\"; // *default, no-cache, reload, force-cache, only-if-cached\n request.credentials = \"same-origin\"; // include, *same-origin, omit\n request.redirect = \"follow\"; // manual, *follow, error\n request.referrer = \"client\"; // no-referrer, *client\n };\n\n if (options.fetchOptions != null) {\n const opts = options.fetchOptions;\n if (opts.mode) { request.mode = (opts.mode); }\n if (opts.cache) { request.cache = (opts.cache); }\n if (opts.credentials) { request.credentials = (opts.credentials); }\n if (opts.redirect) { request.redirect = (opts.redirect); }\n if (opts.referrer) { request.referrer = opts.referrer; }\n }\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array>(((response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","export const version = \"web/5.7.1\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-provider/5.7.0\";\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n","export const version = \"networks/5.7.1\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","export const version = \"sha2/5.7.0\";\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n","export const version = \"units/5.7.0\";\n","import React, { createContext } from \"react\";\nimport { cssTransition } from \"react-toastify\";\nimport { utils, providers } from \"ethers\";\n\nexport const STAKING_PAGE = \"/stake\";\nexport const MAIN_PAGE = \"/\";\nexport const CONNECT_TEXT = \"↖ Connect to Wallet\";\nexport const HIDE = \"Hide\";\nexport const SHOW = \"Show\";\nexport const STAKE = \"↖ Stake\";\nexport const COMING_SOON = \"COMING SOON\";\nexport const TWENTY_FIVE_PERCENT = \"25%\";\nexport const FIFTY_PERCENT = \"50%\";\nexport const SEVENTY_FIVE_PERCENT = \"75%\";\nexport const ONE_HUNDRED_PERCENT = \"100%\";\nexport const NetworkContextName = \"NETWORK\";\n\nexport const { ethereum } = window;\n\nexport const bounce = cssTransition({\n enter: \"animate__animated animate__bounceIn\",\n exit: \"animate__animated animate__bounceOut\",\n});\n\nexport const PoolsContext = createContext([]);\n\nexport const network = !process.env.REACT_APP_RPC_URL.includes(\"test\");\n\nexport const ENABLE_DEBUG_LOG = false;\n\nexport const provider = ethereum ? new providers.Web3Provider(ethereum) : null;\n\nexport const transactionGasLimit = 8000000;\n\nexport const transactionGasPrice = utils.parseUnits(\"20\", \"gwei\");\n\nexport const menuLinks = [\n {\n target: true,\n href: \"https://ambrosus.io/\",\n title: \"Main\",\n route: false,\n },\n {\n target: true,\n href: \"https://airdao.io/explorer/\",\n title: \"Explorer\",\n route: false,\n },\n {\n target: false,\n href: MAIN_PAGE,\n title: \"Staking\",\n route: true,\n },\n {\n target: true,\n href: \"https://amb.to/\",\n title: \"amb.to\",\n route: false,\n },\n];\n\nexport const tooltips = {\n earnings: (\n \n Estimated earnings for the next year.
\n This function is in early beta,
\n the data is for reference only\n
\n ),\n copyState: {\n isCopied: `Copied`,\n notCopied: `Copy to clipboard`,\n },\n totalStaked: `The amount of staked coins in all pools`,\n totalMaxStaked: `The maximum allowed number of bet coins in the pool`,\n deposit: `-`,\n unstake: `-`,\n};\n\nexport const abiPoolsWithLimit = [\n {\n constant: true,\n inputs: [],\n name: \"active\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"nodes\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"maxUserTotalStake\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"nodeType\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"nodeStake\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"maxTotalStake\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalReward\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalStake\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"stakers\",\n outputs: [\n {\n name: \"exists\",\n type: \"bool\",\n },\n {\n name: \"total\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"minStakeValue\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"id\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"service\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"fee\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"unstakeFees\",\n outputs: [\n {\n name: \"age\",\n type: \"uint64\",\n },\n {\n name: \"fee\",\n type: \"uint32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"token\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n name: \"poolName\",\n type: \"string\",\n },\n {\n name: \"poolNodeType\",\n type: \"uint8\",\n },\n {\n name: \"poolNodeStake\",\n type: \"uint256\",\n },\n {\n name: \"poolMinStakeValue\",\n type: \"uint256\",\n },\n {\n name: \"poolFee\",\n type: \"uint256\",\n },\n {\n name: \"poolService\",\n type: \"address\",\n },\n {\n name: \"head\",\n type: \"address\",\n },\n {\n name: \"poolMaxTotalStake\",\n type: \"uint256\",\n },\n {\n name: \"poolMaxUserTotalStake\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n payable: true,\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"previousOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipRenounced\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getVersion\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"activate\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"maxNodes\",\n type: \"uint256\",\n },\n ],\n name: \"deactivate\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"newService\",\n type: \"address\",\n },\n ],\n name: \"setService\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"newName\",\n type: \"string\",\n },\n ],\n name: \"setName\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"stake\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"tokens\",\n type: \"uint256\",\n },\n ],\n name: \"unstake\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"tokens\",\n type: \"uint256\",\n },\n ],\n name: \"unstakeWithFee\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"age\",\n type: \"uint64\",\n },\n {\n name: \"unstakeFee\",\n type: \"uint32\",\n },\n ],\n name: \"addUnstakeFee\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"age\",\n type: \"uint64\",\n },\n {\n name: \"unstakeFee\",\n type: \"uint32\",\n },\n ],\n name: \"changeUnstakeFee\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"age\",\n type: \"uint64\",\n },\n ],\n name: \"removeUnstakeFee\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"time\",\n type: \"uint64\",\n },\n ],\n name: \"getUnstakeFee\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getStake\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"viewStake\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getTokenPrice\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"addReward\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"requestId\",\n type: \"uint256\",\n },\n {\n name: \"node\",\n type: \"address\",\n },\n {\n name: \"nodeId\",\n type: \"uint256\",\n },\n ],\n name: \"addNode\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getNodesCount\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"from\",\n type: \"uint256\",\n },\n {\n name: \"to\",\n type: \"uint256\",\n },\n ],\n name: \"getNodes\",\n outputs: [\n {\n name: \"_nodes\",\n type: \"address[]\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport default {\n ethereum,\n bounce,\n network,\n transactionGasLimit,\n transactionGasPrice,\n menuLinks,\n tooltips,\n STAKING_PAGE,\n MAIN_PAGE,\n CONNECT_TEXT,\n HIDE,\n SHOW,\n PoolsContext,\n STAKE,\n COMING_SOON,\n TWENTY_FIVE_PERCENT,\n FIFTY_PERCENT,\n SEVENTY_FIVE_PERCENT,\n ONE_HUNDRED_PERCENT,\n provider,\n abiPoolsWithLimit,\n};\n","const NotFound = () => (\n
\n);\n\nexport default NotFound;\n","// type checks for all known types\n//\n// note that:\n//\n// - check by duck-typing on a property like `isUnit`, instead of checking instanceof.\n// instanceof cannot be used because that would not allow to pass data from\n// one instance of math.js to another since each has it's own instance of Unit.\n// - check the `isUnit` property via the constructor, so there will be no\n// matches for \"fake\" instances like plain objects with a property `isUnit`.\n// That is important for security reasons.\n// - It must not be possible to override the type checks used internally,\n// for security reasons, so these functions are not exposed in the expression\n// parser.\nexport function isNumber(x) {\n return typeof x === 'number';\n}\nexport function isBigNumber(x) {\n if (!x || typeof x !== 'object' || typeof x.constructor !== 'function') {\n return false;\n }\n\n if (x.isBigNumber === true && typeof x.constructor.prototype === 'object' && x.constructor.prototype.isBigNumber === true) {\n return true;\n }\n\n if (typeof x.constructor.isDecimal === 'function' && x.constructor.isDecimal(x) === true) {\n return true;\n }\n\n return false;\n}\nexport function isComplex(x) {\n return x && typeof x === 'object' && Object.getPrototypeOf(x).isComplex === true || false;\n}\nexport function isFraction(x) {\n return x && typeof x === 'object' && Object.getPrototypeOf(x).isFraction === true || false;\n}\nexport function isUnit(x) {\n return x && x.constructor.prototype.isUnit === true || false;\n}\nexport function isString(x) {\n return typeof x === 'string';\n}\nexport var isArray = Array.isArray;\nexport function isMatrix(x) {\n return x && x.constructor.prototype.isMatrix === true || false;\n}\n/**\n * Test whether a value is a collection: an Array or Matrix\n * @param {*} x\n * @returns {boolean} isCollection\n */\n\nexport function isCollection(x) {\n return Array.isArray(x) || isMatrix(x);\n}\nexport function isDenseMatrix(x) {\n return x && x.isDenseMatrix && x.constructor.prototype.isMatrix === true || false;\n}\nexport function isSparseMatrix(x) {\n return x && x.isSparseMatrix && x.constructor.prototype.isMatrix === true || false;\n}\nexport function isRange(x) {\n return x && x.constructor.prototype.isRange === true || false;\n}\nexport function isIndex(x) {\n return x && x.constructor.prototype.isIndex === true || false;\n}\nexport function isBoolean(x) {\n return typeof x === 'boolean';\n}\nexport function isResultSet(x) {\n return x && x.constructor.prototype.isResultSet === true || false;\n}\nexport function isHelp(x) {\n return x && x.constructor.prototype.isHelp === true || false;\n}\nexport function isFunction(x) {\n return typeof x === 'function';\n}\nexport function isDate(x) {\n return x instanceof Date;\n}\nexport function isRegExp(x) {\n return x instanceof RegExp;\n}\nexport function isObject(x) {\n return !!(x && typeof x === 'object' && x.constructor === Object && !isComplex(x) && !isFraction(x));\n}\nexport function isNull(x) {\n return x === null;\n}\nexport function isUndefined(x) {\n return x === undefined;\n}\nexport function isAccessorNode(x) {\n return x && x.isAccessorNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isArrayNode(x) {\n return x && x.isArrayNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isAssignmentNode(x) {\n return x && x.isAssignmentNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isBlockNode(x) {\n return x && x.isBlockNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isConditionalNode(x) {\n return x && x.isConditionalNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isConstantNode(x) {\n return x && x.isConstantNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isFunctionAssignmentNode(x) {\n return x && x.isFunctionAssignmentNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isFunctionNode(x) {\n return x && x.isFunctionNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isIndexNode(x) {\n return x && x.isIndexNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isNode(x) {\n return x && x.isNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isObjectNode(x) {\n return x && x.isObjectNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isOperatorNode(x) {\n return x && x.isOperatorNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isParenthesisNode(x) {\n return x && x.isParenthesisNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isRangeNode(x) {\n return x && x.isRangeNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isSymbolNode(x) {\n return x && x.isSymbolNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isChain(x) {\n return x && x.constructor.prototype.isChain === true || false;\n}\nexport function typeOf(x) {\n var t = typeof x;\n\n if (t === 'object') {\n // JavaScript types\n if (x === null) return 'null';\n if (Array.isArray(x)) return 'Array';\n if (x instanceof Date) return 'Date';\n if (x instanceof RegExp) return 'RegExp'; // math.js types\n\n if (isBigNumber(x)) return 'BigNumber';\n if (isComplex(x)) return 'Complex';\n if (isFraction(x)) return 'Fraction';\n if (isMatrix(x)) return 'Matrix';\n if (isUnit(x)) return 'Unit';\n if (isIndex(x)) return 'Index';\n if (isRange(x)) return 'Range';\n if (isResultSet(x)) return 'ResultSet';\n if (isNode(x)) return x.type;\n if (isChain(x)) return 'Chain';\n if (isHelp(x)) return 'Help';\n return 'Object';\n }\n\n if (t === 'function') return 'Function';\n return t; // can be 'string', 'number', 'boolean', ...\n}","import { isBigNumber } from './is.js';\n/**\n * Clone an object\n *\n * clone(x)\n *\n * Can clone any primitive type, array, and object.\n * If x has a function clone, this function will be invoked to clone the object.\n *\n * @param {*} x\n * @return {*} clone\n */\n\nexport function clone(x) {\n var type = typeof x; // immutable primitive types\n\n if (type === 'number' || type === 'string' || type === 'boolean' || x === null || x === undefined) {\n return x;\n } // use clone function of the object when available\n\n\n if (typeof x.clone === 'function') {\n return x.clone();\n } // array\n\n\n if (Array.isArray(x)) {\n return x.map(function (value) {\n return clone(value);\n });\n }\n\n if (x instanceof Date) return new Date(x.valueOf());\n if (isBigNumber(x)) return x; // bignumbers are immutable\n\n if (x instanceof RegExp) throw new TypeError('Cannot clone ' + x); // TODO: clone a RegExp\n // object\n\n return mapObject(x, clone);\n}\n/**\n * Apply map to all properties of an object\n * @param {Object} object\n * @param {function} callback\n * @return {Object} Returns a copy of the object with mapped properties\n */\n\nexport function mapObject(object, callback) {\n var clone = {};\n\n for (var key in object) {\n if (hasOwnProperty(object, key)) {\n clone[key] = callback(object[key]);\n }\n }\n\n return clone;\n}\n/**\n * Extend object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\n\nexport function extend(a, b) {\n for (var prop in b) {\n if (hasOwnProperty(b, prop)) {\n a[prop] = b[prop];\n }\n }\n\n return a;\n}\n/**\n * Deep extend an object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @returns {Object}\n */\n\nexport function deepExtend(a, b) {\n // TODO: add support for Arrays to deepExtend\n if (Array.isArray(b)) {\n throw new TypeError('Arrays are not supported by deepExtend');\n }\n\n for (var prop in b) {\n // We check against prop not being in Object.prototype or Function.prototype\n // to prevent polluting for example Object.__proto__.\n if (hasOwnProperty(b, prop) && !(prop in Object.prototype) && !(prop in Function.prototype)) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === undefined) {\n a[prop] = {};\n }\n\n if (a[prop] && a[prop].constructor === Object) {\n deepExtend(a[prop], b[prop]);\n } else {\n a[prop] = b[prop];\n }\n } else if (Array.isArray(b[prop])) {\n throw new TypeError('Arrays are not supported by deepExtend');\n } else {\n a[prop] = b[prop];\n }\n }\n }\n\n return a;\n}\n/**\n * Deep test equality of all fields in two pairs of arrays or objects.\n * Compares values and functions strictly (ie. 2 is not the same as '2').\n * @param {Array | Object} a\n * @param {Array | Object} b\n * @returns {boolean}\n */\n\nexport function deepStrictEqual(a, b) {\n var prop, i, len;\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (i = 0, len = a.length; i < len; i++) {\n if (!deepStrictEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n } else if (typeof a === 'function') {\n return a === b;\n } else if (a instanceof Object) {\n if (Array.isArray(b) || !(b instanceof Object)) {\n return false;\n }\n\n for (prop in a) {\n // noinspection JSUnfilteredForInLoop\n if (!(prop in b) || !deepStrictEqual(a[prop], b[prop])) {\n return false;\n }\n }\n\n for (prop in b) {\n // noinspection JSUnfilteredForInLoop\n if (!(prop in a)) {\n return false;\n }\n }\n\n return true;\n } else {\n return a === b;\n }\n}\n/**\n * Recursively flatten a nested object.\n * @param {Object} nestedObject\n * @return {Object} Returns the flattened object\n */\n\nexport function deepFlatten(nestedObject) {\n var flattenedObject = {};\n\n _deepFlatten(nestedObject, flattenedObject);\n\n return flattenedObject;\n} // helper function used by deepFlatten\n\nfunction _deepFlatten(nestedObject, flattenedObject) {\n for (var prop in nestedObject) {\n if (hasOwnProperty(nestedObject, prop)) {\n var value = nestedObject[prop];\n\n if (typeof value === 'object' && value !== null) {\n _deepFlatten(value, flattenedObject);\n } else {\n flattenedObject[prop] = value;\n }\n }\n }\n}\n/**\n * Test whether the current JavaScript engine supports Object.defineProperty\n * @returns {boolean} returns true if supported\n */\n\n\nexport function canDefineProperty() {\n // test needed for broken IE8 implementation\n try {\n if (Object.defineProperty) {\n Object.defineProperty({}, 'x', {\n get: function get() {}\n });\n return true;\n }\n } catch (e) {}\n\n return false;\n}\n/**\n * Attach a lazy loading property to a constant.\n * The given function `fn` is called once when the property is first requested.\n *\n * @param {Object} object Object where to add the property\n * @param {string} prop Property name\n * @param {Function} valueResolver Function returning the property value. Called\n * without arguments.\n */\n\nexport function lazy(object, prop, valueResolver) {\n var _uninitialized = true;\n\n var _value;\n\n Object.defineProperty(object, prop, {\n get: function get() {\n if (_uninitialized) {\n _value = valueResolver();\n _uninitialized = false;\n }\n\n return _value;\n },\n set: function set(value) {\n _value = value;\n _uninitialized = false;\n },\n configurable: true,\n enumerable: true\n });\n}\n/**\n * Traverse a path into an object.\n * When a namespace is missing, it will be created\n * @param {Object} object\n * @param {string | string[]} path A dot separated string like 'name.space'\n * @return {Object} Returns the object at the end of the path\n */\n\nexport function traverse(object, path) {\n if (path && typeof path === 'string') {\n return traverse(object, path.split('.'));\n }\n\n var obj = object;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n\n if (!(key in obj)) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n }\n\n return obj;\n}\n/**\n * A safe hasOwnProperty\n * @param {Object} object\n * @param {string} property\n */\n\nexport function hasOwnProperty(object, property) {\n return object && Object.hasOwnProperty.call(object, property);\n}\n/**\n * Test whether an object is a factory. a factory has fields:\n *\n * - factory: function (type: Object, config: Object, load: function, typed: function [, math: Object]) (required)\n * - name: string (optional)\n * - path: string A dot separated path (optional)\n * - math: boolean If true (false by default), the math namespace is passed\n * as fifth argument of the factory function\n *\n * @param {*} object\n * @returns {boolean}\n */\n\nexport function isLegacyFactory(object) {\n return object && typeof object.factory === 'function';\n}\n/**\n * Get a nested property from an object\n * @param {Object} object\n * @param {string | string[]} path\n * @returns {Object}\n */\n\nexport function get(object, path) {\n if (typeof path === 'string') {\n if (isPath(path)) {\n return get(object, path.split('.'));\n } else {\n return object[path];\n }\n }\n\n var child = object;\n\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n child = child ? child[key] : undefined;\n }\n\n return child;\n}\n/**\n * Set a nested property in an object\n * Mutates the object itself\n * If the path doesn't exist, it will be created\n * @param {Object} object\n * @param {string | string[]} path\n * @param {*} value\n * @returns {Object}\n */\n\nexport function set(object, path, value) {\n if (typeof path === 'string') {\n if (isPath(path)) {\n return set(object, path.split('.'), value);\n } else {\n object[path] = value;\n return object;\n }\n }\n\n var child = object;\n\n for (var i = 0; i < path.length - 1; i++) {\n var key = path[i];\n\n if (child[key] === undefined) {\n child[key] = {};\n }\n\n child = child[key];\n }\n\n if (path.length > 0) {\n var lastKey = path[path.length - 1];\n child[lastKey] = value;\n }\n\n return object;\n}\n/**\n * Create an object composed of the picked object properties\n * @param {Object} object\n * @param {string[]} properties\n * @param {function} [transform] Optional value to transform a value when picking it\n * @return {Object}\n */\n\nexport function pick(object, properties, transform) {\n var copy = {};\n\n for (var i = 0; i < properties.length; i++) {\n var key = properties[i];\n var value = get(object, key);\n\n if (value !== undefined) {\n set(copy, key, transform ? transform(value, key) : value);\n }\n }\n\n return copy;\n}\n/**\n * Shallow version of pick, creating an object composed of the picked object properties\n * but not for nested properties\n * @param {Object} object\n * @param {string[]} properties\n * @return {Object}\n */\n\nexport function pickShallow(object, properties) {\n var copy = {};\n\n for (var i = 0; i < properties.length; i++) {\n var key = properties[i];\n var value = object[key];\n\n if (value !== undefined) {\n copy[key] = value;\n }\n }\n\n return copy;\n}\nexport function values(object) {\n return Object.keys(object).map(key => object[key]);\n} // helper function to test whether a string contains a path like 'user.name'\n\nfunction isPath(str) {\n return str.indexOf('.') !== -1;\n}","import { contains } from './array.js';\nimport { pickShallow } from './object.js';\n/**\n * Create a factory function, which can be used to inject dependencies.\n *\n * The created functions are memoized, a consecutive call of the factory\n * with the exact same inputs will return the same function instance.\n * The memoized cache is exposed on `factory.cache` and can be cleared\n * if needed.\n *\n * Example:\n *\n * const name = 'log'\n * const dependencies = ['config', 'typed', 'divideScalar', 'Complex']\n *\n * export const createLog = factory(name, dependencies, ({ typed, config, divideScalar, Complex }) => {\n * // ... create the function log here and return it\n * }\n *\n * @param {string} name Name of the function to be created\n * @param {string[]} dependencies The names of all required dependencies\n * @param {function} create Callback function called with an object with all dependencies\n * @param {Object} [meta] Optional object with meta information that will be attached\n * to the created factory function as property `meta`.\n * @returns {function}\n */\n\nexport function factory(name, dependencies, create, meta) {\n function assertAndCreate(scope) {\n // we only pass the requested dependencies to the factory function\n // to prevent functions to rely on dependencies that are not explicitly\n // requested.\n var deps = pickShallow(scope, dependencies.map(stripOptionalNotation));\n assertDependencies(name, dependencies, scope);\n return create(deps);\n }\n\n assertAndCreate.isFactory = true;\n assertAndCreate.fn = name;\n assertAndCreate.dependencies = dependencies.slice().sort();\n\n if (meta) {\n assertAndCreate.meta = meta;\n }\n\n return assertAndCreate;\n}\n/**\n * Sort all factories such that when loading in order, the dependencies are resolved.\n *\n * @param {Array} factories\n * @returns {Array} Returns a new array with the sorted factories.\n */\n\nexport function sortFactories(factories) {\n var factoriesByName = {};\n factories.forEach(factory => {\n factoriesByName[factory.fn] = factory;\n });\n\n function containsDependency(factory, dependency) {\n // TODO: detect circular references\n if (isFactory(factory)) {\n if (contains(factory.dependencies, dependency.fn || dependency.name)) {\n return true;\n }\n\n if (factory.dependencies.some(d => containsDependency(factoriesByName[d], dependency))) {\n return true;\n }\n }\n\n return false;\n }\n\n var sorted = [];\n\n function addFactory(factory) {\n var index = 0;\n\n while (index < sorted.length && !containsDependency(sorted[index], factory)) {\n index++;\n }\n\n sorted.splice(index, 0, factory);\n } // sort regular factory functions\n\n\n factories.filter(isFactory).forEach(addFactory); // sort legacy factory functions AFTER the regular factory functions\n\n factories.filter(factory => !isFactory(factory)).forEach(addFactory);\n return sorted;\n} // TODO: comment or cleanup if unused in the end\n\nexport function create(factories) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n sortFactories(factories).forEach(factory => factory(scope));\n return scope;\n}\n/**\n * Test whether an object is a factory. This is the case when it has\n * properties name, dependencies, and a function create.\n * @param {*} obj\n * @returns {boolean}\n */\n\nexport function isFactory(obj) {\n return typeof obj === 'function' && typeof obj.fn === 'string' && Array.isArray(obj.dependencies);\n}\n/**\n * Assert that all dependencies of a list with dependencies are available in the provided scope.\n *\n * Will throw an exception when there are dependencies missing.\n *\n * @param {string} name Name for the function to be created. Used to generate a useful error message\n * @param {string[]} dependencies\n * @param {Object} scope\n */\n\nexport function assertDependencies(name, dependencies, scope) {\n var allDefined = dependencies.filter(dependency => !isOptionalDependency(dependency)) // filter optionals\n .every(dependency => scope[dependency] !== undefined);\n\n if (!allDefined) {\n var missingDependencies = dependencies.filter(dependency => scope[dependency] === undefined); // TODO: create a custom error class for this, a MathjsError or something like that\n\n throw new Error(\"Cannot create function \\\"\".concat(name, \"\\\", \") + \"some dependencies are missing: \".concat(missingDependencies.map(d => \"\\\"\".concat(d, \"\\\"\")).join(', '), \".\"));\n }\n}\nexport function isOptionalDependency(dependency) {\n return dependency && dependency[0] === '?';\n}\nexport function stripOptionalNotation(dependency) {\n return dependency && dependency[0] === '?' ? dependency.slice(1) : dependency;\n}","import { isNumber } from './is.js';\n/**\n * @typedef {{sign: '+' | '-' | '', coefficients: number[], exponent: number}} SplitValue\n */\n\n/**\n * Check if a number is integer\n * @param {number | boolean} value\n * @return {boolean} isInteger\n */\n\nexport function isInteger(value) {\n if (typeof value === 'boolean') {\n return true;\n }\n\n return isFinite(value) ? value === Math.round(value) : false;\n}\n/**\n * Calculate the sign of a number\n * @param {number} x\n * @returns {number}\n */\n\nexport var sign = /* #__PURE__ */Math.sign || function (x) {\n if (x > 0) {\n return 1;\n } else if (x < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n/**\n * Calculate the base-2 logarithm of a number\n * @param {number} x\n * @returns {number}\n */\n\nexport var log2 = /* #__PURE__ */Math.log2 || function log2(x) {\n return Math.log(x) / Math.LN2;\n};\n/**\n * Calculate the base-10 logarithm of a number\n * @param {number} x\n * @returns {number}\n */\n\nexport var log10 = /* #__PURE__ */Math.log10 || function log10(x) {\n return Math.log(x) / Math.LN10;\n};\n/**\n * Calculate the natural logarithm of a number + 1\n * @param {number} x\n * @returns {number}\n */\n\nexport var log1p = /* #__PURE__ */Math.log1p || function (x) {\n return Math.log(x + 1);\n};\n/**\n * Calculate cubic root for a number\n *\n * Code from es6-shim.js:\n * https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L1564-L1577\n *\n * @param {number} x\n * @returns {number} Returns the cubic root of x\n */\n\nexport var cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {\n if (x === 0) {\n return x;\n }\n\n var negate = x < 0;\n var result;\n\n if (negate) {\n x = -x;\n }\n\n if (isFinite(x)) {\n result = Math.exp(Math.log(x) / 3); // from https://en.wikipedia.org/wiki/Cube_root#Numerical_methods\n\n result = (x / (result * result) + 2 * result) / 3;\n } else {\n result = x;\n }\n\n return negate ? -result : result;\n};\n/**\n * Calculates exponentiation minus 1\n * @param {number} x\n * @return {number} res\n */\n\nexport var expm1 = /* #__PURE__ */Math.expm1 || function expm1(x) {\n return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;\n};\n/**\n * Formats a number in a given base\n * @param {number} n\n * @param {number} base\n * @param {number} size\n * @returns {string}\n */\n\nfunction formatNumberToBase(n, base, size) {\n var prefixes = {\n 2: '0b',\n 8: '0o',\n 16: '0x'\n };\n var prefix = prefixes[base];\n var suffix = '';\n\n if (size) {\n if (size < 1) {\n throw new Error('size must be in greater than 0');\n }\n\n if (!isInteger(size)) {\n throw new Error('size must be an integer');\n }\n\n if (n > 2 ** (size - 1) - 1 || n < -(2 ** (size - 1))) {\n throw new Error(\"Value must be in range [-2^\".concat(size - 1, \", 2^\").concat(size - 1, \"-1]\"));\n }\n\n if (!isInteger(n)) {\n throw new Error('Value must be an integer');\n }\n\n if (n < 0) {\n n = n + 2 ** size;\n }\n\n suffix = \"i\".concat(size);\n }\n\n var sign = '';\n\n if (n < 0) {\n n = -n;\n sign = '-';\n }\n\n return \"\".concat(sign).concat(prefix).concat(n.toString(base)).concat(suffix);\n}\n/**\n * Convert a number to a formatted string representation.\n *\n * Syntax:\n *\n * format(value)\n * format(value, options)\n * format(value, precision)\n * format(value, fn)\n *\n * Where:\n *\n * {number} value The value to be formatted\n * {Object} options An object with formatting options. Available options:\n * {string} notation\n * Number notation. Choose from:\n * 'fixed' Always use regular number notation.\n * For example '123.40' and '14000000'\n * 'exponential' Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * 'engineering' Always use engineering notation.\n * For example '123.4e+0' and '14.0e+6'\n * 'auto' (default) Regular number notation for numbers\n * having an absolute value between\n * `lowerExp` and `upperExp` bounds, and\n * uses exponential notation elsewhere.\n * Lower bound is included, upper bound\n * is excluded.\n * For example '123.4' and '1.4e7'.\n * 'bin', 'oct, or\n * 'hex' Format the number using binary, octal,\n * or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * {number} wordSize The word size in bits to use for formatting\n * in binary, octal, or hexadecimal notation.\n * To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option\n * is defined the value is formatted as a signed\n * twos complement integer of the given word size\n * and the size suffix is appended to the output.\n * For example\n * format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * {number} precision A number between 0 and 16 to round\n * the digits of the number.\n * In case of notations 'exponential',\n * 'engineering', and 'auto',\n * `precision` defines the total\n * number of significant digits returned.\n * In case of notation 'fixed',\n * `precision` defines the number of\n * significant digits after the decimal\n * point.\n * `precision` is undefined by default,\n * not rounding any digits.\n * {number} lowerExp Exponent determining the lower boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `-3`.\n * {number} upperExp Exponent determining the upper boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `5`.\n * {Function} fn A custom formatting function. Can be used to override the\n * built-in notations. Function `fn` is called with `value` as\n * parameter and must return a string. Is useful for example to\n * format all values inside a matrix in a particular way.\n *\n * Examples:\n *\n * format(6.4) // '6.4'\n * format(1240000) // '1.24e6'\n * format(1/3) // '0.3333333333333333'\n * format(1/3, 3) // '0.333'\n * format(21385, 2) // '21000'\n * format(12.071, {notation: 'fixed'}) // '12'\n * format(2.3, {notation: 'fixed', precision: 2}) // '2.30'\n * format(52.8, {notation: 'exponential'}) // '5.28e+1'\n * format(12345678, {notation: 'engineering'}) // '12.345678e+6'\n *\n * @param {number} value\n * @param {Object | Function | number} [options]\n * @return {string} str The formatted value\n */\n\n\nexport function format(value, options) {\n if (typeof options === 'function') {\n // handle format(value, fn)\n return options(value);\n } // handle special cases\n\n\n if (value === Infinity) {\n return 'Infinity';\n } else if (value === -Infinity) {\n return '-Infinity';\n } else if (isNaN(value)) {\n return 'NaN';\n } // default values for options\n\n\n var notation = 'auto';\n var precision;\n var wordSize;\n\n if (options) {\n // determine notation from options\n if (options.notation) {\n notation = options.notation;\n } // determine precision from options\n\n\n if (isNumber(options)) {\n precision = options;\n } else if (isNumber(options.precision)) {\n precision = options.precision;\n }\n\n if (options.wordSize) {\n wordSize = options.wordSize;\n\n if (typeof wordSize !== 'number') {\n throw new Error('Option \"wordSize\" must be a number');\n }\n }\n } // handle the various notations\n\n\n switch (notation) {\n case 'fixed':\n return toFixed(value, precision);\n\n case 'exponential':\n return toExponential(value, precision);\n\n case 'engineering':\n return toEngineering(value, precision);\n\n case 'bin':\n return formatNumberToBase(value, 2, wordSize);\n\n case 'oct':\n return formatNumberToBase(value, 8, wordSize);\n\n case 'hex':\n return formatNumberToBase(value, 16, wordSize);\n\n case 'auto':\n // remove trailing zeros after the decimal point\n return toPrecision(value, precision, options && options).replace(/((\\.\\d*?)(0+))($|e)/, function () {\n var digits = arguments[2];\n var e = arguments[4];\n return digits !== '.' ? digits + e : e;\n });\n\n default:\n throw new Error('Unknown notation \"' + notation + '\". ' + 'Choose \"auto\", \"exponential\", \"fixed\", \"bin\", \"oct\", or \"hex.');\n }\n}\n/**\n * Split a number into sign, coefficients, and exponent\n * @param {number | string} value\n * @return {SplitValue}\n * Returns an object containing sign, coefficients, and exponent\n */\n\nexport function splitNumber(value) {\n // parse the input value\n var match = String(value).toLowerCase().match(/^0*?(-?)(\\d+\\.?\\d*)(e([+-]?\\d+))?$/);\n\n if (!match) {\n throw new SyntaxError('Invalid number ' + value);\n }\n\n var sign = match[1];\n var digits = match[2];\n var exponent = parseFloat(match[4] || '0');\n var dot = digits.indexOf('.');\n exponent += dot !== -1 ? dot - 1 : digits.length - 1;\n var coefficients = digits.replace('.', '') // remove the dot (must be removed before removing leading zeros)\n .replace(/^0*/, function (zeros) {\n // remove leading zeros, add their count to the exponent\n exponent -= zeros.length;\n return '';\n }).replace(/0*$/, '') // remove trailing zeros\n .split('').map(function (d) {\n return parseInt(d);\n });\n\n if (coefficients.length === 0) {\n coefficients.push(0);\n exponent++;\n }\n\n return {\n sign: sign,\n coefficients: coefficients,\n exponent: exponent\n };\n}\n/**\n * Format a number in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'\n * @param {number | string} value\n * @param {number} [precision] Optional number of significant figures to return.\n */\n\nexport function toEngineering(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n\n var split = splitNumber(value);\n var rounded = roundDigits(split, precision);\n var e = rounded.exponent;\n var c = rounded.coefficients; // find nearest lower multiple of 3 for exponent\n\n var newExp = e % 3 === 0 ? e : e < 0 ? e - 3 - e % 3 : e - e % 3;\n\n if (isNumber(precision)) {\n // add zeroes to give correct sig figs\n while (precision > c.length || e - newExp + 1 > c.length) {\n c.push(0);\n }\n } else {\n // concatenate coefficients with necessary zeros\n // add zeros if necessary (for example: 1e+8 -> 100e+6)\n var missingZeros = Math.abs(e - newExp) - (c.length - 1);\n\n for (var i = 0; i < missingZeros; i++) {\n c.push(0);\n }\n } // find difference in exponents\n\n\n var expDiff = Math.abs(e - newExp);\n var decimalIdx = 1; // push decimal index over by expDiff times\n\n while (expDiff > 0) {\n decimalIdx++;\n expDiff--;\n } // if all coefficient values are zero after the decimal point and precision is unset, don't add a decimal value.\n // otherwise concat with the rest of the coefficients\n\n\n var decimals = c.slice(decimalIdx).join('');\n var decimalVal = isNumber(precision) && decimals.length || decimals.match(/[1-9]/) ? '.' + decimals : '';\n var str = c.slice(0, decimalIdx).join('') + decimalVal + 'e' + (e >= 0 ? '+' : '') + newExp.toString();\n return rounded.sign + str;\n}\n/**\n * Format a number with fixed notation.\n * @param {number | string} value\n * @param {number} [precision=undefined] Optional number of decimals after the\n * decimal point. null by default.\n */\n\nexport function toFixed(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n\n var splitValue = splitNumber(value);\n var rounded = typeof precision === 'number' ? roundDigits(splitValue, splitValue.exponent + 1 + precision) : splitValue;\n var c = rounded.coefficients;\n var p = rounded.exponent + 1; // exponent may have changed\n // append zeros if needed\n\n var pp = p + (precision || 0);\n\n if (c.length < pp) {\n c = c.concat(zeros(pp - c.length));\n } // prepend zeros if needed\n\n\n if (p < 0) {\n c = zeros(-p + 1).concat(c);\n p = 1;\n } // insert a dot if needed\n\n\n if (p < c.length) {\n c.splice(p, 0, p === 0 ? '0.' : '.');\n }\n\n return rounded.sign + c.join('');\n}\n/**\n * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3'\n * @param {number | string} value\n * @param {number} [precision] Number of digits in formatted output.\n * If not provided, the maximum available digits\n * is used.\n */\n\nexport function toExponential(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n } // round if needed, else create a clone\n\n\n var split = splitNumber(value);\n var rounded = precision ? roundDigits(split, precision) : split;\n var c = rounded.coefficients;\n var e = rounded.exponent; // append zeros if needed\n\n if (c.length < precision) {\n c = c.concat(zeros(precision - c.length));\n } // format as `C.CCCe+EEE` or `C.CCCe-EEE`\n\n\n var first = c.shift();\n return rounded.sign + first + (c.length > 0 ? '.' + c.join('') : '') + 'e' + (e >= 0 ? '+' : '') + e;\n}\n/**\n * Format a number with a certain precision\n * @param {number | string} value\n * @param {number} [precision=undefined] Optional number of digits.\n * @param {{lowerExp: number | undefined, upperExp: number | undefined}} [options]\n * By default:\n * lowerExp = -3 (incl)\n * upper = +5 (excl)\n * @return {string}\n */\n\nexport function toPrecision(value, precision, options) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n } // determine lower and upper bound for exponential notation.\n\n\n var lowerExp = options && options.lowerExp !== undefined ? options.lowerExp : -3;\n var upperExp = options && options.upperExp !== undefined ? options.upperExp : 5;\n var split = splitNumber(value);\n var rounded = precision ? roundDigits(split, precision) : split;\n\n if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {\n // exponential notation\n return toExponential(value, precision);\n } else {\n var c = rounded.coefficients;\n var e = rounded.exponent; // append trailing zeros\n\n if (c.length < precision) {\n c = c.concat(zeros(precision - c.length));\n } // append trailing zeros\n // TODO: simplify the next statement\n\n\n c = c.concat(zeros(e - c.length + 1 + (c.length < precision ? precision - c.length : 0))); // prepend zeros\n\n c = zeros(-e).concat(c);\n var dot = e > 0 ? e : 0;\n\n if (dot < c.length - 1) {\n c.splice(dot + 1, 0, '.');\n }\n\n return rounded.sign + c.join('');\n }\n}\n/**\n * Round the number of digits of a number *\n * @param {SplitValue} split A value split with .splitNumber(value)\n * @param {number} precision A positive integer\n * @return {SplitValue}\n * Returns an object containing sign, coefficients, and exponent\n * with rounded digits\n */\n\nexport function roundDigits(split, precision) {\n // create a clone\n var rounded = {\n sign: split.sign,\n coefficients: split.coefficients,\n exponent: split.exponent\n };\n var c = rounded.coefficients; // prepend zeros if needed\n\n while (precision <= 0) {\n c.unshift(0);\n rounded.exponent++;\n precision++;\n }\n\n if (c.length > precision) {\n var removed = c.splice(precision, c.length - precision);\n\n if (removed[0] >= 5) {\n var i = precision - 1;\n c[i]++;\n\n while (c[i] === 10) {\n c.pop();\n\n if (i === 0) {\n c.unshift(0);\n rounded.exponent++;\n i++;\n }\n\n i--;\n c[i]++;\n }\n }\n }\n\n return rounded;\n}\n/**\n * Create an array filled with zeros.\n * @param {number} length\n * @return {Array}\n */\n\nfunction zeros(length) {\n var arr = [];\n\n for (var i = 0; i < length; i++) {\n arr.push(0);\n }\n\n return arr;\n}\n/**\n * Count the number of significant digits of a number.\n *\n * For example:\n * 2.34 returns 3\n * 0.0034 returns 2\n * 120.5e+30 returns 4\n *\n * @param {number} value\n * @return {number} digits Number of significant digits\n */\n\n\nexport function digits(value) {\n return value.toExponential().replace(/e.*$/, '') // remove exponential notation\n .replace(/^0\\.?0*|\\./, '') // remove decimal point and leading zeros\n .length;\n}\n/**\n * Minimum number added to one that makes the result different than one\n */\n\nexport var DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;\n/**\n * Compares two floating point numbers.\n * @param {number} x First value to compare\n * @param {number} y Second value to compare\n * @param {number} [epsilon] The maximum relative difference between x and y\n * If epsilon is undefined or null, the function will\n * test whether x and y are exactly equal.\n * @return {boolean} whether the two numbers are nearly equal\n*/\n\nexport function nearlyEqual(x, y, epsilon) {\n // if epsilon is null or undefined, test whether x and y are exactly equal\n if (epsilon === null || epsilon === undefined) {\n return x === y;\n }\n\n if (x === y) {\n return true;\n } // NaN\n\n\n if (isNaN(x) || isNaN(y)) {\n return false;\n } // at this point x and y should be finite\n\n\n if (isFinite(x) && isFinite(y)) {\n // check numbers are very close, needed when comparing numbers near zero\n var diff = Math.abs(x - y);\n\n if (diff < DBL_EPSILON) {\n return true;\n } else {\n // use relative error\n return diff <= Math.max(Math.abs(x), Math.abs(y)) * epsilon;\n }\n } // Infinite and Number or negative Infinite and positive Infinite cases\n\n\n return false;\n}\n/**\n * Calculate the hyperbolic arccos of a number\n * @param {number} x\n * @return {number}\n */\n\nexport var acosh = Math.acosh || function (x) {\n return Math.log(Math.sqrt(x * x - 1) + x);\n};\nexport var asinh = Math.asinh || function (x) {\n return Math.log(Math.sqrt(x * x + 1) + x);\n};\n/**\n * Calculate the hyperbolic arctangent of a number\n * @param {number} x\n * @return {number}\n */\n\nexport var atanh = Math.atanh || function (x) {\n return Math.log((1 + x) / (1 - x)) / 2;\n};\n/**\n * Calculate the hyperbolic cosine of a number\n * @param {number} x\n * @returns {number}\n */\n\nexport var cosh = Math.cosh || function (x) {\n return (Math.exp(x) + Math.exp(-x)) / 2;\n};\n/**\n * Calculate the hyperbolic sine of a number\n * @param {number} x\n * @returns {number}\n */\n\nexport var sinh = Math.sinh || function (x) {\n return (Math.exp(x) - Math.exp(-x)) / 2;\n};\n/**\n * Calculate the hyperbolic tangent of a number\n * @param {number} x\n * @returns {number}\n */\n\nexport var tanh = Math.tanh || function (x) {\n var e = Math.exp(2 * x);\n return (e - 1) / (e + 1);\n};","import { isInteger } from '../number.js';\n/**\n * Formats a BigNumber in a given base\n * @param {BigNumber} n\n * @param {number} base\n * @param {number} size\n * @returns {string}\n */\n\nfunction formatBigNumberToBase(n, base, size) {\n var BigNumberCtor = n.constructor;\n var big2 = new BigNumberCtor(2);\n var suffix = '';\n\n if (size) {\n if (size < 1) {\n throw new Error('size must be in greater than 0');\n }\n\n if (!isInteger(size)) {\n throw new Error('size must be an integer');\n }\n\n if (n.greaterThan(big2.pow(size - 1).sub(1)) || n.lessThan(big2.pow(size - 1).mul(-1))) {\n throw new Error(\"Value must be in range [-2^\".concat(size - 1, \", 2^\").concat(size - 1, \"-1]\"));\n }\n\n if (!n.isInteger()) {\n throw new Error('Value must be an integer');\n }\n\n if (n.lessThan(0)) {\n n = n.add(big2.pow(size));\n }\n\n suffix = \"i\".concat(size);\n }\n\n switch (base) {\n case 2:\n return \"\".concat(n.toBinary()).concat(suffix);\n\n case 8:\n return \"\".concat(n.toOctal()).concat(suffix);\n\n case 16:\n return \"\".concat(n.toHexadecimal()).concat(suffix);\n\n default:\n throw new Error(\"Base \".concat(base, \" not supported \"));\n }\n}\n/**\n * Convert a BigNumber to a formatted string representation.\n *\n * Syntax:\n *\n * format(value)\n * format(value, options)\n * format(value, precision)\n * format(value, fn)\n *\n * Where:\n *\n * {number} value The value to be formatted\n * {Object} options An object with formatting options. Available options:\n * {string} notation\n * Number notation. Choose from:\n * 'fixed' Always use regular number notation.\n * For example '123.40' and '14000000'\n * 'exponential' Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * 'auto' (default) Regular number notation for numbers\n * having an absolute value between\n * `lower` and `upper` bounds, and uses\n * exponential notation elsewhere.\n * Lower bound is included, upper bound\n * is excluded.\n * For example '123.4' and '1.4e7'.\n * 'bin', 'oct, or\n * 'hex' Format the number using binary, octal,\n * or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * {number} wordSize The word size in bits to use for formatting\n * in binary, octal, or hexadecimal notation.\n * To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option\n * is defined the value is formatted as a signed\n * twos complement integer of the given word size\n * and the size suffix is appended to the output.\n * For example\n * format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * {number} precision A number between 0 and 16 to round\n * the digits of the number.\n * In case of notations 'exponential',\n * 'engineering', and 'auto',\n * `precision` defines the total\n * number of significant digits returned.\n * In case of notation 'fixed',\n * `precision` defines the number of\n * significant digits after the decimal\n * point.\n * `precision` is undefined by default.\n * {number} lowerExp Exponent determining the lower boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `-3`.\n * {number} upperExp Exponent determining the upper boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `5`.\n * {Function} fn A custom formatting function. Can be used to override the\n * built-in notations. Function `fn` is called with `value` as\n * parameter and must return a string. Is useful for example to\n * format all values inside a matrix in a particular way.\n *\n * Examples:\n *\n * format(6.4) // '6.4'\n * format(1240000) // '1.24e6'\n * format(1/3) // '0.3333333333333333'\n * format(1/3, 3) // '0.333'\n * format(21385, 2) // '21000'\n * format(12e8, {notation: 'fixed'}) // returns '1200000000'\n * format(2.3, {notation: 'fixed', precision: 4}) // returns '2.3000'\n * format(52.8, {notation: 'exponential'}) // returns '5.28e+1'\n * format(12400, {notation: 'engineering'}) // returns '12.400e+3'\n *\n * @param {BigNumber} value\n * @param {Object | Function | number} [options]\n * @return {string} str The formatted value\n */\n\n\nexport function format(value, options) {\n if (typeof options === 'function') {\n // handle format(value, fn)\n return options(value);\n } // handle special cases\n\n\n if (!value.isFinite()) {\n return value.isNaN() ? 'NaN' : value.gt(0) ? 'Infinity' : '-Infinity';\n } // default values for options\n\n\n var notation = 'auto';\n var precision;\n var wordSize;\n\n if (options !== undefined) {\n // determine notation from options\n if (options.notation) {\n notation = options.notation;\n } // determine precision from options\n\n\n if (typeof options === 'number') {\n precision = options;\n } else if (options.precision) {\n precision = options.precision;\n }\n\n if (options.wordSize) {\n wordSize = options.wordSize;\n\n if (typeof wordSize !== 'number') {\n throw new Error('Option \"wordSize\" must be a number');\n }\n }\n } // handle the various notations\n\n\n switch (notation) {\n case 'fixed':\n return toFixed(value, precision);\n\n case 'exponential':\n return toExponential(value, precision);\n\n case 'engineering':\n return toEngineering(value, precision);\n\n case 'bin':\n return formatBigNumberToBase(value, 2, wordSize);\n\n case 'oct':\n return formatBigNumberToBase(value, 8, wordSize);\n\n case 'hex':\n return formatBigNumberToBase(value, 16, wordSize);\n\n case 'auto':\n {\n // determine lower and upper bound for exponential notation.\n // TODO: implement support for upper and lower to be BigNumbers themselves\n var lowerExp = options && options.lowerExp !== undefined ? options.lowerExp : -3;\n var upperExp = options && options.upperExp !== undefined ? options.upperExp : 5; // handle special case zero\n\n if (value.isZero()) return '0'; // determine whether or not to output exponential notation\n\n var str;\n var rounded = value.toSignificantDigits(precision);\n var exp = rounded.e;\n\n if (exp >= lowerExp && exp < upperExp) {\n // normal number notation\n str = rounded.toFixed();\n } else {\n // exponential notation\n str = toExponential(value, precision);\n } // remove trailing zeros after the decimal point\n\n\n return str.replace(/((\\.\\d*?)(0+))($|e)/, function () {\n var digits = arguments[2];\n var e = arguments[4];\n return digits !== '.' ? digits + e : e;\n });\n }\n\n default:\n throw new Error('Unknown notation \"' + notation + '\". ' + 'Choose \"auto\", \"exponential\", \"fixed\", \"bin\", \"oct\", or \"hex.');\n }\n}\n/**\n * Format a BigNumber in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'\n * @param {BigNumber | string} value\n * @param {number} [precision] Optional number of significant figures to return.\n */\n\nexport function toEngineering(value, precision) {\n // find nearest lower multiple of 3 for exponent\n var e = value.e;\n var newExp = e % 3 === 0 ? e : e < 0 ? e - 3 - e % 3 : e - e % 3; // find difference in exponents, and calculate the value without exponent\n\n var valueWithoutExp = value.mul(Math.pow(10, -newExp));\n var valueStr = valueWithoutExp.toPrecision(precision);\n\n if (valueStr.indexOf('e') !== -1) {\n valueStr = valueWithoutExp.toString();\n }\n\n return valueStr + 'e' + (e >= 0 ? '+' : '') + newExp.toString();\n}\n/**\n * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3'\n * @param {BigNumber} value\n * @param {number} [precision] Number of digits in formatted output.\n * If not provided, the maximum available digits\n * is used.\n * @returns {string} str\n */\n\nexport function toExponential(value, precision) {\n if (precision !== undefined) {\n return value.toExponential(precision - 1); // Note the offset of one\n } else {\n return value.toExponential();\n }\n}\n/**\n * Format a number with fixed notation.\n * @param {BigNumber} value\n * @param {number} [precision=undefined] Optional number of decimals after the\n * decimal point. Undefined by default.\n */\n\nexport function toFixed(value, precision) {\n return value.toFixed(precision);\n}","import { isBigNumber, isString, typeOf } from './is.js';\nimport { format as formatNumber } from './number.js';\nimport { format as formatBigNumber } from './bignumber/formatter.js';\n/**\n * Check if a text ends with a certain string.\n * @param {string} text\n * @param {string} search\n */\n\nexport function endsWith(text, search) {\n var start = text.length - search.length;\n var end = text.length;\n return text.substring(start, end) === search;\n}\n/**\n * Format a value of any type into a string.\n *\n * Usage:\n * math.format(value)\n * math.format(value, precision)\n *\n * When value is a function:\n *\n * - When the function has a property `syntax`, it returns this\n * syntax description.\n * - In other cases, a string `'function'` is returned.\n *\n * When `value` is an Object:\n *\n * - When the object contains a property `format` being a function, this\n * function is invoked as `value.format(options)` and the result is returned.\n * - When the object has its own `toString` method, this method is invoked\n * and the result is returned.\n * - In other cases the function will loop over all object properties and\n * return JSON object notation like '{\"a\": 2, \"b\": 3}'.\n *\n * Example usage:\n * math.format(2/7) // '0.2857142857142857'\n * math.format(math.pi, 3) // '3.14'\n * math.format(new Complex(2, 3)) // '2 + 3i'\n * math.format('hello') // '\"hello\"'\n *\n * @param {*} value Value to be stringified\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string} str\n */\n\nexport function format(value, options) {\n if (typeof value === 'number') {\n return formatNumber(value, options);\n }\n\n if (isBigNumber(value)) {\n return formatBigNumber(value, options);\n } // note: we use unsafe duck-typing here to check for Fractions, this is\n // ok here since we're only invoking toString or concatenating its values\n\n\n if (looksLikeFraction(value)) {\n if (!options || options.fraction !== 'decimal') {\n // output as ratio, like '1/3'\n return value.s * value.n + '/' + value.d;\n } else {\n // output as decimal, like '0.(3)'\n return value.toString();\n }\n }\n\n if (Array.isArray(value)) {\n return formatArray(value, options);\n }\n\n if (isString(value)) {\n return '\"' + value + '\"';\n }\n\n if (typeof value === 'function') {\n return value.syntax ? String(value.syntax) : 'function';\n }\n\n if (value && typeof value === 'object') {\n if (typeof value.format === 'function') {\n return value.format(options);\n } else if (value && value.toString(options) !== {}.toString()) {\n // this object has a non-native toString method, use that one\n return value.toString(options);\n } else {\n var entries = Object.keys(value).map(key => {\n return '\"' + key + '\": ' + format(value[key], options);\n });\n return '{' + entries.join(', ') + '}';\n }\n }\n\n return String(value);\n}\n/**\n * Stringify a value into a string enclosed in double quotes.\n * Unescaped double quotes and backslashes inside the value are escaped.\n * @param {*} value\n * @return {string}\n */\n\nexport function stringify(value) {\n var text = String(value);\n var escaped = '';\n var i = 0;\n\n while (i < text.length) {\n var c = text.charAt(i);\n\n if (c === '\\\\') {\n escaped += c;\n i++;\n c = text.charAt(i);\n\n if (c === '' || '\"\\\\/bfnrtu'.indexOf(c) === -1) {\n escaped += '\\\\'; // no valid escape character -> escape it\n }\n\n escaped += c;\n } else if (c === '\"') {\n escaped += '\\\\\"';\n } else {\n escaped += c;\n }\n\n i++;\n }\n\n return '\"' + escaped + '\"';\n}\n/**\n * Escape special HTML characters\n * @param {*} value\n * @return {string}\n */\n\nexport function escape(value) {\n var text = String(value);\n text = text.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n return text;\n}\n/**\n * Recursively format an n-dimensional matrix\n * Example output: \"[[1, 2], [3, 4]]\"\n * @param {Array} array\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n\nfunction formatArray(array, options) {\n if (Array.isArray(array)) {\n var str = '[';\n var len = array.length;\n\n for (var i = 0; i < len; i++) {\n if (i !== 0) {\n str += ', ';\n }\n\n str += formatArray(array[i], options);\n }\n\n str += ']';\n return str;\n } else {\n return format(array, options);\n }\n}\n/**\n * Check whether a value looks like a Fraction (unsafe duck-type check)\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction looksLikeFraction(value) {\n return value && typeof value === 'object' && typeof value.s === 'number' && typeof value.n === 'number' && typeof value.d === 'number' || false;\n}\n/**\n * Compare two strings\n * @param {string} x\n * @param {string} y\n * @returns {number}\n */\n\n\nexport function compareText(x, y) {\n // we don't want to convert numbers to string, only accept string input\n if (!isString(x)) {\n throw new TypeError('Unexpected type of argument in function compareText ' + '(expected: string or Array or Matrix, actual: ' + typeOf(x) + ', index: 0)');\n }\n\n if (!isString(y)) {\n throw new TypeError('Unexpected type of argument in function compareText ' + '(expected: string or Array or Matrix, actual: ' + typeOf(y) + ', index: 1)');\n }\n\n return x === y ? 0 : x > y ? 1 : -1;\n}","/**\n * Create a range error with the message:\n * 'Dimension mismatch ( != )'\n * @param {number | number[]} actual The actual size\n * @param {number | number[]} expected The expected size\n * @param {string} [relation='!='] Optional relation between actual\n * and expected size: '!=', '<', etc.\n * @extends RangeError\n */\nexport function DimensionError(actual, expected, relation) {\n if (!(this instanceof DimensionError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.actual = actual;\n this.expected = expected;\n this.relation = relation;\n this.message = 'Dimension mismatch (' + (Array.isArray(actual) ? '[' + actual.join(', ') + ']' : actual) + ' ' + (this.relation || '!=') + ' ' + (Array.isArray(expected) ? '[' + expected.join(', ') + ']' : expected) + ')';\n this.stack = new Error().stack;\n}\nDimensionError.prototype = new RangeError();\nDimensionError.prototype.constructor = RangeError;\nDimensionError.prototype.name = 'DimensionError';\nDimensionError.prototype.isDimensionError = true;","/**\n * Create a range error with the message:\n * 'Index out of range (index < min)'\n * 'Index out of range (index < max)'\n *\n * @param {number} index The actual index\n * @param {number} [min=0] Minimum index (included)\n * @param {number} [max] Maximum index (excluded)\n * @extends RangeError\n */\nexport function IndexError(index, min, max) {\n if (!(this instanceof IndexError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.index = index;\n\n if (arguments.length < 3) {\n this.min = 0;\n this.max = min;\n } else {\n this.min = min;\n this.max = max;\n }\n\n if (this.min !== undefined && this.index < this.min) {\n this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')';\n } else if (this.max !== undefined && this.index >= this.max) {\n this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')';\n } else {\n this.message = 'Index out of range (' + this.index + ')';\n }\n\n this.stack = new Error().stack;\n}\nIndexError.prototype = new RangeError();\nIndexError.prototype.constructor = RangeError;\nIndexError.prototype.name = 'IndexError';\nIndexError.prototype.isIndexError = true;","import { isInteger } from './number.js';\nimport { isNumber } from './is.js';\nimport { format } from './string.js';\nimport { DimensionError } from '../error/DimensionError.js';\nimport { IndexError } from '../error/IndexError.js';\n/**\n * Calculate the size of a multi dimensional array.\n * This function checks the size of the first entry, it does not validate\n * whether all dimensions match. (use function `validate` for that)\n * @param {Array} x\n * @Return {Number[]} size\n */\n\nexport function arraySize(x) {\n var s = [];\n\n while (Array.isArray(x)) {\n s.push(x.length);\n x = x[0];\n }\n\n return s;\n}\n/**\n * Recursively validate whether each element in a multi dimensional array\n * has a size corresponding to the provided size array.\n * @param {Array} array Array to be validated\n * @param {number[]} size Array with the size of each dimension\n * @param {number} dim Current dimension\n * @throws DimensionError\n * @private\n */\n\nfunction _validate(array, size, dim) {\n var i;\n var len = array.length;\n\n if (len !== size[dim]) {\n throw new DimensionError(len, size[dim]);\n }\n\n if (dim < size.length - 1) {\n // recursively validate each child array\n var dimNext = dim + 1;\n\n for (i = 0; i < len; i++) {\n var child = array[i];\n\n if (!Array.isArray(child)) {\n throw new DimensionError(size.length - 1, size.length, '<');\n }\n\n _validate(array[i], size, dimNext);\n }\n } else {\n // last dimension. none of the childs may be an array\n for (i = 0; i < len; i++) {\n if (Array.isArray(array[i])) {\n throw new DimensionError(size.length + 1, size.length, '>');\n }\n }\n }\n}\n/**\n * Validate whether each element in a multi dimensional array has\n * a size corresponding to the provided size array.\n * @param {Array} array Array to be validated\n * @param {number[]} size Array with the size of each dimension\n * @throws DimensionError\n */\n\n\nexport function validate(array, size) {\n var isScalar = size.length === 0;\n\n if (isScalar) {\n // scalar\n if (Array.isArray(array)) {\n throw new DimensionError(array.length, 0);\n }\n } else {\n // array\n _validate(array, size, 0);\n }\n}\n/**\n * Test whether index is an integer number with index >= 0 and index < length\n * when length is provided\n * @param {number} index Zero-based index\n * @param {number} [length] Length of the array\n */\n\nexport function validateIndex(index, length) {\n if (!isNumber(index) || !isInteger(index)) {\n throw new TypeError('Index must be an integer (value: ' + index + ')');\n }\n\n if (index < 0 || typeof length === 'number' && index >= length) {\n throw new IndexError(index, length);\n }\n}\n/**\n * Resize a multi dimensional array. The resized array is returned.\n * @param {Array} array Array to be resized\n * @param {Array.} size Array with the size of each dimension\n * @param {*} [defaultValue=0] Value to be filled in in new entries,\n * zero by default. Specify for example `null`,\n * to clearly see entries that are not explicitly\n * set.\n * @return {Array} array The resized array\n */\n\nexport function resize(array, size, defaultValue) {\n // TODO: add support for scalars, having size=[] ?\n // check the type of the arguments\n if (!Array.isArray(array) || !Array.isArray(size)) {\n throw new TypeError('Array expected');\n }\n\n if (size.length === 0) {\n throw new Error('Resizing to scalar is not supported');\n } // check whether size contains positive integers\n\n\n size.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value < 0) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(size) + ')');\n }\n }); // recursively resize the array\n\n var _defaultValue = defaultValue !== undefined ? defaultValue : 0;\n\n _resize(array, size, 0, _defaultValue);\n\n return array;\n}\n/**\n * Recursively resize a multi dimensional array\n * @param {Array} array Array to be resized\n * @param {number[]} size Array with the size of each dimension\n * @param {number} dim Current dimension\n * @param {*} [defaultValue] Value to be filled in in new entries,\n * undefined by default.\n * @private\n */\n\nfunction _resize(array, size, dim, defaultValue) {\n var i;\n var elem;\n var oldLen = array.length;\n var newLen = size[dim];\n var minLen = Math.min(oldLen, newLen); // apply new length\n\n array.length = newLen;\n\n if (dim < size.length - 1) {\n // non-last dimension\n var dimNext = dim + 1; // resize existing child arrays\n\n for (i = 0; i < minLen; i++) {\n // resize child array\n elem = array[i];\n\n if (!Array.isArray(elem)) {\n elem = [elem]; // add a dimension\n\n array[i] = elem;\n }\n\n _resize(elem, size, dimNext, defaultValue);\n } // create new child arrays\n\n\n for (i = minLen; i < newLen; i++) {\n // get child array\n elem = [];\n array[i] = elem; // resize new child array\n\n _resize(elem, size, dimNext, defaultValue);\n }\n } else {\n // last dimension\n // remove dimensions of existing values\n for (i = 0; i < minLen; i++) {\n while (Array.isArray(array[i])) {\n array[i] = array[i][0];\n }\n } // fill new elements with the default value\n\n\n for (i = minLen; i < newLen; i++) {\n array[i] = defaultValue;\n }\n }\n}\n/**\n * Re-shape a multi dimensional array to fit the specified dimensions\n * @param {Array} array Array to be reshaped\n * @param {Array.} sizes List of sizes for each dimension\n * @returns {Array} Array whose data has been formatted to fit the\n * specified dimensions\n *\n * @throws {DimensionError} If the product of the new dimension sizes does\n * not equal that of the old ones\n */\n\n\nexport function reshape(array, sizes) {\n var flatArray = flatten(array);\n var currentLength = flatArray.length;\n\n if (!Array.isArray(array) || !Array.isArray(sizes)) {\n throw new TypeError('Array expected');\n }\n\n if (sizes.length === 0) {\n throw new DimensionError(0, currentLength, '!=');\n }\n\n sizes = processSizesWildcard(sizes, currentLength);\n var newLength = product(sizes);\n\n if (currentLength !== newLength) {\n throw new DimensionError(newLength, currentLength, '!=');\n }\n\n try {\n return _reshape(flatArray, sizes);\n } catch (e) {\n if (e instanceof DimensionError) {\n throw new DimensionError(newLength, currentLength, '!=');\n }\n\n throw e;\n }\n}\n/**\n * Replaces the wildcard -1 in the sizes array.\n * @param {Array.} sizes List of sizes for each dimension. At most on wildcard.\n * @param {number} currentLength Number of elements in the array.\n * @throws {Error} If more than one wildcard or unable to replace it.\n * @returns {Array.} The sizes array with wildcard replaced.\n */\n\nexport function processSizesWildcard(sizes, currentLength) {\n var newLength = product(sizes);\n var processedSizes = sizes.slice();\n var WILDCARD = -1;\n var wildCardIndex = sizes.indexOf(WILDCARD);\n var isMoreThanOneWildcard = sizes.indexOf(WILDCARD, wildCardIndex + 1) >= 0;\n\n if (isMoreThanOneWildcard) {\n throw new Error('More than one wildcard in sizes');\n }\n\n var hasWildcard = wildCardIndex >= 0;\n var canReplaceWildcard = currentLength % newLength === 0;\n\n if (hasWildcard) {\n if (canReplaceWildcard) {\n processedSizes[wildCardIndex] = -currentLength / newLength;\n } else {\n throw new Error('Could not replace wildcard, since ' + currentLength + ' is no multiple of ' + -newLength);\n }\n }\n\n return processedSizes;\n}\n/**\n * Computes the product of all array elements.\n * @param {Array} array Array of factors\n * @returns {number} Product of all elements\n */\n\nfunction product(array) {\n return array.reduce((prev, curr) => prev * curr, 1);\n}\n/**\n * Iteratively re-shape a multi dimensional array to fit the specified dimensions\n * @param {Array} array Array to be reshaped\n * @param {Array.} sizes List of sizes for each dimension\n * @returns {Array} Array whose data has been formatted to fit the\n * specified dimensions\n */\n\n\nfunction _reshape(array, sizes) {\n // testing if there are enough elements for the requested shape\n var tmpArray = array;\n var tmpArray2; // for each dimensions starting by the last one and ignoring the first one\n\n for (var sizeIndex = sizes.length - 1; sizeIndex > 0; sizeIndex--) {\n var size = sizes[sizeIndex];\n tmpArray2 = []; // aggregate the elements of the current tmpArray in elements of the requested size\n\n var length = tmpArray.length / size;\n\n for (var i = 0; i < length; i++) {\n tmpArray2.push(tmpArray.slice(i * size, (i + 1) * size));\n } // set it as the new tmpArray for the next loop turn or for return\n\n\n tmpArray = tmpArray2;\n }\n\n return tmpArray;\n}\n/**\n * Squeeze a multi dimensional array\n * @param {Array} array\n * @param {Array} [size]\n * @returns {Array} returns the array itself\n */\n\n\nexport function squeeze(array, size) {\n var s = size || arraySize(array); // squeeze outer dimensions\n\n while (Array.isArray(array) && array.length === 1) {\n array = array[0];\n s.shift();\n } // find the first dimension to be squeezed\n\n\n var dims = s.length;\n\n while (s[dims - 1] === 1) {\n dims--;\n } // squeeze inner dimensions\n\n\n if (dims < s.length) {\n array = _squeeze(array, dims, 0);\n s.length = dims;\n }\n\n return array;\n}\n/**\n * Recursively squeeze a multi dimensional array\n * @param {Array} array\n * @param {number} dims Required number of dimensions\n * @param {number} dim Current dimension\n * @returns {Array | *} Returns the squeezed array\n * @private\n */\n\nfunction _squeeze(array, dims, dim) {\n var i, ii;\n\n if (dim < dims) {\n var next = dim + 1;\n\n for (i = 0, ii = array.length; i < ii; i++) {\n array[i] = _squeeze(array[i], dims, next);\n }\n } else {\n while (Array.isArray(array)) {\n array = array[0];\n }\n }\n\n return array;\n}\n/**\n * Unsqueeze a multi dimensional array: add dimensions when missing\n *\n * Paramter `size` will be mutated to match the new, unqueezed matrix size.\n *\n * @param {Array} array\n * @param {number} dims Desired number of dimensions of the array\n * @param {number} [outer] Number of outer dimensions to be added\n * @param {Array} [size] Current size of array.\n * @returns {Array} returns the array itself\n * @private\n */\n\n\nexport function unsqueeze(array, dims, outer, size) {\n var s = size || arraySize(array); // unsqueeze outer dimensions\n\n if (outer) {\n for (var i = 0; i < outer; i++) {\n array = [array];\n s.unshift(1);\n }\n } // unsqueeze inner dimensions\n\n\n array = _unsqueeze(array, dims, 0);\n\n while (s.length < dims) {\n s.push(1);\n }\n\n return array;\n}\n/**\n * Recursively unsqueeze a multi dimensional array\n * @param {Array} array\n * @param {number} dims Required number of dimensions\n * @param {number} dim Current dimension\n * @returns {Array | *} Returns the squeezed array\n * @private\n */\n\nfunction _unsqueeze(array, dims, dim) {\n var i, ii;\n\n if (Array.isArray(array)) {\n var next = dim + 1;\n\n for (i = 0, ii = array.length; i < ii; i++) {\n array[i] = _unsqueeze(array[i], dims, next);\n }\n } else {\n for (var d = dim; d < dims; d++) {\n array = [array];\n }\n }\n\n return array;\n}\n/**\n * Flatten a multi dimensional array, put all elements in a one dimensional\n * array\n * @param {Array} array A multi dimensional array\n * @return {Array} The flattened array (1 dimensional)\n */\n\n\nexport function flatten(array) {\n if (!Array.isArray(array)) {\n // if not an array, return as is\n return array;\n }\n\n var flat = [];\n array.forEach(function callback(value) {\n if (Array.isArray(value)) {\n value.forEach(callback); // traverse through sub-arrays recursively\n } else {\n flat.push(value);\n }\n });\n return flat;\n}\n/**\n * A safe map\n * @param {Array} array\n * @param {function} callback\n */\n\nexport function map(array, callback) {\n return Array.prototype.map.call(array, callback);\n}\n/**\n * A safe forEach\n * @param {Array} array\n * @param {function} callback\n */\n\nexport function forEach(array, callback) {\n Array.prototype.forEach.call(array, callback);\n}\n/**\n * A safe filter\n * @param {Array} array\n * @param {function} callback\n */\n\nexport function filter(array, callback) {\n if (arraySize(array).length !== 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n\n return Array.prototype.filter.call(array, callback);\n}\n/**\n * Filter values in a callback given a regular expression\n * @param {Array} array\n * @param {RegExp} regexp\n * @return {Array} Returns the filtered array\n * @private\n */\n\nexport function filterRegExp(array, regexp) {\n if (arraySize(array).length !== 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n\n return Array.prototype.filter.call(array, entry => regexp.test(entry));\n}\n/**\n * A safe join\n * @param {Array} array\n * @param {string} separator\n */\n\nexport function join(array, separator) {\n return Array.prototype.join.call(array, separator);\n}\n/**\n * Assign a numeric identifier to every element of a sorted array\n * @param {Array} a An array\n * @return {Array} An array of objects containing the original value and its identifier\n */\n\nexport function identify(a) {\n if (!Array.isArray(a)) {\n throw new TypeError('Array input expected');\n }\n\n if (a.length === 0) {\n return a;\n }\n\n var b = [];\n var count = 0;\n b[0] = {\n value: a[0],\n identifier: 0\n };\n\n for (var i = 1; i < a.length; i++) {\n if (a[i] === a[i - 1]) {\n count++;\n } else {\n count = 0;\n }\n\n b.push({\n value: a[i],\n identifier: count\n });\n }\n\n return b;\n}\n/**\n * Remove the numeric identifier from the elements\n * @param {array} a An array\n * @return {array} An array of values without identifiers\n */\n\nexport function generalize(a) {\n if (!Array.isArray(a)) {\n throw new TypeError('Array input expected');\n }\n\n if (a.length === 0) {\n return a;\n }\n\n var b = [];\n\n for (var i = 0; i < a.length; i++) {\n b.push(a[i].value);\n }\n\n return b;\n}\n/**\n * Check the datatype of a given object\n * This is a low level implementation that should only be used by\n * parent Matrix classes such as SparseMatrix or DenseMatrix\n * This method does not validate Array Matrix shape\n * @param {Array} array\n * @param {function} typeOf Callback function to use to determine the type of a value\n * @return {string}\n */\n\nexport function getArrayDataType(array, typeOf) {\n var type; // to hold type info\n\n var length = 0; // to hold length value to ensure it has consistent sizes\n\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n var isArray = Array.isArray(item); // Saving the target matrix row size\n\n if (i === 0 && isArray) {\n length = item.length;\n } // If the current item is an array but the length does not equal the targetVectorSize\n\n\n if (isArray && item.length !== length) {\n return undefined;\n }\n\n var itemType = isArray ? getArrayDataType(item, typeOf) // recurse into a nested array\n : typeOf(item);\n\n if (type === undefined) {\n type = itemType; // first item\n } else if (type !== itemType) {\n return 'mixed';\n } else {// we're good, everything has the same type so far\n }\n }\n\n return type;\n}\n/**\n * Return the last item from an array\n * @param array\n * @returns {*}\n */\n\nexport function last(array) {\n return array[array.length - 1];\n}\n/**\n * Get all but the last element of array.\n */\n\nexport function initial(array) {\n return array.slice(0, array.length - 1);\n}\n/**\n * Test whether an array or string contains an item\n * @param {Array | string} array\n * @param {*} item\n * @return {boolean}\n */\n\nexport function contains(array, item) {\n return array.indexOf(item) !== -1;\n}","/**\n * Create a syntax error with the message:\n * 'Wrong number of arguments in function ( provided, - expected)'\n * @param {string} fn Function name\n * @param {number} count Actual argument count\n * @param {number} min Minimum required argument count\n * @param {number} [max] Maximum required argument count\n * @extends Error\n */\nexport function ArgumentsError(fn, count, min, max) {\n if (!(this instanceof ArgumentsError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.fn = fn;\n this.count = count;\n this.min = min;\n this.max = max;\n this.message = 'Wrong number of arguments in function ' + fn + ' (' + count + ' provided, ' + min + (max !== undefined && max !== null ? '-' + max : '') + ' expected)';\n this.stack = new Error().stack;\n}\nArgumentsError.prototype = new Error();\nArgumentsError.prototype.constructor = Error;\nArgumentsError.prototype.name = 'ArgumentsError';\nArgumentsError.prototype.isArgumentsError = true;","import { isBigNumber, isComplex, isFraction, isMatrix, isUnit } from '../../utils/is.js';\nimport { isFactory, stripOptionalNotation } from '../../utils/factory.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { contains } from '../../utils/array.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nexport function importFactory(typed, load, math, importedFactories) {\n /**\n * Import functions from an object or a module.\n *\n * This function is only available on a mathjs instance created using `create`.\n *\n * Syntax:\n *\n * math.import(functions)\n * math.import(functions, options)\n *\n * Where:\n *\n * - `functions: Object`\n * An object with functions or factories to be imported.\n * - `options: Object` An object with import options. Available options:\n * - `override: boolean`\n * If true, existing functions will be overwritten. False by default.\n * - `silent: boolean`\n * If true, the function will not throw errors on duplicates or invalid\n * types. False by default.\n * - `wrap: boolean`\n * If true, the functions will be wrapped in a wrapper function\n * which converts data types like Matrix to primitive data types like Array.\n * The wrapper is needed when extending math.js with libraries which do not\n * support these data type. False by default.\n *\n * Examples:\n *\n * import { create, all } from 'mathjs'\n * import * as numbers from 'numbers'\n *\n * // create a mathjs instance\n * const math = create(all)\n *\n * // define new functions and variables\n * math.import({\n * myvalue: 42,\n * hello: function (name) {\n * return 'hello, ' + name + '!'\n * }\n * })\n *\n * // use the imported function and variable\n * math.myvalue * 2 // 84\n * math.hello('user') // 'hello, user!'\n *\n * // import the npm module 'numbers'\n * // (must be installed first with `npm install numbers`)\n * math.import(numbers, {wrap: true})\n *\n * math.fibonacci(7) // returns 13\n *\n * @param {Object | Array} functions Object with functions to be imported.\n * @param {Object} [options] Import options.\n */\n function mathImport(functions, options) {\n var num = arguments.length;\n\n if (num !== 1 && num !== 2) {\n throw new ArgumentsError('import', num, 1, 2);\n }\n\n if (!options) {\n options = {};\n }\n\n function flattenImports(flatValues, value, name) {\n if (Array.isArray(value)) {\n value.forEach(item => flattenImports(flatValues, item));\n } else if (typeof value === 'object') {\n for (var _name in value) {\n if (hasOwnProperty(value, _name)) {\n flattenImports(flatValues, value[_name], _name);\n }\n }\n } else if (isFactory(value) || name !== undefined) {\n var flatName = isFactory(value) ? isTransformFunctionFactory(value) ? value.fn + '.transform' : value.fn : name; // we allow importing the same function twice if it points to the same implementation\n\n if (hasOwnProperty(flatValues, flatName) && flatValues[flatName] !== value && !options.silent) {\n throw new Error('Cannot import \"' + flatName + '\" twice');\n }\n\n flatValues[flatName] = value;\n } else {\n if (!options.silent) {\n throw new TypeError('Factory, Object, or Array expected');\n }\n }\n }\n\n var flatValues = {};\n flattenImports(flatValues, functions);\n\n for (var name in flatValues) {\n if (hasOwnProperty(flatValues, name)) {\n // console.log('import', name)\n var value = flatValues[name];\n\n if (isFactory(value)) {\n // we ignore name here and enforce the name of the factory\n // maybe at some point we do want to allow overriding it\n // in that case we can implement an option overrideFactoryNames: true\n _importFactory(value, options);\n } else if (isSupportedType(value)) {\n _import(name, value, options);\n } else {\n if (!options.silent) {\n throw new TypeError('Factory, Object, or Array expected');\n }\n }\n }\n }\n }\n /**\n * Add a property to the math namespace\n * @param {string} name\n * @param {*} value\n * @param {Object} options See import for a description of the options\n * @private\n */\n\n\n function _import(name, value, options) {\n // TODO: refactor this function, it's to complicated and contains duplicate code\n if (options.wrap && typeof value === 'function') {\n // create a wrapper around the function\n value = _wrap(value);\n } // turn a plain function with a typed-function signature into a typed-function\n\n\n if (hasTypedFunctionSignature(value)) {\n value = typed(name, {\n [value.signature]: value\n });\n }\n\n if (isTypedFunction(math[name]) && isTypedFunction(value)) {\n if (options.override) {\n // give the typed function the right name\n value = typed(name, value.signatures);\n } else {\n // merge the existing and typed function\n value = typed(math[name], value);\n }\n\n math[name] = value;\n delete importedFactories[name];\n\n _importTransform(name, value);\n\n math.emit('import', name, function resolver() {\n return value;\n });\n return;\n }\n\n if (math[name] === undefined || options.override) {\n math[name] = value;\n delete importedFactories[name];\n\n _importTransform(name, value);\n\n math.emit('import', name, function resolver() {\n return value;\n });\n return;\n }\n\n if (!options.silent) {\n throw new Error('Cannot import \"' + name + '\": already exists');\n }\n }\n\n function _importTransform(name, value) {\n if (value && typeof value.transform === 'function') {\n math.expression.transform[name] = value.transform;\n\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = value.transform;\n }\n } else {\n // remove existing transform\n delete math.expression.transform[name];\n\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = value;\n }\n }\n }\n\n function _deleteTransform(name) {\n delete math.expression.transform[name];\n\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = math[name];\n } else {\n delete math.expression.mathWithTransform[name];\n }\n }\n /**\n * Create a wrapper a round an function which converts the arguments\n * to their primitive values (like convert a Matrix to Array)\n * @param {Function} fn\n * @return {Function} Returns the wrapped function\n * @private\n */\n\n\n function _wrap(fn) {\n var wrapper = function wrapper() {\n var args = [];\n\n for (var i = 0, len = arguments.length; i < len; i++) {\n var arg = arguments[i];\n args[i] = arg && arg.valueOf();\n }\n\n return fn.apply(math, args);\n };\n\n if (fn.transform) {\n wrapper.transform = fn.transform;\n }\n\n return wrapper;\n }\n /**\n * Import an instance of a factory into math.js\n * @param {function(scope: object)} factory\n * @param {Object} options See import for a description of the options\n * @param {string} [name=factory.name] Optional custom name\n * @private\n */\n\n\n function _importFactory(factory, options) {\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : factory.fn;\n\n if (contains(name, '.')) {\n throw new Error('Factory name should not contain a nested path. ' + 'Name: ' + JSON.stringify(name));\n }\n\n var namespace = isTransformFunctionFactory(factory) ? math.expression.transform : math;\n var existingTransform = (name in math.expression.transform);\n var existing = hasOwnProperty(namespace, name) ? namespace[name] : undefined;\n\n var resolver = function resolver() {\n // collect all dependencies, handle finding both functions and classes and other special cases\n var dependencies = {};\n factory.dependencies.map(stripOptionalNotation).forEach(dependency => {\n if (contains(dependency, '.')) {\n throw new Error('Factory dependency should not contain a nested path. ' + 'Name: ' + JSON.stringify(dependency));\n }\n\n if (dependency === 'math') {\n dependencies.math = math;\n } else if (dependency === 'mathWithTransform') {\n dependencies.mathWithTransform = math.expression.mathWithTransform;\n } else if (dependency === 'classes') {\n // special case for json reviver\n dependencies.classes = math;\n } else {\n dependencies[dependency] = math[dependency];\n }\n });\n var instance = /* #__PURE__ */factory(dependencies);\n\n if (instance && typeof instance.transform === 'function') {\n throw new Error('Transforms cannot be attached to factory functions. ' + 'Please create a separate function for it with exports.path=\"expression.transform\"');\n }\n\n if (existing === undefined || options.override) {\n return instance;\n }\n\n if (isTypedFunction(existing) && isTypedFunction(instance)) {\n // merge the existing and new typed function\n return typed(existing, instance);\n }\n\n if (options.silent) {\n // keep existing, ignore imported function\n return existing;\n } else {\n throw new Error('Cannot import \"' + name + '\": already exists');\n }\n }; // TODO: add unit test with non-lazy factory\n\n\n if (!factory.meta || factory.meta.lazy !== false) {\n lazy(namespace, name, resolver); // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)\n\n if (existing && existingTransform) {\n _deleteTransform(name);\n } else {\n if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {\n lazy(math.expression.mathWithTransform, name, () => namespace[name]);\n }\n }\n } else {\n namespace[name] = resolver(); // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)\n\n if (existing && existingTransform) {\n _deleteTransform(name);\n } else {\n if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {\n lazy(math.expression.mathWithTransform, name, () => namespace[name]);\n }\n }\n } // TODO: improve factories, store a list with imports instead which can be re-played\n\n\n importedFactories[name] = factory;\n math.emit('import', name, resolver);\n }\n /**\n * Check whether given object is a type which can be imported\n * @param {Function | number | string | boolean | null | Unit | Complex} object\n * @return {boolean}\n * @private\n */\n\n\n function isSupportedType(object) {\n return typeof object === 'function' || typeof object === 'number' || typeof object === 'string' || typeof object === 'boolean' || object === null || isUnit(object) || isComplex(object) || isBigNumber(object) || isFraction(object) || isMatrix(object) || Array.isArray(object);\n }\n /**\n * Test whether a given thing is a typed-function\n * @param {*} fn\n * @return {boolean} Returns true when `fn` is a typed-function\n */\n\n\n function isTypedFunction(fn) {\n return typeof fn === 'function' && typeof fn.signatures === 'object';\n }\n\n function hasTypedFunctionSignature(fn) {\n return typeof fn === 'function' && typeof fn.signature === 'string';\n }\n\n function allowedInExpressions(name) {\n return !hasOwnProperty(unsafe, name);\n }\n\n function factoryAllowedInExpressions(factory) {\n return factory.fn.indexOf('.') === -1 && // FIXME: make checking on path redundant, check on meta data instead\n !hasOwnProperty(unsafe, factory.fn) && (!factory.meta || !factory.meta.isClass);\n }\n\n function isTransformFunctionFactory(factory) {\n return factory !== undefined && factory.meta !== undefined && factory.meta.isTransformFunction === true || false;\n } // namespaces and functions not available in the parser for safety reasons\n\n\n var unsafe = {\n expression: true,\n type: true,\n docs: true,\n error: true,\n json: true,\n chain: true // chain method not supported. Note that there is a unit chain too.\n\n };\n return mathImport;\n}","export var DEFAULT_CONFIG = {\n // minimum relative difference between two compared values,\n // used by all comparison functions\n epsilon: 1e-12,\n // type of default matrix output. Choose 'matrix' (default) or 'array'\n matrix: 'Matrix',\n // type of default number output. Choose 'number' (default) 'BigNumber', or 'Fraction\n number: 'number',\n // number of significant digits in BigNumbers\n precision: 64,\n // predictable output type of functions. When true, output type depends only\n // on the input types. When false (default), output type can vary depending\n // on input values. For example `math.sqrt(-4)` returns `complex('2i')` when\n // predictable is false, and returns `NaN` when true.\n predictable: false,\n // random seed for seeded pseudo random number generation\n // null = randomly seed\n randomSeed: null\n};","import { clone, mapObject, deepExtend } from '../../utils/object.js';\nimport { DEFAULT_CONFIG } from '../config.js';\nexport var MATRIX_OPTIONS = ['Matrix', 'Array']; // valid values for option matrix\n\nexport var NUMBER_OPTIONS = ['number', 'BigNumber', 'Fraction']; // valid values for option number\n\nexport function configFactory(config, emit) {\n /**\n * Set configuration options for math.js, and get current options.\n * Will emit a 'config' event, with arguments (curr, prev, changes).\n *\n * This function is only available on a mathjs instance created using `create`.\n *\n * Syntax:\n *\n * math.config(config: Object): Object\n *\n * Examples:\n *\n *\n * import { create, all } from 'mathjs'\n *\n * // create a mathjs instance\n * const math = create(all)\n *\n * math.config().number // outputs 'number'\n * math.evaluate('0.4') // outputs number 0.4\n * math.config({number: 'Fraction'})\n * math.evaluate('0.4') // outputs Fraction 2/5\n *\n * @param {Object} [options] Available options:\n * {number} epsilon\n * Minimum relative difference between two\n * compared values, used by all comparison functions.\n * {string} matrix\n * A string 'Matrix' (default) or 'Array'.\n * {string} number\n * A string 'number' (default), 'BigNumber', or 'Fraction'\n * {number} precision\n * The number of significant digits for BigNumbers.\n * Not applicable for Numbers.\n * {string} parenthesis\n * How to display parentheses in LaTeX and string\n * output.\n * {string} randomSeed\n * Random seed for seeded pseudo random number generator.\n * Set to null to randomly seed.\n * @return {Object} Returns the current configuration\n */\n function _config(options) {\n if (options) {\n var prev = mapObject(config, clone); // validate some of the options\n\n validateOption(options, 'matrix', MATRIX_OPTIONS);\n validateOption(options, 'number', NUMBER_OPTIONS); // merge options\n\n deepExtend(config, options);\n var curr = mapObject(config, clone);\n var changes = mapObject(options, clone); // emit 'config' event\n\n emit('config', curr, prev, changes);\n return curr;\n } else {\n return mapObject(config, clone);\n }\n } // attach the valid options to the function so they can be extended\n\n\n _config.MATRIX_OPTIONS = MATRIX_OPTIONS;\n _config.NUMBER_OPTIONS = NUMBER_OPTIONS; // attach the config properties as readonly properties to the config function\n\n Object.keys(DEFAULT_CONFIG).forEach(key => {\n Object.defineProperty(_config, key, {\n get: () => config[key],\n enumerable: true,\n configurable: true\n });\n });\n return _config;\n}\n/**\n * Test whether an Array contains a specific item.\n * @param {Array.} array\n * @param {string} item\n * @return {boolean}\n */\n\nfunction contains(array, item) {\n return array.indexOf(item) !== -1;\n}\n/**\n * Validate an option\n * @param {Object} options Object with options\n * @param {string} name Name of the option to validate\n * @param {Array.} values Array with valid values for this option\n */\n\n\nfunction validateOption(options, name, values) {\n if (options[name] !== undefined && !contains(values, options[name])) {\n // unknown value\n console.warn('Warning: Unknown value \"' + options[name] + '\" for configuration option \"' + name + '\". ' + 'Available options: ' + values.map(value => JSON.stringify(value)).join(', ') + '.');\n }\n}","import { hasOwnProperty } from './object.js';\n/**\n * Get a property of a plain object\n * Throws an error in case the object is not a plain object or the\n * property is not defined on the object itself\n * @param {Object} object\n * @param {string} prop\n * @return {*} Returns the property value when safe\n */\n\nfunction getSafeProperty(object, prop) {\n // only allow getting safe properties of a plain object\n if (isPlainObject(object) && isSafeProperty(object, prop)) {\n return object[prop];\n }\n\n if (typeof object[prop] === 'function' && isSafeMethod(object, prop)) {\n throw new Error('Cannot access method \"' + prop + '\" as a property');\n }\n\n throw new Error('No access to property \"' + prop + '\"');\n}\n/**\n * Set a property on a plain object.\n * Throws an error in case the object is not a plain object or the\n * property would override an inherited property like .constructor or .toString\n * @param {Object} object\n * @param {string} prop\n * @param {*} value\n * @return {*} Returns the value\n */\n// TODO: merge this function into access.js?\n\n\nfunction setSafeProperty(object, prop, value) {\n // only allow setting safe properties of a plain object\n if (isPlainObject(object) && isSafeProperty(object, prop)) {\n object[prop] = value;\n return value;\n }\n\n throw new Error('No access to property \"' + prop + '\"');\n}\n\nfunction getSafeProperties(object) {\n return Object.keys(object).filter(prop => hasOwnProperty(object, prop));\n}\n\nfunction hasSafeProperty(object, prop) {\n return prop in object;\n}\n/**\n * Test whether a property is safe to use for an object.\n * For example .toString and .constructor are not safe\n * @param {string} prop\n * @return {boolean} Returns true when safe\n */\n\n\nfunction isSafeProperty(object, prop) {\n if (!object || typeof object !== 'object') {\n return false;\n } // SAFE: whitelisted\n // e.g length\n\n\n if (hasOwnProperty(safeNativeProperties, prop)) {\n return true;\n } // UNSAFE: inherited from Object prototype\n // e.g constructor\n\n\n if (prop in Object.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Object.prototype is a root object\n return false;\n } // UNSAFE: inherited from Function prototype\n // e.g call, apply\n\n\n if (prop in Function.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Function.prototype is a root object\n return false;\n }\n\n return true;\n}\n/**\n * Validate whether a method is safe.\n * Throws an error when that's not the case.\n * @param {Object} object\n * @param {string} method\n */\n// TODO: merge this function into assign.js?\n\n\nfunction validateSafeMethod(object, method) {\n if (!isSafeMethod(object, method)) {\n throw new Error('No access to method \"' + method + '\"');\n }\n}\n/**\n * Check whether a method is safe.\n * Throws an error when that's not the case (for example for `constructor`).\n * @param {Object} object\n * @param {string} method\n * @return {boolean} Returns true when safe, false otherwise\n */\n\n\nfunction isSafeMethod(object, method) {\n if (object === null || object === undefined || typeof object[method] !== 'function') {\n return false;\n } // UNSAFE: ghosted\n // e.g overridden toString\n // Note that IE10 doesn't support __proto__ and we can't do this check there.\n\n\n if (hasOwnProperty(object, method) && Object.getPrototypeOf && method in Object.getPrototypeOf(object)) {\n return false;\n } // SAFE: whitelisted\n // e.g toString\n\n\n if (hasOwnProperty(safeNativeMethods, method)) {\n return true;\n } // UNSAFE: inherited from Object prototype\n // e.g constructor\n\n\n if (method in Object.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Object.prototype is a root object\n return false;\n } // UNSAFE: inherited from Function prototype\n // e.g call, apply\n\n\n if (method in Function.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Function.prototype is a root object\n return false;\n }\n\n return true;\n}\n\nfunction isPlainObject(object) {\n return typeof object === 'object' && object && object.constructor === Object;\n}\n\nvar safeNativeProperties = {\n length: true,\n name: true\n};\nvar safeNativeMethods = {\n toString: true,\n valueOf: true,\n toLocaleString: true\n};\nexport { getSafeProperty };\nexport { setSafeProperty };\nexport { isSafeProperty };\nexport { hasSafeProperty };\nexport { getSafeProperties };\nexport { validateSafeMethod };\nexport { isSafeMethod };\nexport { isPlainObject };","import { setSafeProperty, hasSafeProperty, getSafeProperty } from './customs.js';\nimport { isObject } from './is.js';\n/**\n * A map facade on a bare object.\n *\n * The small number of methods needed to implement a scope,\n * forwarding on to the SafeProperty functions. Over time, the codebase\n * will stop using this method, as all objects will be Maps, rather than\n * more security prone objects.\n */\n\nexport class ObjectWrappingMap {\n constructor(object) {\n this.wrappedObject = object;\n }\n\n keys() {\n return Object.keys(this.wrappedObject);\n }\n\n get(key) {\n return getSafeProperty(this.wrappedObject, key);\n }\n\n set(key, value) {\n setSafeProperty(this.wrappedObject, key, value);\n return this;\n }\n\n has(key) {\n return hasSafeProperty(this.wrappedObject, key);\n }\n\n}\n/**\n * Creates an empty map, or whatever your platform's polyfill is.\n *\n * @returns an empty Map or Map like object.\n */\n\nexport function createEmptyMap() {\n return new Map();\n}\n/**\n * Creates a Map from the given object.\n *\n * @param { Map | { [key: string]: unknown } | undefined } mapOrObject\n * @returns\n */\n\nexport function createMap(mapOrObject) {\n if (!mapOrObject) {\n return createEmptyMap();\n }\n\n if (isMap(mapOrObject)) {\n return mapOrObject;\n }\n\n if (isObject(mapOrObject)) {\n return new ObjectWrappingMap(mapOrObject);\n }\n\n throw new Error('createMap can create maps from objects or Maps');\n}\n/**\n * Unwraps a map into an object.\n *\n * @param {Map} map\n * @returns { [key: string]: unknown }\n */\n\nexport function toObject(map) {\n if (map instanceof ObjectWrappingMap) {\n return map.wrappedObject;\n }\n\n var object = {};\n\n for (var key of map.keys()) {\n var value = map.get(key);\n setSafeProperty(object, key, value);\n }\n\n return object;\n}\n/**\n * Returns `true` if the passed object appears to be a Map (i.e. duck typing).\n *\n * Methods looked for are `get`, `set`, `keys` and `has`.\n *\n * @param {Map | object} object\n * @returns\n */\n\nexport function isMap(object) {\n // We can use the fast instanceof, or a slower duck typing check.\n // The duck typing method needs to cover enough methods to not be confused with DenseMatrix.\n if (!object) {\n return false;\n }\n\n return object instanceof Map || object instanceof ObjectWrappingMap || typeof object.set === 'function' && typeof object.get === 'function' && typeof object.keys === 'function' && typeof object.has === 'function';\n}\n/**\n * Copies the contents of key-value pairs from each `objects` in to `map`.\n *\n * Object is `objects` can be a `Map` or object.\n *\n * This is the `Map` analog to `Object.assign`.\n */\n\nexport function assign(map) {\n for (var _len = arguments.length, objects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n objects[_key - 1] = arguments[_key];\n }\n\n for (var args of objects) {\n if (!args) {\n continue;\n }\n\n if (isMap(args)) {\n for (var key of args.keys()) {\n map.set(key, args.get(key));\n }\n } else if (isObject(args)) {\n for (var _key2 of Object.keys(args)) {\n map.set(_key2, args[_key2]);\n }\n }\n }\n\n return map;\n}","/**\n * Create a typed-function which checks the types of the arguments and\n * can match them against multiple provided signatures. The typed-function\n * automatically converts inputs in order to find a matching signature.\n * Typed functions throw informative errors in case of wrong input arguments.\n *\n * See the library [typed-function](https://github.com/josdejong/typed-function)\n * for detailed documentation.\n *\n * Syntax:\n *\n * math.typed(name, signatures) : function\n * math.typed(signatures) : function\n *\n * Examples:\n *\n * // create a typed function with multiple types per argument (type union)\n * const fn2 = typed({\n * 'number | boolean': function (b) {\n * return 'b is a number or boolean'\n * },\n * 'string, number | boolean': function (a, b) {\n * return 'a is a string, b is a number or boolean'\n * }\n * })\n *\n * // create a typed function with an any type argument\n * const log = typed({\n * 'string, any': function (event, data) {\n * console.log('event: ' + event + ', data: ' + JSON.stringify(data))\n * }\n * })\n *\n * @param {string} [name] Optional name for the typed-function\n * @param {Object} signatures Object with one or multiple function signatures\n * @returns {function} The created typed-function.\n */\nimport { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigNumber, isBlockNode, isBoolean, isChain, isComplex, isConditionalNode, isConstantNode, isDate, isDenseMatrix, isFraction, isFunction, isFunctionAssignmentNode, isFunctionNode, isHelp, isIndex, isIndexNode, isMatrix, isNode, isNull, isNumber, isObject, isObjectNode, isOperatorNode, isParenthesisNode, isRange, isRangeNode, isRegExp, isResultSet, isSparseMatrix, isString, isSymbolNode, isUndefined, isUnit } from '../../utils/is.js';\nimport typedFunction from 'typed-function';\nimport { digits } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { isMap } from '../../utils/map.js'; // returns a new instance of typed-function\n\nvar _createTyped2 = function _createTyped() {\n // initially, return the original instance of typed-function\n // consecutively, return a new instance from typed.create.\n _createTyped2 = typedFunction.create;\n return typedFunction;\n};\n\nvar dependencies = ['?BigNumber', '?Complex', '?DenseMatrix', '?Fraction'];\n/**\n * Factory function for creating a new typed instance\n * @param {Object} dependencies Object with data types like Complex and BigNumber\n * @returns {Function}\n */\n\nexport var createTyped = /* #__PURE__ */factory('typed', dependencies, function createTyped(_ref) {\n var {\n BigNumber,\n Complex,\n DenseMatrix,\n Fraction\n } = _ref;\n\n // TODO: typed-function must be able to silently ignore signatures with unknown data types\n // get a new instance of typed-function\n var typed = _createTyped2(); // define all types. The order of the types determines in which order function\n // arguments are type-checked (so for performance it's important to put the\n // most used types first).\n\n\n typed.types = [{\n name: 'number',\n test: isNumber\n }, {\n name: 'Complex',\n test: isComplex\n }, {\n name: 'BigNumber',\n test: isBigNumber\n }, {\n name: 'Fraction',\n test: isFraction\n }, {\n name: 'Unit',\n test: isUnit\n }, {\n name: 'string',\n test: isString\n }, {\n name: 'Chain',\n test: isChain\n }, {\n name: 'Array',\n test: isArray\n }, {\n name: 'Matrix',\n test: isMatrix\n }, {\n name: 'DenseMatrix',\n test: isDenseMatrix\n }, {\n name: 'SparseMatrix',\n test: isSparseMatrix\n }, {\n name: 'Range',\n test: isRange\n }, {\n name: 'Index',\n test: isIndex\n }, {\n name: 'boolean',\n test: isBoolean\n }, {\n name: 'ResultSet',\n test: isResultSet\n }, {\n name: 'Help',\n test: isHelp\n }, {\n name: 'function',\n test: isFunction\n }, {\n name: 'Date',\n test: isDate\n }, {\n name: 'RegExp',\n test: isRegExp\n }, {\n name: 'null',\n test: isNull\n }, {\n name: 'undefined',\n test: isUndefined\n }, {\n name: 'AccessorNode',\n test: isAccessorNode\n }, {\n name: 'ArrayNode',\n test: isArrayNode\n }, {\n name: 'AssignmentNode',\n test: isAssignmentNode\n }, {\n name: 'BlockNode',\n test: isBlockNode\n }, {\n name: 'ConditionalNode',\n test: isConditionalNode\n }, {\n name: 'ConstantNode',\n test: isConstantNode\n }, {\n name: 'FunctionNode',\n test: isFunctionNode\n }, {\n name: 'FunctionAssignmentNode',\n test: isFunctionAssignmentNode\n }, {\n name: 'IndexNode',\n test: isIndexNode\n }, {\n name: 'Node',\n test: isNode\n }, {\n name: 'ObjectNode',\n test: isObjectNode\n }, {\n name: 'OperatorNode',\n test: isOperatorNode\n }, {\n name: 'ParenthesisNode',\n test: isParenthesisNode\n }, {\n name: 'RangeNode',\n test: isRangeNode\n }, {\n name: 'SymbolNode',\n test: isSymbolNode\n }, {\n name: 'Map',\n test: isMap\n }, {\n name: 'Object',\n test: isObject\n } // order 'Object' last, it matches on other classes too\n ];\n typed.conversions = [{\n from: 'number',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n } // note: conversion from number to BigNumber can fail if x has >15 digits\n\n\n if (digits(x) > 15) {\n throw new TypeError('Cannot implicitly convert a number with >15 significant digits to BigNumber ' + '(value: ' + x + '). ' + 'Use function bignumber(x) to convert to BigNumber.');\n }\n\n return new BigNumber(x);\n }\n }, {\n from: 'number',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n\n return new Complex(x, 0);\n }\n }, {\n from: 'number',\n to: 'string',\n convert: function convert(x) {\n return x + '';\n }\n }, {\n from: 'BigNumber',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n\n return new Complex(x.toNumber(), 0);\n }\n }, {\n from: 'Fraction',\n to: 'BigNumber',\n convert: function convert(x) {\n throw new TypeError('Cannot implicitly convert a Fraction to BigNumber or vice versa. ' + 'Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.');\n }\n }, {\n from: 'Fraction',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n\n return new Complex(x.valueOf(), 0);\n }\n }, {\n from: 'number',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n\n var f = new Fraction(x);\n\n if (f.valueOf() !== x) {\n throw new TypeError('Cannot implicitly convert a number to a Fraction when there will be a loss of precision ' + '(value: ' + x + '). ' + 'Use function fraction(x) to convert to Fraction.');\n }\n\n return f;\n }\n }, {\n // FIXME: add conversion from Fraction to number, for example for `sqrt(fraction(1,3))`\n // from: 'Fraction',\n // to: 'number',\n // convert: function (x) {\n // return x.valueOf()\n // }\n // }, {\n from: 'string',\n to: 'number',\n convert: function convert(x) {\n var n = Number(x);\n\n if (isNaN(n)) {\n throw new Error('Cannot convert \"' + x + '\" to a number');\n }\n\n return n;\n }\n }, {\n from: 'string',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n\n try {\n return new BigNumber(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to BigNumber');\n }\n }\n }, {\n from: 'string',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n\n try {\n return new Fraction(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to Fraction');\n }\n }\n }, {\n from: 'string',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n\n try {\n return new Complex(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to Complex');\n }\n }\n }, {\n from: 'boolean',\n to: 'number',\n convert: function convert(x) {\n return +x;\n }\n }, {\n from: 'boolean',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n\n return new BigNumber(+x);\n }\n }, {\n from: 'boolean',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n\n return new Fraction(+x);\n }\n }, {\n from: 'boolean',\n to: 'string',\n convert: function convert(x) {\n return String(x);\n }\n }, {\n from: 'Array',\n to: 'Matrix',\n convert: function convert(array) {\n if (!DenseMatrix) {\n throwNoMatrix();\n }\n\n return new DenseMatrix(array);\n }\n }, {\n from: 'Matrix',\n to: 'Array',\n convert: function convert(matrix) {\n return matrix.valueOf();\n }\n }];\n return typed;\n});\n\nfunction throwNoBignumber(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a BigNumber: no class 'BigNumber' provided\"));\n}\n\nfunction throwNoComplex(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a Complex number: no class 'Complex' provided\"));\n}\n\nfunction throwNoMatrix() {\n throw new Error('Cannot convert array into a Matrix: no class \\'DenseMatrix\\' provided');\n}\n\nfunction throwNoFraction(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a Fraction, no class 'Fraction' provided.\"));\n}","import { factory } from '../../utils/factory.js';\nvar name = 'ResultSet';\nvar dependencies = [];\nexport var createResultSet = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * A ResultSet contains a list or results\n * @class ResultSet\n * @param {Array} entries\n * @constructor ResultSet\n */\n function ResultSet(entries) {\n if (!(this instanceof ResultSet)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.entries = entries || [];\n }\n /**\n * Attach type information\n */\n\n\n ResultSet.prototype.type = 'ResultSet';\n ResultSet.prototype.isResultSet = true;\n /**\n * Returns the array with results hold by this ResultSet\n * @memberof ResultSet\n * @returns {Array} entries\n */\n\n ResultSet.prototype.valueOf = function () {\n return this.entries;\n };\n /**\n * Returns the stringified results of the ResultSet\n * @memberof ResultSet\n * @returns {string} string\n */\n\n\n ResultSet.prototype.toString = function () {\n return '[' + this.entries.join(', ') + ']';\n };\n /**\n * Get a JSON representation of the ResultSet\n * @memberof ResultSet\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"ResultSet\", \"entries\": [...]}`\n */\n\n\n ResultSet.prototype.toJSON = function () {\n return {\n mathjs: 'ResultSet',\n entries: this.entries\n };\n };\n /**\n * Instantiate a ResultSet from a JSON object\n * @memberof ResultSet\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"ResultSet\", \"entries\": [...]}`\n * @return {ResultSet}\n */\n\n\n ResultSet.fromJSON = function (json) {\n return new ResultSet(json.entries);\n };\n\n return ResultSet;\n}, {\n isClass: true\n});","/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BigNumber';\nvar dependencies = ['?on', 'config'];\nexport var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n config\n } = _ref;\n var BigNumber = Decimal.clone({\n precision: config.precision,\n modulo: Decimal.EUCLID\n });\n BigNumber.prototype = Object.create(BigNumber.prototype);\n /**\n * Attach type information\n */\n\n BigNumber.prototype.type = 'BigNumber';\n BigNumber.prototype.isBigNumber = true;\n /**\n * Get a JSON representation of a BigNumber containing\n * type information\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"BigNumber\", \"value\": \"0.2\"}`\n */\n\n BigNumber.prototype.toJSON = function () {\n return {\n mathjs: 'BigNumber',\n value: this.toString()\n };\n };\n /**\n * Instantiate a BigNumber from a JSON object\n * @param {Object} json a JSON object structured as:\n * `{\"mathjs\": \"BigNumber\", \"value\": \"0.2\"}`\n * @return {BigNumber}\n */\n\n\n BigNumber.fromJSON = function (json) {\n return new BigNumber(json.value);\n };\n\n if (on) {\n // listen for changed in the configuration, automatically apply changed precision\n on('config', function (curr, prev) {\n if (curr.precision !== prev.precision) {\n BigNumber.config({\n precision: curr.precision\n });\n }\n });\n }\n\n return BigNumber;\n}, {\n isClass: true\n});","import Complex from 'complex.js';\nimport { format } from '../../utils/number.js';\nimport { isNumber, isUnit } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Complex';\nvar dependencies = [];\nexport var createComplexClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Attach type information\n */\n Complex.prototype.type = 'Complex';\n Complex.prototype.isComplex = true;\n /**\n * Get a JSON representation of the complex number\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Complex\", \"re\": 2, \"im\": 3}`\n */\n\n Complex.prototype.toJSON = function () {\n return {\n mathjs: 'Complex',\n re: this.re,\n im: this.im\n };\n };\n /*\n * Return the value of the complex number in polar notation\n * The angle phi will be set in the interval of [-pi, pi].\n * @return {{r: number, phi: number}} Returns and object with properties r and phi.\n */\n\n\n Complex.prototype.toPolar = function () {\n return {\n r: this.abs(),\n phi: this.arg()\n };\n };\n /**\n * Get a string representation of the complex number,\n * with optional formatting options.\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string} str\n */\n\n\n Complex.prototype.format = function (options) {\n var str = '';\n var im = this.im;\n var re = this.re;\n var strRe = format(this.re, options);\n var strIm = format(this.im, options); // round either re or im when smaller than the configured precision\n\n var precision = isNumber(options) ? options : options ? options.precision : null;\n\n if (precision !== null) {\n var epsilon = Math.pow(10, -precision);\n\n if (Math.abs(re / im) < epsilon) {\n re = 0;\n }\n\n if (Math.abs(im / re) < epsilon) {\n im = 0;\n }\n }\n\n if (im === 0) {\n // real value\n str = strRe;\n } else if (re === 0) {\n // purely complex value\n if (im === 1) {\n str = 'i';\n } else if (im === -1) {\n str = '-i';\n } else {\n str = strIm + 'i';\n }\n } else {\n // complex value\n if (im < 0) {\n if (im === -1) {\n str = strRe + ' - i';\n } else {\n str = strRe + ' - ' + strIm.substring(1) + 'i';\n }\n } else {\n if (im === 1) {\n str = strRe + ' + i';\n } else {\n str = strRe + ' + ' + strIm + 'i';\n }\n }\n }\n\n return str;\n };\n /**\n * Create a complex number from polar coordinates\n *\n * Usage:\n *\n * Complex.fromPolar(r: number, phi: number) : Complex\n * Complex.fromPolar({r: number, phi: number}) : Complex\n *\n * @param {*} args...\n * @return {Complex}\n */\n\n\n Complex.fromPolar = function (args) {\n switch (arguments.length) {\n case 1:\n {\n var arg = arguments[0];\n\n if (typeof arg === 'object') {\n return Complex(arg);\n } else {\n throw new TypeError('Input has to be an object with r and phi keys.');\n }\n }\n\n case 2:\n {\n var r = arguments[0];\n var phi = arguments[1];\n\n if (isNumber(r)) {\n if (isUnit(phi) && phi.hasBase('ANGLE')) {\n // convert unit to a number in radians\n phi = phi.toNumber('rad');\n }\n\n if (isNumber(phi)) {\n return new Complex({\n r: r,\n phi: phi\n });\n }\n\n throw new TypeError('Phi is not a number nor an angle unit.');\n } else {\n throw new TypeError('Radius r is not a number.');\n }\n }\n\n default:\n throw new SyntaxError('Wrong number of arguments in function fromPolar');\n }\n };\n\n Complex.prototype.valueOf = Complex.prototype.toString;\n /**\n * Create a Complex number from a JSON object\n * @param {Object} json A JSON Object structured as\n * {\"mathjs\": \"Complex\", \"re\": 2, \"im\": 3}\n * All properties are optional, default values\n * for `re` and `im` are 0.\n * @return {Complex} Returns a new Complex number\n */\n\n Complex.fromJSON = function (json) {\n return new Complex(json);\n };\n /**\n * Compare two complex numbers, `a` and `b`:\n *\n * - Returns 1 when the real part of `a` is larger than the real part of `b`\n * - Returns -1 when the real part of `a` is smaller than the real part of `b`\n * - Returns 1 when the real parts are equal\n * and the imaginary part of `a` is larger than the imaginary part of `b`\n * - Returns -1 when the real parts are equal\n * and the imaginary part of `a` is smaller than the imaginary part of `b`\n * - Returns 0 when both real and imaginary parts are equal.\n *\n * @params {Complex} a\n * @params {Complex} b\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n\n\n Complex.compare = function (a, b) {\n if (a.re > b.re) {\n return 1;\n }\n\n if (a.re < b.re) {\n return -1;\n }\n\n if (a.im > b.im) {\n return 1;\n }\n\n if (a.im < b.im) {\n return -1;\n }\n\n return 0;\n };\n\n return Complex;\n}, {\n isClass: true\n});","/**\n * @license Fraction.js v4.3.7 31/08/2023\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2023, Robert Eisele (robert@raw.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n\n// Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n// Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n// If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\nvar MAX_CYCLE_LEN = 2000;\n\n// Parsed data to avoid calling \"new\" all the time\nvar P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n};\n\nfunction assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw InvalidParameter();\n }\n return n * s;\n}\n\n// Creates a new Fraction internally without the need of the bulky constructor\nfunction newFraction(n, d) {\n\n if (d === 0) {\n throw DivisionByZero();\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n}\n\nfunction factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n}\n\nvar parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw NonIntegerParameter();\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw InvalidParameter();\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw InvalidParameter();\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw InvalidParameter();\n }\n\n if (d === 0) {\n throw DivisionByZero();\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n};\n\nfunction modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n}\n\n\nfunction cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n}\n\n\nfunction cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n}\n\nfunction gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n};\n\n/**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\nexport default function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n}\n\nvar DivisionByZero = function() { return new Error(\"Division by Zero\"); };\nvar InvalidParameter = function() { return new Error(\"Invalid argument\"); };\nvar NonIntegerParameter = function() { return new Error(\"Parameters must be integer\"); };\n\nFraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw DivisionByZero();\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational number\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational number to a multiple of another rational number\n *\n * Ex: new Fraction('0.9').roundTo(\"1/8\") => 7 / 8\n **/\n \"roundTo\": function(a, b) {\n\n /*\n k * x/y ≤ a/b < (k+1) * x/y\n ⇔ k ≤ a/b / (x/y) < (k+1)\n ⇔ k = floor(a/b * y/x)\n */\n\n parse(a, b);\n\n return newFraction(this['s'] * Math.round(this['n'] * P['d'] / (this['d'] * P['n'])) * P['n'], P['d']);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180°\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (Math.abs(s['sub'](thisABS).valueOf()) < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n};\n","import Fraction from 'fraction.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Fraction';\nvar dependencies = [];\nexport var createFractionClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Attach type information\n */\n Fraction.prototype.type = 'Fraction';\n Fraction.prototype.isFraction = true;\n /**\n * Get a JSON representation of a Fraction containing type information\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Fraction\", \"n\": 3, \"d\": 8}`\n */\n\n Fraction.prototype.toJSON = function () {\n return {\n mathjs: 'Fraction',\n n: this.s * this.n,\n d: this.d\n };\n };\n /**\n * Instantiate a Fraction from a JSON object\n * @param {Object} json a JSON object structured as:\n * `{\"mathjs\": \"Fraction\", \"n\": 3, \"d\": 8}`\n * @return {BigNumber}\n */\n\n\n Fraction.fromJSON = function (json) {\n return new Fraction(json);\n };\n\n return Fraction;\n}, {\n isClass: true\n});","import { isBigNumber } from '../../utils/is.js';\nimport { format, sign } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Range';\nvar dependencies = [];\nexport var createRangeClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Create a range. A range has a start, step, and end, and contains functions\n * to iterate over the range.\n *\n * A range can be constructed as:\n *\n * const range = new Range(start, end)\n * const range = new Range(start, end, step)\n *\n * To get the result of the range:\n * range.forEach(function (x) {\n * console.log(x)\n * })\n * range.map(function (x) {\n * return math.sin(x)\n * })\n * range.toArray()\n *\n * Example usage:\n *\n * const c = new Range(2, 6) // 2:1:5\n * c.toArray() // [2, 3, 4, 5]\n * const d = new Range(2, -3, -1) // 2:-1:-2\n * d.toArray() // [2, 1, 0, -1, -2]\n *\n * @class Range\n * @constructor Range\n * @param {number} start included lower bound\n * @param {number} end excluded upper bound\n * @param {number} [step] step size, default value is 1\n */\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n var hasStart = start !== null && start !== undefined;\n var hasEnd = end !== null && end !== undefined;\n var hasStep = step !== null && step !== undefined;\n\n if (hasStart) {\n if (isBigNumber(start)) {\n start = start.toNumber();\n } else if (typeof start !== 'number') {\n throw new TypeError('Parameter start must be a number');\n }\n }\n\n if (hasEnd) {\n if (isBigNumber(end)) {\n end = end.toNumber();\n } else if (typeof end !== 'number') {\n throw new TypeError('Parameter end must be a number');\n }\n }\n\n if (hasStep) {\n if (isBigNumber(step)) {\n step = step.toNumber();\n } else if (typeof step !== 'number') {\n throw new TypeError('Parameter step must be a number');\n }\n }\n\n this.start = hasStart ? parseFloat(start) : 0;\n this.end = hasEnd ? parseFloat(end) : 0;\n this.step = hasStep ? parseFloat(step) : 1;\n }\n /**\n * Attach type information\n */\n\n\n Range.prototype.type = 'Range';\n Range.prototype.isRange = true;\n /**\n * Parse a string into a range,\n * The string contains the start, optional step, and end, separated by a colon.\n * If the string does not contain a valid range, null is returned.\n * For example str='0:2:11'.\n * @memberof Range\n * @param {string} str\n * @return {Range | null} range\n */\n\n Range.parse = function (str) {\n if (typeof str !== 'string') {\n return null;\n }\n\n var args = str.split(':');\n var nums = args.map(function (arg) {\n return parseFloat(arg);\n });\n var invalid = nums.some(function (num) {\n return isNaN(num);\n });\n\n if (invalid) {\n return null;\n }\n\n switch (nums.length) {\n case 2:\n return new Range(nums[0], nums[1]);\n\n case 3:\n return new Range(nums[0], nums[2], nums[1]);\n\n default:\n return null;\n }\n };\n /**\n * Create a clone of the range\n * @return {Range} clone\n */\n\n\n Range.prototype.clone = function () {\n return new Range(this.start, this.end, this.step);\n };\n /**\n * Retrieve the size of the range.\n * Returns an array containing one number, the number of elements in the range.\n * @memberof Range\n * @returns {number[]} size\n */\n\n\n Range.prototype.size = function () {\n var len = 0;\n var start = this.start;\n var step = this.step;\n var end = this.end;\n var diff = end - start;\n\n if (sign(step) === sign(diff)) {\n len = Math.ceil(diff / step);\n } else if (diff === 0) {\n len = 0;\n }\n\n if (isNaN(len)) {\n len = 0;\n }\n\n return [len];\n };\n /**\n * Calculate the minimum value in the range\n * @memberof Range\n * @return {number | undefined} min\n */\n\n\n Range.prototype.min = function () {\n var size = this.size()[0];\n\n if (size > 0) {\n if (this.step > 0) {\n // positive step\n return this.start;\n } else {\n // negative step\n return this.start + (size - 1) * this.step;\n }\n } else {\n return undefined;\n }\n };\n /**\n * Calculate the maximum value in the range\n * @memberof Range\n * @return {number | undefined} max\n */\n\n\n Range.prototype.max = function () {\n var size = this.size()[0];\n\n if (size > 0) {\n if (this.step > 0) {\n // positive step\n return this.start + (size - 1) * this.step;\n } else {\n // negative step\n return this.start;\n }\n } else {\n return undefined;\n }\n };\n /**\n * Execute a callback function for each value in the range.\n * @memberof Range\n * @param {function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Range being traversed.\n */\n\n\n Range.prototype.forEach = function (callback) {\n var x = this.start;\n var step = this.step;\n var end = this.end;\n var i = 0;\n\n if (step > 0) {\n while (x < end) {\n callback(x, [i], this);\n x += step;\n i++;\n }\n } else if (step < 0) {\n while (x > end) {\n callback(x, [i], this);\n x += step;\n i++;\n }\n }\n };\n /**\n * Execute a callback function for each value in the Range, and return the\n * results as an array\n * @memberof Range\n * @param {function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @returns {Array} array\n */\n\n\n Range.prototype.map = function (callback) {\n var array = [];\n this.forEach(function (value, index, obj) {\n array[index[0]] = callback(value, index, obj);\n });\n return array;\n };\n /**\n * Create an Array with a copy of the Ranges data\n * @memberof Range\n * @returns {Array} array\n */\n\n\n Range.prototype.toArray = function () {\n var array = [];\n this.forEach(function (value, index) {\n array[index[0]] = value;\n });\n return array;\n };\n /**\n * Get the primitive value of the Range, a one dimensional array\n * @memberof Range\n * @returns {Array} array\n */\n\n\n Range.prototype.valueOf = function () {\n // TODO: implement a caching mechanism for range.valueOf()\n return this.toArray();\n };\n /**\n * Get a string representation of the range, with optional formatting options.\n * Output is formatted as 'start:step:end', for example '2:6' or '0:0.2:11'\n * @memberof Range\n * @param {Object | number | function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n\n\n Range.prototype.format = function (options) {\n var str = format(this.start, options);\n\n if (this.step !== 1) {\n str += ':' + format(this.step, options);\n }\n\n str += ':' + format(this.end, options);\n return str;\n };\n /**\n * Get a string representation of the range.\n * @memberof Range\n * @returns {string}\n */\n\n\n Range.prototype.toString = function () {\n return this.format();\n };\n /**\n * Get a JSON representation of the range\n * @memberof Range\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Range\", \"start\": 2, \"end\": 4, \"step\": 1}`\n */\n\n\n Range.prototype.toJSON = function () {\n return {\n mathjs: 'Range',\n start: this.start,\n end: this.end,\n step: this.step\n };\n };\n /**\n * Instantiate a Range from a JSON object\n * @memberof Range\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Range\", \"start\": 2, \"end\": 4, \"step\": 1}`\n * @return {Range}\n */\n\n\n Range.fromJSON = function (json) {\n return new Range(json.start, json.end, json.step);\n };\n\n return Range;\n}, {\n isClass: true\n});","import { factory } from '../../utils/factory.js';\nvar name = 'Matrix';\nvar dependencies = [];\nexport var createMatrixClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * @constructor Matrix\n *\n * A Matrix is a wrapper around an Array. A matrix can hold a multi dimensional\n * array. A matrix can be constructed as:\n *\n * let matrix = math.matrix(data)\n *\n * Matrix contains the functions to resize, get and set values, get the size,\n * clone the matrix and to convert the matrix to a vector, array, or scalar.\n * Furthermore, one can iterate over the matrix using map and forEach.\n * The internal Array of the Matrix can be accessed using the function valueOf.\n *\n * Example usage:\n *\n * let matrix = math.matrix([[1, 2], [3, 4]])\n * matix.size() // [2, 2]\n * matrix.resize([3, 2], 5)\n * matrix.valueOf() // [[1, 2], [3, 4], [5, 5]]\n * matrix.subset([1,2]) // 3 (indexes are zero-based)\n *\n */\n function Matrix() {\n if (!(this instanceof Matrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n }\n /**\n * Attach type information\n */\n\n\n Matrix.prototype.type = 'Matrix';\n Matrix.prototype.isMatrix = true;\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @return {string} The storage format.\n */\n\n Matrix.prototype.storage = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke storage on a Matrix interface');\n };\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @return {string} The datatype.\n */\n\n\n Matrix.prototype.datatype = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke datatype on a Matrix interface');\n };\n /**\n * Create a new Matrix With the type of the current matrix instance\n * @param {Array | Object} data\n * @param {string} [datatype]\n */\n\n\n Matrix.prototype.create = function (data, datatype) {\n throw new Error('Cannot invoke create on a Matrix interface');\n };\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n\n\n Matrix.prototype.subset = function (index, replacement, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke subset on a Matrix interface');\n };\n /**\n * Get a single element from the matrix.\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n\n\n Matrix.prototype.get = function (index) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke get on a Matrix interface');\n };\n /**\n * Replace a single element in the matrix.\n * @param {number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {Matrix} self\n */\n\n\n Matrix.prototype.set = function (index, value, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke set on a Matrix interface');\n };\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @param {number[]} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n\n\n Matrix.prototype.resize = function (size, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke resize on a Matrix interface');\n };\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * @param {number[]} size The new size the matrix should have.\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n\n\n Matrix.prototype.reshape = function (size, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke reshape on a Matrix interface');\n };\n /**\n * Create a clone of the matrix\n * @return {Matrix} clone\n */\n\n\n Matrix.prototype.clone = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke clone on a Matrix interface');\n };\n /**\n * Retrieve the size of the matrix.\n * @returns {number[]} size\n */\n\n\n Matrix.prototype.size = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke size on a Matrix interface');\n };\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {Matrix} matrix\n */\n\n\n Matrix.prototype.map = function (callback, skipZeros) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke map on a Matrix interface');\n };\n /**\n * Execute a callback function on each entry of the matrix.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n */\n\n\n Matrix.prototype.forEach = function (callback) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke forEach on a Matrix interface');\n };\n /**\n * Iterate over the matrix elements\n * @return {Iterable<{ value, index: number[] }>}\n */\n\n\n Matrix.prototype[Symbol.iterator] = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot iterate a Matrix interface');\n };\n /**\n * Create an Array with a copy of the data of the Matrix\n * @returns {Array} array\n */\n\n\n Matrix.prototype.toArray = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke toArray on a Matrix interface');\n };\n /**\n * Get the primitive value of the Matrix: a multidimensional array\n * @returns {Array} array\n */\n\n\n Matrix.prototype.valueOf = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke valueOf on a Matrix interface');\n };\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n\n\n Matrix.prototype.format = function (options) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke format on a Matrix interface');\n };\n /**\n * Get a string representation of the matrix\n * @returns {string} str\n */\n\n\n Matrix.prototype.toString = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke toString on a Matrix interface');\n };\n\n return Matrix;\n}, {\n isClass: true\n});","import { isArray, isBigNumber, isCollection, isIndex, isMatrix, isNumber, isString, typeOf } from '../../utils/is.js';\nimport { arraySize, getArrayDataType, processSizesWildcard, reshape, resize, unsqueeze, validate, validateIndex } from '../../utils/array.js';\nimport { format } from '../../utils/string.js';\nimport { isInteger } from '../../utils/number.js';\nimport { clone, deepStrictEqual } from '../../utils/object.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'DenseMatrix';\nvar dependencies = ['Matrix'];\nexport var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Matrix\n } = _ref;\n\n /**\n * Dense Matrix implementation. A regular, dense matrix, supporting multi-dimensional matrices. This is the default matrix type.\n * @class DenseMatrix\n * @enum {{ value, index: number[] }}\n */\n function DenseMatrix(data, datatype) {\n if (!(this instanceof DenseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n\n if (isMatrix(data)) {\n // check data is a DenseMatrix\n if (data.type === 'DenseMatrix') {\n // clone data & size\n this._data = clone(data._data);\n this._size = clone(data._size);\n this._datatype = datatype || data._datatype;\n } else {\n // build data from existing matrix\n this._data = data.toArray();\n this._size = data.size();\n this._datatype = datatype || data._datatype;\n }\n } else if (data && isArray(data.data) && isArray(data.size)) {\n // initialize fields from JSON representation\n this._data = data.data;\n this._size = data.size; // verify the dimensions of the array\n\n validate(this._data, this._size);\n this._datatype = datatype || data.datatype;\n } else if (isArray(data)) {\n // replace nested Matrices with Arrays\n this._data = preprocess(data); // get the dimensions of the array\n\n this._size = arraySize(this._data); // verify the dimensions of the array, TODO: compute size while processing array\n\n validate(this._data, this._size); // data type unknown\n\n this._datatype = datatype;\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._data = [];\n this._size = [0];\n this._datatype = datatype;\n }\n }\n\n DenseMatrix.prototype = new Matrix();\n /**\n * Create a new DenseMatrix\n */\n\n DenseMatrix.prototype.createDenseMatrix = function (data, datatype) {\n return new DenseMatrix(data, datatype);\n };\n /**\n * Attach type information\n */\n\n\n DenseMatrix.prototype.type = 'DenseMatrix';\n DenseMatrix.prototype.isDenseMatrix = true;\n /**\n * Get the matrix type\n *\n * Usage:\n * const matrixType = matrix.getDataType() // retrieves the matrix type\n *\n * @memberOf DenseMatrix\n * @return {string} type information; if multiple types are found from the Matrix, it will return \"mixed\"\n */\n\n DenseMatrix.prototype.getDataType = function () {\n return getArrayDataType(this._data, typeOf);\n };\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @memberof DenseMatrix\n * @return {string} The storage format.\n */\n\n\n DenseMatrix.prototype.storage = function () {\n return 'dense';\n };\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @memberof DenseMatrix\n * @return {string} The datatype.\n */\n\n\n DenseMatrix.prototype.datatype = function () {\n return this._datatype;\n };\n /**\n * Create a new DenseMatrix\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {string} [datatype]\n */\n\n\n DenseMatrix.prototype.create = function (data, datatype) {\n return new DenseMatrix(data, datatype);\n };\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @memberof DenseMatrix\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n\n\n DenseMatrix.prototype.subset = function (index, replacement, defaultValue) {\n switch (arguments.length) {\n case 1:\n return _get(this, index);\n // intentional fall through\n\n case 2:\n case 3:\n return _set(this, index, replacement, defaultValue);\n\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n /**\n * Get a single element from the matrix.\n * @memberof DenseMatrix\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n\n\n DenseMatrix.prototype.get = function (index) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n } // check index\n\n\n for (var x = 0; x < index.length; x++) {\n validateIndex(index[x], this._size[x]);\n }\n\n var data = this._data;\n\n for (var i = 0, ii = index.length; i < ii; i++) {\n var indexI = index[i];\n validateIndex(indexI, data.length);\n data = data[indexI];\n }\n\n return data;\n };\n /**\n * Replace a single element in the matrix.\n * @memberof DenseMatrix\n * @param {number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {DenseMatrix} self\n */\n\n\n DenseMatrix.prototype.set = function (index, value, defaultValue) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n\n if (index.length < this._size.length) {\n throw new DimensionError(index.length, this._size.length, '<');\n }\n\n var i, ii, indexI; // enlarge matrix when needed\n\n var size = index.map(function (i) {\n return i + 1;\n });\n\n _fit(this, size, defaultValue); // traverse over the dimensions\n\n\n var data = this._data;\n\n for (i = 0, ii = index.length - 1; i < ii; i++) {\n indexI = index[i];\n validateIndex(indexI, data.length);\n data = data[indexI];\n } // set new value\n\n\n indexI = index[index.length - 1];\n validateIndex(indexI, data.length);\n data[indexI] = value;\n return this;\n };\n /**\n * Get a submatrix of this matrix\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix\n * @param {Index} index Zero-based index\n * @private\n */\n\n\n function _get(matrix, index) {\n if (!isIndex(index)) {\n throw new TypeError('Invalid index');\n }\n\n var isScalar = index.isScalar();\n\n if (isScalar) {\n // return a scalar\n return matrix.get(index.min());\n } else {\n // validate dimensions\n var size = index.size();\n\n if (size.length !== matrix._size.length) {\n throw new DimensionError(size.length, matrix._size.length);\n } // validate if any of the ranges in the index is out of range\n\n\n var min = index.min();\n var max = index.max();\n\n for (var i = 0, ii = matrix._size.length; i < ii; i++) {\n validateIndex(min[i], matrix._size[i]);\n validateIndex(max[i], matrix._size[i]);\n } // retrieve submatrix\n // TODO: more efficient when creating an empty matrix and setting _data and _size manually\n\n\n return new DenseMatrix(_getSubmatrix(matrix._data, index, size.length, 0), matrix._datatype);\n }\n }\n /**\n * Recursively get a submatrix of a multi dimensional matrix.\n * Index is not checked for correct number or length of dimensions.\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {Index} index\n * @param {number} dims Total number of dimensions\n * @param {number} dim Current dimension\n * @return {Array} submatrix\n * @private\n */\n\n\n function _getSubmatrix(data, index, dims, dim) {\n var last = dim === dims - 1;\n var range = index.dimension(dim);\n\n if (last) {\n return range.map(function (i) {\n validateIndex(i, data.length);\n return data[i];\n }).valueOf();\n } else {\n return range.map(function (i) {\n validateIndex(i, data.length);\n var child = data[i];\n return _getSubmatrix(child, index, dims, dim + 1);\n }).valueOf();\n }\n }\n /**\n * Replace a submatrix in this matrix\n * Indexes are zero-based.\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix\n * @param {Index} index\n * @param {DenseMatrix | Array | *} submatrix\n * @param {*} defaultValue Default value, filled in on new entries when\n * the matrix is resized.\n * @return {DenseMatrix} matrix\n * @private\n */\n\n\n function _set(matrix, index, submatrix, defaultValue) {\n if (!index || index.isIndex !== true) {\n throw new TypeError('Invalid index');\n } // get index size and check whether the index contains a single value\n\n\n var iSize = index.size();\n var isScalar = index.isScalar(); // calculate the size of the submatrix, and convert it into an Array if needed\n\n var sSize;\n\n if (isMatrix(submatrix)) {\n sSize = submatrix.size();\n submatrix = submatrix.valueOf();\n } else {\n sSize = arraySize(submatrix);\n }\n\n if (isScalar) {\n // set a scalar\n // check whether submatrix is a scalar\n if (sSize.length !== 0) {\n throw new TypeError('Scalar expected');\n }\n\n matrix.set(index.min(), submatrix, defaultValue);\n } else {\n // set a submatrix\n // validate dimensions\n if (iSize.length < matrix._size.length) {\n throw new DimensionError(iSize.length, matrix._size.length, '<');\n }\n\n if (sSize.length < iSize.length) {\n // calculate number of missing outer dimensions\n var i = 0;\n var outer = 0;\n\n while (iSize[i] === 1 && sSize[i] === 1) {\n i++;\n }\n\n while (iSize[i] === 1) {\n outer++;\n i++;\n } // unsqueeze both outer and inner dimensions\n\n\n submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);\n } // check whether the size of the submatrix matches the index size\n\n\n if (!deepStrictEqual(iSize, sSize)) {\n throw new DimensionError(iSize, sSize, '>');\n } // enlarge matrix when needed\n\n\n var size = index.max().map(function (i) {\n return i + 1;\n });\n\n _fit(matrix, size, defaultValue); // insert the sub matrix\n\n\n var dims = iSize.length;\n var dim = 0;\n\n _setSubmatrix(matrix._data, index, submatrix, dims, dim);\n }\n\n return matrix;\n }\n /**\n * Replace a submatrix of a multi dimensional matrix.\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {Index} index\n * @param {Array} submatrix\n * @param {number} dims Total number of dimensions\n * @param {number} dim\n * @private\n */\n\n\n function _setSubmatrix(data, index, submatrix, dims, dim) {\n var last = dim === dims - 1;\n var range = index.dimension(dim);\n\n if (last) {\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n data[dataIndex] = submatrix[subIndex[0]];\n });\n } else {\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n\n _setSubmatrix(data[dataIndex], index, submatrix[subIndex[0]], dims, dim + 1);\n });\n }\n }\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @memberof DenseMatrix\n * @param {number[] || Matrix} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n\n\n DenseMatrix.prototype.resize = function (size, defaultValue, copy) {\n // validate arguments\n if (!isCollection(size)) {\n throw new TypeError('Array or Matrix expected');\n } // SparseMatrix input is always 2d, flatten this into 1d if it's indeed a vector\n\n\n var sizeArray = size.valueOf().map(value => {\n return Array.isArray(value) && value.length === 1 ? value[0] : value;\n }); // matrix to resize\n\n var m = copy ? this.clone() : this; // resize matrix\n\n return _resize(m, sizeArray, defaultValue);\n };\n\n function _resize(matrix, size, defaultValue) {\n // check size\n if (size.length === 0) {\n // first value in matrix\n var v = matrix._data; // go deep\n\n while (isArray(v)) {\n v = v[0];\n }\n\n return v;\n } // resize matrix\n\n\n matrix._size = size.slice(0); // copy the array\n\n matrix._data = resize(matrix._data, matrix._size, defaultValue); // return matrix\n\n return matrix;\n }\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * NOTE: This might be better suited to copy by default, instead of modifying\n * in place. For now, it operates in place to remain consistent with\n * resize().\n *\n * @memberof DenseMatrix\n * @param {number[]} size The new size the matrix should have.\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n\n\n DenseMatrix.prototype.reshape = function (size, copy) {\n var m = copy ? this.clone() : this;\n m._data = reshape(m._data, size);\n\n var currentLength = m._size.reduce((length, size) => length * size);\n\n m._size = processSizesWildcard(size, currentLength);\n return m;\n };\n /**\n * Enlarge the matrix when it is smaller than given size.\n * If the matrix is larger or equal sized, nothing is done.\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix The matrix to be resized\n * @param {number[]} size\n * @param {*} defaultValue Default value, filled in on new entries.\n * @private\n */\n\n\n function _fit(matrix, size, defaultValue) {\n var // copy the array\n newSize = matrix._size.slice(0);\n\n var changed = false; // add dimensions when needed\n\n while (newSize.length < size.length) {\n newSize.push(0);\n changed = true;\n } // enlarge size when needed\n\n\n for (var i = 0, ii = size.length; i < ii; i++) {\n if (size[i] > newSize[i]) {\n newSize[i] = size[i];\n changed = true;\n }\n }\n\n if (changed) {\n // resize only when size is changed\n _resize(matrix, newSize, defaultValue);\n }\n }\n /**\n * Create a clone of the matrix\n * @memberof DenseMatrix\n * @return {DenseMatrix} clone\n */\n\n\n DenseMatrix.prototype.clone = function () {\n var m = new DenseMatrix({\n data: clone(this._data),\n size: clone(this._size),\n datatype: this._datatype\n });\n return m;\n };\n /**\n * Retrieve the size of the matrix.\n * @memberof DenseMatrix\n * @returns {number[]} size\n */\n\n\n DenseMatrix.prototype.size = function () {\n return this._size.slice(0); // return a clone of _size\n };\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n *\n * @return {DenseMatrix} matrix\n */\n\n\n DenseMatrix.prototype.map = function (callback) {\n // matrix instance\n var me = this;\n\n var recurse = function recurse(value, index) {\n if (isArray(value)) {\n return value.map(function (child, i) {\n return recurse(child, index.concat(i));\n });\n } else {\n return callback(value, index, me);\n }\n }; // determine the new datatype when the original matrix has datatype defined\n // TODO: should be done in matrix constructor instead\n\n\n var data = recurse(this._data, []);\n var datatype = this._datatype !== undefined ? getArrayDataType(data, typeOf) : undefined;\n return new DenseMatrix(data, datatype);\n };\n /**\n * Execute a callback function on each entry of the matrix.\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n */\n\n\n DenseMatrix.prototype.forEach = function (callback) {\n // matrix instance\n var me = this;\n\n var recurse = function recurse(value, index) {\n if (isArray(value)) {\n value.forEach(function (child, i) {\n recurse(child, index.concat(i));\n });\n } else {\n callback(value, index, me);\n }\n };\n\n recurse(this._data, []);\n };\n /**\n * Iterate over the matrix elements\n * @return {Iterable<{ value, index: number[] }>}\n */\n\n\n DenseMatrix.prototype[Symbol.iterator] = function* () {\n var recurse = function* recurse(value, index) {\n if (isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n yield* recurse(value[i], index.concat(i));\n }\n } else {\n yield {\n value,\n index\n };\n }\n };\n\n yield* recurse(this._data, []);\n };\n /**\n * Returns an array containing the rows of a 2D matrix\n * @returns {Array}\n */\n\n\n DenseMatrix.prototype.rows = function () {\n var result = [];\n var s = this.size();\n\n if (s.length !== 2) {\n throw new TypeError('Rows can only be returned for a 2D matrix.');\n }\n\n var data = this._data;\n\n for (var row of data) {\n result.push(new DenseMatrix([row], this._datatype));\n }\n\n return result;\n };\n /**\n * Returns an array containing the columns of a 2D matrix\n * @returns {Array}\n */\n\n\n DenseMatrix.prototype.columns = function () {\n var _this = this;\n\n var result = [];\n var s = this.size();\n\n if (s.length !== 2) {\n throw new TypeError('Rows can only be returned for a 2D matrix.');\n }\n\n var data = this._data;\n\n var _loop = function _loop(i) {\n var col = data.map(row => [row[i]]);\n result.push(new DenseMatrix(col, _this._datatype));\n };\n\n for (var i = 0; i < s[1]; i++) {\n _loop(i);\n }\n\n return result;\n };\n /**\n * Create an Array with a copy of the data of the DenseMatrix\n * @memberof DenseMatrix\n * @returns {Array} array\n */\n\n\n DenseMatrix.prototype.toArray = function () {\n return clone(this._data);\n };\n /**\n * Get the primitive value of the DenseMatrix: a multidimensional array\n * @memberof DenseMatrix\n * @returns {Array} array\n */\n\n\n DenseMatrix.prototype.valueOf = function () {\n return this._data;\n };\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @memberof DenseMatrix\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n\n\n DenseMatrix.prototype.format = function (options) {\n return format(this._data, options);\n };\n /**\n * Get a string representation of the matrix\n * @memberof DenseMatrix\n * @returns {string} str\n */\n\n\n DenseMatrix.prototype.toString = function () {\n return format(this._data);\n };\n /**\n * Get a JSON representation of the matrix\n * @memberof DenseMatrix\n * @returns {Object}\n */\n\n\n DenseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'DenseMatrix',\n data: this._data,\n size: this._size,\n datatype: this._datatype\n };\n };\n /**\n * Get the kth Matrix diagonal.\n *\n * @memberof DenseMatrix\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will retrieved.\n *\n * @returns {Matrix} The matrix with the diagonal values.\n */\n\n\n DenseMatrix.prototype.diagonal = function (k) {\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n } // is must be an integer\n\n\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0; // rows & columns\n\n var rows = this._size[0];\n var columns = this._size[1]; // number diagonal values\n\n var n = Math.min(rows - kSub, columns - kSuper); // x is a matrix get diagonal from matrix\n\n var data = []; // loop rows\n\n for (var i = 0; i < n; i++) {\n data[i] = this._data[i + kSub][i + kSuper];\n } // create DenseMatrix\n\n\n return new DenseMatrix({\n data: data,\n size: [n],\n datatype: this._datatype\n });\n };\n /**\n * Create a diagonal matrix.\n *\n * @memberof DenseMatrix\n * @param {Array} size The matrix size.\n * @param {number | Matrix | Array } value The values for the diagonal.\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will be filled in.\n * @param {number} [defaultValue] The default value for non-diagonal\n * @param {string} [datatype] The datatype for the diagonal\n *\n * @returns {DenseMatrix}\n */\n\n\n DenseMatrix.diagonal = function (size, value, k, defaultValue) {\n if (!isArray(size)) {\n throw new TypeError('Array expected, size parameter');\n }\n\n if (size.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n } // map size & validate\n\n\n size = size.map(function (s) {\n // check it is a big number\n if (isBigNumber(s)) {\n // convert it\n s = s.toNumber();\n } // validate arguments\n\n\n if (!isNumber(s) || !isInteger(s) || s < 1) {\n throw new Error('Size values must be positive integers');\n }\n\n return s;\n }); // validate k if any\n\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n } // is must be an integer\n\n\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0; // rows and columns\n\n var rows = size[0];\n var columns = size[1]; // number of non-zero items\n\n var n = Math.min(rows - kSub, columns - kSuper); // value extraction function\n\n var _value; // check value\n\n\n if (isArray(value)) {\n // validate array\n if (value.length !== n) {\n // number of values in array must be n\n throw new Error('Invalid value array length');\n } // define function\n\n\n _value = function _value(i) {\n // return value @ i\n return value[i];\n };\n } else if (isMatrix(value)) {\n // matrix size\n var ms = value.size(); // validate matrix\n\n if (ms.length !== 1 || ms[0] !== n) {\n // number of values in array must be n\n throw new Error('Invalid matrix length');\n } // define function\n\n\n _value = function _value(i) {\n // return value @ i\n return value.get([i]);\n };\n } else {\n // define function\n _value = function _value() {\n // return value\n return value;\n };\n } // discover default value if needed\n\n\n if (!defaultValue) {\n // check first value in array\n defaultValue = isBigNumber(_value(0)) ? _value(0).mul(0) // trick to create a BigNumber with value zero\n : 0;\n } // empty array\n\n\n var data = []; // check we need to resize array\n\n if (size.length > 0) {\n // resize array\n data = resize(data, size, defaultValue); // fill diagonal\n\n for (var d = 0; d < n; d++) {\n data[d + kSub][d + kSuper] = _value(d);\n }\n } // create DenseMatrix\n\n\n return new DenseMatrix({\n data: data,\n size: [rows, columns]\n });\n };\n /**\n * Generate a matrix from a JSON object\n * @memberof DenseMatrix\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"DenseMatrix\", data: [], size: []}`,\n * where mathjs is optional\n * @returns {DenseMatrix}\n */\n\n\n DenseMatrix.fromJSON = function (json) {\n return new DenseMatrix(json);\n };\n /**\n * Swap rows i and j in Matrix.\n *\n * @memberof DenseMatrix\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n\n\n DenseMatrix.prototype.swapRows = function (i, j) {\n // check index\n if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {\n throw new Error('Row index must be positive integers');\n } // check dimensions\n\n\n if (this._size.length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n } // validate index\n\n\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[0]); // swap rows\n\n DenseMatrix._swapRows(i, j, this._data); // return current instance\n\n\n return this;\n };\n /**\n * Swap rows i and j in Dense Matrix data structure.\n *\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n * @param {Array} data Matrix data\n */\n\n\n DenseMatrix._swapRows = function (i, j, data) {\n // swap values i <-> j\n var vi = data[i];\n data[i] = data[j];\n data[j] = vi;\n };\n /**\n * Preprocess data, which can be an Array or DenseMatrix with nested Arrays and\n * Matrices. Replaces all nested Matrices with Arrays\n * @memberof DenseMatrix\n * @param {Array} data\n * @return {Array} data\n */\n\n\n function preprocess(data) {\n for (var i = 0, ii = data.length; i < ii; i++) {\n var elem = data[i];\n\n if (isArray(elem)) {\n data[i] = preprocess(elem);\n } else if (elem && elem.isMatrix === true) {\n data[i] = preprocess(elem.valueOf());\n }\n }\n\n return data;\n }\n\n return DenseMatrix;\n}, {\n isClass: true\n});","import { clone as objectClone } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'clone';\nvar dependencies = ['typed'];\nexport var createClone = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Clone an object. Will make a deep copy of the data.\n *\n * Syntax:\n *\n * math.clone(x)\n *\n * Examples:\n *\n * math.clone(3.5) // returns number 3.5\n * math.clone(math.complex('2-4i') // returns Complex 2 - 4i\n * math.clone(math.unit(45, 'deg')) // returns Unit 45 deg\n * math.clone([[1, 2], [3, 4]]) // returns Array [[1, 2], [3, 4]]\n * math.clone(\"hello world\") // returns string \"hello world\"\n *\n * @param {*} x Object to be cloned\n * @return {*} A clone of object x\n */\n return typed(name, {\n any: objectClone\n });\n});","import { isCollection, isMatrix } from './is.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { arraySize } from './array.js';\n/**\n * Test whether an array contains collections\n * @param {Array} array\n * @returns {boolean} Returns true when the array contains one or multiple\n * collections (Arrays or Matrices). Returns false otherwise.\n */\n\nexport function containsCollections(array) {\n for (var i = 0; i < array.length; i++) {\n if (isCollection(array[i])) {\n return true;\n }\n }\n\n return false;\n}\n/**\n * Recursively loop over all elements in a given multi dimensional array\n * and invoke the callback on each of the elements.\n * @param {Array | Matrix} array\n * @param {Function} callback The callback method is invoked with one\n * parameter: the current element in the array\n */\n\nexport function deepForEach(array, callback) {\n if (isMatrix(array)) {\n array = array.valueOf();\n }\n\n for (var i = 0, ii = array.length; i < ii; i++) {\n var value = array[i];\n\n if (Array.isArray(value)) {\n deepForEach(value, callback);\n } else {\n callback(value);\n }\n }\n}\n/**\n * Execute the callback function element wise for each element in array and any\n * nested array\n * Returns an array with the results\n * @param {Array | Matrix} array\n * @param {Function} callback The callback is called with two parameters:\n * value1 and value2, which contain the current\n * element of both arrays.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {Array | Matrix} res\n */\n\nexport function deepMap(array, callback, skipZeros) {\n if (array && typeof array.map === 'function') {\n // TODO: replace array.map with a for loop to improve performance\n return array.map(function (x) {\n return deepMap(x, callback, skipZeros);\n });\n } else {\n return callback(array);\n }\n}\n/**\n * Reduce a given matrix or array to a new matrix or\n * array with one less dimension, applying the given\n * callback in the selected dimension.\n * @param {Array | Matrix} mat\n * @param {number} dim\n * @param {Function} callback\n * @return {Array | Matrix} res\n */\n\nexport function reduce(mat, dim, callback) {\n var size = Array.isArray(mat) ? arraySize(mat) : mat.size();\n\n if (dim < 0 || dim >= size.length) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, size.length);\n }\n\n if (isMatrix(mat)) {\n return mat.create(_reduce(mat.valueOf(), dim, callback));\n } else {\n return _reduce(mat, dim, callback);\n }\n}\n/**\n * Recursively reduce a matrix\n * @param {Array} mat\n * @param {number} dim\n * @param {Function} callback\n * @returns {Array} ret\n * @private\n */\n\nfunction _reduce(mat, dim, callback) {\n var i, ret, val, tran;\n\n if (dim <= 0) {\n if (!Array.isArray(mat[0])) {\n val = mat[0];\n\n for (i = 1; i < mat.length; i++) {\n val = callback(val, mat[i]);\n }\n\n return val;\n } else {\n tran = _switch(mat);\n ret = [];\n\n for (i = 0; i < tran.length; i++) {\n ret[i] = _reduce(tran[i], dim - 1, callback);\n }\n\n return ret;\n }\n } else {\n ret = [];\n\n for (i = 0; i < mat.length; i++) {\n ret[i] = _reduce(mat[i], dim - 1, callback);\n }\n\n return ret;\n }\n}\n/**\n * Transpose a matrix\n * @param {Array} mat\n * @returns {Array} ret\n * @private\n */\n\n\nfunction _switch(mat) {\n var I = mat.length;\n var J = mat[0].length;\n var i, j;\n var ret = [];\n\n for (j = 0; j < J; j++) {\n var tmp = [];\n\n for (i = 0; i < I; i++) {\n tmp.push(mat[i][j]);\n }\n\n ret.push(tmp);\n }\n\n return ret;\n} // TODO: document function scatter\n\n\nexport function scatter(a, j, w, x, u, mark, cindex, f, inverse, update, value) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr; // vars\n\n var k, k0, k1, i; // check we need to process values (pattern matrix)\n\n if (x) {\n // values in j\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k]; // check value exists in current j\n\n if (w[i] !== mark) {\n // i is new entry in j\n w[i] = mark; // add i to pattern of C\n\n cindex.push(i); // x(i) = A, check we need to call function this time\n\n if (update) {\n // copy value to workspace calling callback function\n x[i] = inverse ? f(avalues[k], value) : f(value, avalues[k]); // function was called on current row\n\n u[i] = mark;\n } else {\n // copy value to workspace\n x[i] = avalues[k];\n }\n } else {\n // i exists in C already\n x[i] = inverse ? f(avalues[k], x[i]) : f(x[i], avalues[k]); // function was called on current row\n\n u[i] = mark;\n }\n }\n } else {\n // values in j\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k]; // check value exists in current j\n\n if (w[i] !== mark) {\n // i is new entry in j\n w[i] = mark; // add i to pattern of C\n\n cindex.push(i);\n } else {\n // indicate function was called on current row\n u[i] = mark;\n }\n }\n }\n}","import { deepMap } from '../../utils/collection.js';\nimport { isInteger as isIntegerNumber } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isInteger';\nvar dependencies = ['typed'];\nexport var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is an integer number.\n * The function supports `number`, `BigNumber`, and `Fraction`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isInteger(x)\n *\n * Examples:\n *\n * math.isInteger(2) // returns true\n * math.isInteger(0) // returns true\n * math.isInteger(0.5) // returns false\n * math.isInteger(math.bignumber(500)) // returns true\n * math.isInteger(math.fraction(4)) // returns true\n * math.isInteger('3') // returns true\n * math.isInteger([3, 0.5, -2]) // returns [true, false, true]\n * math.isInteger(math.complex('2-4i') // throws an error\n *\n * See also:\n *\n * isNumeric, isPositive, isNegative, isZero\n *\n * @param {number | BigNumber | Fraction | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` contains a numeric, integer value.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isIntegerNumber,\n // TODO: what to do with isInteger(add(0.1, 0.2)) ?\n BigNumber: function BigNumber(x) {\n return x.isInt();\n },\n Fraction: function Fraction(x) {\n return x.d === 1 && isFinite(x.n);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { isInteger } from '../../utils/number.js';\nvar n1 = 'number';\nexport function isIntegerNumber(x) {\n return isInteger(x);\n}\nisIntegerNumber.signature = n1;\nexport function isNegativeNumber(x) {\n return x < 0;\n}\nisNegativeNumber.signature = n1;\nexport function isPositiveNumber(x) {\n return x > 0;\n}\nisPositiveNumber.signature = n1;\nexport function isZeroNumber(x) {\n return x === 0;\n}\nisZeroNumber.signature = n1;\nexport function isNaNNumber(x) {\n return Number.isNaN(x);\n}\nisNaNNumber.signature = n1;","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNegativeNumber } from '../../plain/number/index.js';\nvar name = 'isNegative';\nvar dependencies = ['typed'];\nexport var createIsNegative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is negative: smaller than zero.\n * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNegative(x)\n *\n * Examples:\n *\n * math.isNegative(3) // returns false\n * math.isNegative(-2) // returns true\n * math.isNegative(0) // returns false\n * math.isNegative(-0) // returns false\n * math.isNegative(math.bignumber(2)) // returns false\n * math.isNegative(math.fraction(-2, 5)) // returns true\n * math.isNegative('-2') // returns true\n * math.isNegative([2, 0, -3]') // returns [false, false, true]\n *\n * See also:\n *\n * isNumeric, isPositive, isZero, isInteger\n *\n * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isNegativeNumber,\n BigNumber: function BigNumber(x) {\n return x.isNeg() && !x.isZero() && !x.isNaN();\n },\n Fraction: function Fraction(x) {\n return x.s < 0; // It's enough to decide on the sign\n },\n Unit: function Unit(x) {\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isNumeric';\nvar dependencies = ['typed'];\nexport var createIsNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is an numeric value.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNumeric(x)\n *\n * Examples:\n *\n * math.isNumeric(2) // returns true\n * math.isNumeric('2') // returns false\n * math.hasNumericValue('2') // returns true\n * math.isNumeric(0) // returns true\n * math.isNumeric(math.bignumber(500)) // returns true\n * math.isNumeric(math.fraction(4)) // returns true\n * math.isNumeric(math.complex('2-4i') // returns false\n * math.isNumeric([2.3, 'foo', false]) // returns [true, false, true]\n *\n * See also:\n *\n * isZero, isPositive, isNegative, isInteger, hasNumericValue\n *\n * @param {*} x Value to be tested\n * @return {boolean} Returns true when `x` is a `number`, `BigNumber`,\n * `Fraction`, or `boolean`. Returns false for other types.\n * Throws an error in case of unknown types.\n */\n return typed(name, {\n 'number | BigNumber | Fraction | boolean': function numberBigNumberFractionBoolean() {\n return true;\n },\n 'Complex | Unit | string | null | undefined | Node': function ComplexUnitStringNullUndefinedNode() {\n return false;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'hasNumericValue';\nvar dependencies = ['typed', 'isNumeric'];\nexport var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNumeric\n } = _ref;\n\n /**\n * Test whether a value is an numeric value.\n *\n * In case of a string, true is returned if the string contains a numeric value.\n *\n * Syntax:\n *\n * math.hasNumericValue(x)\n *\n * Examples:\n *\n * math.hasNumericValue(2) // returns true\n * math.hasNumericValue('2') // returns true\n * math.isNumeric('2') // returns false\n * math.hasNumericValue(0) // returns true\n * math.hasNumericValue(math.bignumber(500)) // returns true\n * math.hasNumericValue(math.fraction(4)) // returns true\n * math.hasNumericValue(math.complex('2-4i') // returns false\n * math.hasNumericValue([2.3, 'foo', false]) // returns [true, false, true]\n *\n * See also:\n *\n * isZero, isPositive, isNegative, isInteger, isNumeric\n *\n * @param {*} x Value to be tested\n * @return {boolean} Returns true when `x` is a `number`, `BigNumber`,\n * `Fraction`, `Boolean`, or a `String` containing number. Returns false for other types.\n * Throws an error in case of unknown types.\n */\n return typed(name, {\n string: function string(x) {\n return x.trim().length > 0 && !isNaN(Number(x));\n },\n any: function any(x) {\n return isNumeric(x);\n }\n });\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isPositiveNumber } from '../../plain/number/index.js';\nvar name = 'isPositive';\nvar dependencies = ['typed'];\nexport var createIsPositive = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is positive: larger than zero.\n * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isPositive(x)\n *\n * Examples:\n *\n * math.isPositive(3) // returns true\n * math.isPositive(-2) // returns false\n * math.isPositive(0) // returns false\n * math.isPositive(-0) // returns false\n * math.isPositive(0.5) // returns true\n * math.isPositive(math.bignumber(2)) // returns true\n * math.isPositive(math.fraction(-2, 5)) // returns false\n * math.isPositive(math.fraction(1,3)) // returns false\n * math.isPositive('2') // returns true\n * math.isPositive([2, 0, -3]) // returns [true, false, false]\n *\n * See also:\n *\n * isNumeric, isZero, isNegative, isInteger\n *\n * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isPositiveNumber,\n BigNumber: function BigNumber(x) {\n return !x.isNeg() && !x.isZero() && !x.isNaN();\n },\n Fraction: function Fraction(x) {\n return x.s > 0 && x.n > 0;\n },\n Unit: function Unit(x) {\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isZeroNumber } from '../../plain/number/index.js';\nvar name = 'isZero';\nvar dependencies = ['typed'];\nexport var createIsZero = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is zero.\n * The function can check for zero for types `number`, `BigNumber`, `Fraction`,\n * `Complex`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isZero(x)\n *\n * Examples:\n *\n * math.isZero(0) // returns true\n * math.isZero(2) // returns false\n * math.isZero(0.5) // returns false\n * math.isZero(math.bignumber(0)) // returns true\n * math.isZero(math.fraction(0)) // returns true\n * math.isZero(math.fraction(1,3)) // returns false\n * math.isZero(math.complex('2 - 4i') // returns false\n * math.isZero(math.complex('0i') // returns true\n * math.isZero('0') // returns true\n * math.isZero('2') // returns false\n * math.isZero([2, 0, -3]') // returns [false, true, false]\n *\n * See also:\n *\n * isNumeric, isPositive, isNegative, isInteger\n *\n * @param {number | BigNumber | Complex | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isZeroNumber,\n BigNumber: function BigNumber(x) {\n return x.isZero();\n },\n Complex: function Complex(x) {\n return x.re === 0 && x.im === 0;\n },\n Fraction: function Fraction(x) {\n return x.d === 1 && x.n === 0;\n },\n Unit: function Unit(x) {\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNaNNumber } from '../../plain/number/index.js';\nvar name = 'isNaN';\nvar dependencies = ['typed'];\nexport var createIsNaN = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is NaN (not a number).\n * The function supports types `number`, `BigNumber`, `Fraction`, `Unit` and `Complex`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNaN(x)\n *\n * Examples:\n *\n * math.isNaN(3) // returns false\n * math.isNaN(NaN) // returns true\n * math.isNaN(0) // returns false\n * math.isNaN(math.bignumber(NaN)) // returns true\n * math.isNaN(math.bignumber(0)) // returns false\n * math.isNaN(math.fraction(-2, 5)) // returns false\n * math.isNaN('-2') // returns false\n * math.isNaN([2, 0, -3, NaN]') // returns [false, false, false, true]\n *\n * See also:\n *\n * isNumeric, isNegative, isPositive, isZero, isInteger\n *\n * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is NaN.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isNaNNumber,\n BigNumber: function BigNumber(x) {\n return x.isNaN();\n },\n Fraction: function Fraction(x) {\n return false;\n },\n Complex: function Complex(x) {\n return x.isNaN();\n },\n Unit: function Unit(x) {\n return Number.isNaN(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, Number.isNaN);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { typeOf as _typeOf } from '../../utils/is.js';\nvar name = 'typeOf';\nvar dependencies = ['typed'];\nexport var createTypeOf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Determine the type of a variable.\n *\n * Function `typeOf` recognizes the following types of objects:\n *\n * Object | Returns | Example\n * ---------------------- | ------------- | ------------------------------------------\n * null | `'null'` | `math.typeOf(null)`\n * number | `'number'` | `math.typeOf(3.5)`\n * boolean | `'boolean'` | `math.typeOf(true)`\n * string | `'string'` | `math.typeOf('hello world')`\n * Array | `'Array'` | `math.typeOf([1, 2, 3])`\n * Date | `'Date'` | `math.typeOf(new Date())`\n * Function | `'Function'` | `math.typeOf(function () {})`\n * Object | `'Object'` | `math.typeOf({a: 2, b: 3})`\n * RegExp | `'RegExp'` | `math.typeOf(/a regexp/)`\n * undefined | `'undefined'` | `math.typeOf(undefined)`\n * math.BigNumber | `'BigNumber'` | `math.typeOf(math.bignumber('2.3e500'))`\n * math.Chain | `'Chain'` | `math.typeOf(math.chain(2))`\n * math.Complex | `'Complex'` | `math.typeOf(math.complex(2, 3))`\n * math.Fraction | `'Fraction'` | `math.typeOf(math.fraction(1, 3))`\n * math.Help | `'Help'` | `math.typeOf(math.help('sqrt'))`\n * math.Help | `'Help'` | `math.typeOf(math.help('sqrt'))`\n * math.Index | `'Index'` | `math.typeOf(math.index(1, 3))`\n * math.Matrix | `'Matrix'` | `math.typeOf(math.matrix([[1,2], [3, 4]]))`\n * math.Range | `'Range'` | `math.typeOf(math.range(0, 10))`\n * math.ResultSet | `'ResultSet'` | `math.typeOf(math.evaluate('a=2\\nb=3'))`\n * math.Unit | `'Unit'` | `math.typeOf(math.unit('45 deg'))`\n * math.AccessorNode | `'AccessorNode'` | `math.typeOf(math.parse('A[2]'))`\n * math.ArrayNode | `'ArrayNode'` | `math.typeOf(math.parse('[1,2,3]'))`\n * math.AssignmentNode | `'AssignmentNode'` | `math.typeOf(math.parse('x=2'))`\n * math.BlockNode | `'BlockNode'` | `math.typeOf(math.parse('a=2; b=3'))`\n * math.ConditionalNode | `'ConditionalNode'` | `math.typeOf(math.parse('x<0 ? -x : x'))`\n * math.ConstantNode | `'ConstantNode'` | `math.typeOf(math.parse('2.3'))`\n * math.FunctionAssignmentNode | `'FunctionAssignmentNode'` | `math.typeOf(math.parse('f(x)=x^2'))`\n * math.FunctionNode | `'FunctionNode'` | `math.typeOf(math.parse('sqrt(4)'))`\n * math.IndexNode | `'IndexNode'` | `math.typeOf(math.parse('A[2]').index)`\n * math.ObjectNode | `'ObjectNode'` | `math.typeOf(math.parse('{a:2}'))`\n * math.ParenthesisNode | `'ParenthesisNode'` | `math.typeOf(math.parse('(2+3)'))`\n * math.RangeNode | `'RangeNode'` | `math.typeOf(math.parse('1:10'))`\n * math.SymbolNode | `'SymbolNode'` | `math.typeOf(math.parse('x'))`\n *\n * Syntax:\n *\n * math.typeOf(x)\n *\n * Examples:\n *\n * math.typeOf(3.5) // returns 'number'\n * math.typeOf(math.complex('2-4i')) // returns 'Complex'\n * math.typeOf(math.unit('45 deg')) // returns 'Unit'\n * math.typeOf('hello world') // returns 'string'\n *\n * @param {*} x The variable for which to test the type.\n * @return {string} Returns the name of the type. Primitive types are lower case,\n * non-primitive types are upper-camel-case.\n * For example 'number', 'string', 'Array', 'Date'.\n */\n return typed(name, {\n any: _typeOf\n });\n});","/**\n * Compares two BigNumbers.\n * @param {BigNumber} x First value to compare\n * @param {BigNumber} y Second value to compare\n * @param {number} [epsilon] The maximum relative difference between x and y\n * If epsilon is undefined or null, the function will\n * test whether x and y are exactly equal.\n * @return {boolean} whether the two numbers are nearly equal\n */\nexport function nearlyEqual(x, y, epsilon) {\n // if epsilon is null or undefined, test whether x and y are exactly equal\n if (epsilon === null || epsilon === undefined) {\n return x.eq(y);\n } // use \"==\" operator, handles infinities\n\n\n if (x.eq(y)) {\n return true;\n } // NaN\n\n\n if (x.isNaN() || y.isNaN()) {\n return false;\n } // at this point x and y should be finite\n\n\n if (x.isFinite() && y.isFinite()) {\n // check numbers are very close, needed when comparing numbers near zero\n var diff = x.minus(y).abs();\n\n if (diff.isZero()) {\n return true;\n } else {\n // use relative error\n var max = x.constructor.max(x.abs(), y.abs());\n return diff.lte(max.times(epsilon));\n }\n } // Infinite and Number or negative Infinite and positive Infinite cases\n\n\n return false;\n}","import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { complexEquals } from '../../utils/complex.js';\nvar name = 'equalScalar';\nvar dependencies = ['typed', 'config'];\nexport var createEqualScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n\n /**\n * Test whether two scalar values are nearly equal.\n *\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Complex} y Second value to compare\n * @return {boolean} Returns true when the compared values are equal, else returns false\n * @private\n */\n return typed(name, {\n 'boolean, boolean': function booleanBoolean(x, y) {\n return x === y;\n },\n 'number, number': function numberNumber(x, y) {\n return nearlyEqual(x, y, config.epsilon);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.eq(y) || bigNearlyEqual(x, y, config.epsilon);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.equals(y);\n },\n 'Complex, Complex': function ComplexComplex(x, y) {\n return complexEquals(x, y, config.epsilon);\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n\n return this(x.value, y.value);\n }\n });\n});\nexport var createEqualScalarNumber = factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return nearlyEqual(x, y, config.epsilon);\n }\n });\n});","import { nearlyEqual } from './number.js';\n/**\n * Test whether two complex values are equal provided a given epsilon.\n * Does not use or change the global Complex.EPSILON setting\n * @param {Complex} x\n * @param {Complex} y\n * @param {number} epsilon\n * @returns {boolean}\n */\n\nexport function complexEquals(x, y, epsilon) {\n return nearlyEqual(x.re, y.re, epsilon) && nearlyEqual(x.im, y.im, epsilon);\n}","import { isArray, isBigNumber, isCollection, isIndex, isMatrix, isNumber, isString, typeOf } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { format } from '../../utils/string.js';\nimport { clone, deepStrictEqual } from '../../utils/object.js';\nimport { arraySize, getArrayDataType, processSizesWildcard, unsqueeze, validateIndex } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nvar name = 'SparseMatrix';\nvar dependencies = ['typed', 'equalScalar', 'Matrix'];\nexport var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar,\n Matrix\n } = _ref;\n\n /**\n * Sparse Matrix implementation. This type implements\n * a [Compressed Column Storage](https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS))\n * format for two-dimensional sparse matrices.\n * @class SparseMatrix\n */\n function SparseMatrix(data, datatype) {\n if (!(this instanceof SparseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n\n if (isMatrix(data)) {\n // create from matrix\n _createFromMatrix(this, data, datatype);\n } else if (data && isArray(data.index) && isArray(data.ptr) && isArray(data.size)) {\n // initialize fields\n this._values = data.values;\n this._index = data.index;\n this._ptr = data.ptr;\n this._size = data.size;\n this._datatype = datatype || data.datatype;\n } else if (isArray(data)) {\n // create from array\n _createFromArray(this, data, datatype);\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._values = [];\n this._index = [];\n this._ptr = [0];\n this._size = [0, 0];\n this._datatype = datatype;\n }\n }\n\n function _createFromMatrix(matrix, source, datatype) {\n // check matrix type\n if (source.type === 'SparseMatrix') {\n // clone arrays\n matrix._values = source._values ? clone(source._values) : undefined;\n matrix._index = clone(source._index);\n matrix._ptr = clone(source._ptr);\n matrix._size = clone(source._size);\n matrix._datatype = datatype || source._datatype;\n } else {\n // build from matrix data\n _createFromArray(matrix, source.valueOf(), datatype || source._datatype);\n }\n }\n\n function _createFromArray(matrix, data, datatype) {\n // initialize fields\n matrix._values = [];\n matrix._index = [];\n matrix._ptr = [];\n matrix._datatype = datatype; // discover rows & columns, do not use math.size() to avoid looping array twice\n\n var rows = data.length;\n var columns = 0; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0;\n\n if (isString(datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [datatype, datatype]) || equalScalar; // convert 0 to the same datatype\n\n zero = typed.convert(0, datatype);\n } // check we have rows (empty array)\n\n\n if (rows > 0) {\n // column index\n var j = 0;\n\n do {\n // store pointer to values index\n matrix._ptr.push(matrix._index.length); // loop rows\n\n\n for (var i = 0; i < rows; i++) {\n // current row\n var row = data[i]; // check row is an array\n\n if (isArray(row)) {\n // update columns if needed (only on first column)\n if (j === 0 && columns < row.length) {\n columns = row.length;\n } // check row has column\n\n\n if (j < row.length) {\n // value\n var v = row[j]; // check value != 0\n\n if (!eq(v, zero)) {\n // store value\n matrix._values.push(v); // index\n\n\n matrix._index.push(i);\n }\n }\n } else {\n // update columns if needed (only on first column)\n if (j === 0 && columns < 1) {\n columns = 1;\n } // check value != 0 (row is a scalar)\n\n\n if (!eq(row, zero)) {\n // store value\n matrix._values.push(row); // index\n\n\n matrix._index.push(i);\n }\n }\n } // increment index\n\n\n j++;\n } while (j < columns);\n } // store number of values in ptr\n\n\n matrix._ptr.push(matrix._index.length); // size\n\n\n matrix._size = [rows, columns];\n }\n\n SparseMatrix.prototype = new Matrix();\n /**\n * Create a new SparseMatrix\n */\n\n SparseMatrix.prototype.createSparseMatrix = function (data, datatype) {\n return new SparseMatrix(data, datatype);\n };\n /**\n * Attach type information\n */\n\n\n SparseMatrix.prototype.type = 'SparseMatrix';\n SparseMatrix.prototype.isSparseMatrix = true;\n /**\n * Get the matrix type\n *\n * Usage:\n * const matrixType = matrix.getDataType() // retrieves the matrix type\n *\n * @memberOf SparseMatrix\n * @return {string} type information; if multiple types are found from the Matrix, it will return \"mixed\"\n */\n\n SparseMatrix.prototype.getDataType = function () {\n return getArrayDataType(this._values, typeOf);\n };\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @memberof SparseMatrix\n * @return {string} The storage format.\n */\n\n\n SparseMatrix.prototype.storage = function () {\n return 'sparse';\n };\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @memberof SparseMatrix\n * @return {string} The datatype.\n */\n\n\n SparseMatrix.prototype.datatype = function () {\n return this._datatype;\n };\n /**\n * Create a new SparseMatrix\n * @memberof SparseMatrix\n * @param {Array} data\n * @param {string} [datatype]\n */\n\n\n SparseMatrix.prototype.create = function (data, datatype) {\n return new SparseMatrix(data, datatype);\n };\n /**\n * Get the matrix density.\n *\n * Usage:\n * const density = matrix.density() // retrieve matrix density\n *\n * @memberof SparseMatrix\n * @return {number} The matrix density.\n */\n\n\n SparseMatrix.prototype.density = function () {\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1]; // calculate density\n\n return rows !== 0 && columns !== 0 ? this._index.length / (rows * columns) : 0;\n };\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @memberof SparseMatrix\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n\n\n SparseMatrix.prototype.subset = function (index, replacement, defaultValue) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke subset on a Pattern only matrix');\n } // check arguments\n\n\n switch (arguments.length) {\n case 1:\n return _getsubset(this, index);\n // intentional fall through\n\n case 2:\n case 3:\n return _setsubset(this, index, replacement, defaultValue);\n\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n\n function _getsubset(matrix, idx) {\n // check idx\n if (!isIndex(idx)) {\n throw new TypeError('Invalid index');\n }\n\n var isScalar = idx.isScalar();\n\n if (isScalar) {\n // return a scalar\n return matrix.get(idx.min());\n } // validate dimensions\n\n\n var size = idx.size();\n\n if (size.length !== matrix._size.length) {\n throw new DimensionError(size.length, matrix._size.length);\n } // vars\n\n\n var i, ii, k, kk; // validate if any of the ranges in the index is out of range\n\n var min = idx.min();\n var max = idx.max();\n\n for (i = 0, ii = matrix._size.length; i < ii; i++) {\n validateIndex(min[i], matrix._size[i]);\n validateIndex(max[i], matrix._size[i]);\n } // matrix arrays\n\n\n var mvalues = matrix._values;\n var mindex = matrix._index;\n var mptr = matrix._ptr; // rows & columns dimensions for result matrix\n\n var rows = idx.dimension(0);\n var columns = idx.dimension(1); // workspace & permutation vector\n\n var w = [];\n var pv = []; // loop rows in resulting matrix\n\n rows.forEach(function (i, r) {\n // update permutation vector\n pv[i] = r[0]; // mark i in workspace\n\n w[i] = true;\n }); // result matrix arrays\n\n var values = mvalues ? [] : undefined;\n var index = [];\n var ptr = []; // loop columns in result matrix\n\n columns.forEach(function (j) {\n // update ptr\n ptr.push(index.length); // loop values in column j\n\n for (k = mptr[j], kk = mptr[j + 1]; k < kk; k++) {\n // row\n i = mindex[k]; // check row is in result matrix\n\n if (w[i] === true) {\n // push index\n index.push(pv[i]); // check we need to process values\n\n if (values) {\n values.push(mvalues[k]);\n }\n }\n }\n }); // update ptr\n\n ptr.push(index.length); // return matrix\n\n return new SparseMatrix({\n values: values,\n index: index,\n ptr: ptr,\n size: size,\n datatype: matrix._datatype\n });\n }\n\n function _setsubset(matrix, index, submatrix, defaultValue) {\n // check index\n if (!index || index.isIndex !== true) {\n throw new TypeError('Invalid index');\n } // get index size and check whether the index contains a single value\n\n\n var iSize = index.size();\n var isScalar = index.isScalar(); // calculate the size of the submatrix, and convert it into an Array if needed\n\n var sSize;\n\n if (isMatrix(submatrix)) {\n // submatrix size\n sSize = submatrix.size(); // use array representation\n\n submatrix = submatrix.toArray();\n } else {\n // get submatrix size (array, scalar)\n sSize = arraySize(submatrix);\n } // check index is a scalar\n\n\n if (isScalar) {\n // verify submatrix is a scalar\n if (sSize.length !== 0) {\n throw new TypeError('Scalar expected');\n } // set value\n\n\n matrix.set(index.min(), submatrix, defaultValue);\n } else {\n // validate dimensions, index size must be one or two dimensions\n if (iSize.length !== 1 && iSize.length !== 2) {\n throw new DimensionError(iSize.length, matrix._size.length, '<');\n } // check submatrix and index have the same dimensions\n\n\n if (sSize.length < iSize.length) {\n // calculate number of missing outer dimensions\n var i = 0;\n var outer = 0;\n\n while (iSize[i] === 1 && sSize[i] === 1) {\n i++;\n }\n\n while (iSize[i] === 1) {\n outer++;\n i++;\n } // unsqueeze both outer and inner dimensions\n\n\n submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);\n } // check whether the size of the submatrix matches the index size\n\n\n if (!deepStrictEqual(iSize, sSize)) {\n throw new DimensionError(iSize, sSize, '>');\n } // offsets\n\n\n var x0 = index.min()[0];\n var y0 = index.min()[1]; // submatrix rows and columns\n\n var m = sSize[0];\n var n = sSize[1]; // loop submatrix\n\n for (var x = 0; x < m; x++) {\n // loop columns\n for (var y = 0; y < n; y++) {\n // value at i, j\n var v = submatrix[x][y]; // invoke set (zero value will remove entry from matrix)\n\n matrix.set([x + x0, y + y0], v, defaultValue);\n }\n }\n }\n\n return matrix;\n }\n /**\n * Get a single element from the matrix.\n * @memberof SparseMatrix\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n\n\n SparseMatrix.prototype.get = function (index) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n } // check it is a pattern matrix\n\n\n if (!this._values) {\n throw new Error('Cannot invoke get on a Pattern only matrix');\n } // row and column\n\n\n var i = index[0];\n var j = index[1]; // check i, j are valid\n\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[1]); // find value index\n\n var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index); // check k is prior to next column k and it is in the correct row\n\n\n if (k < this._ptr[j + 1] && this._index[k] === i) {\n return this._values[k];\n }\n\n return 0;\n };\n /**\n * Replace a single element in the matrix.\n * @memberof SparseMatrix\n * @param {number[]} index Zero-based index\n * @param {*} v\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be set to zero.\n * @return {SparseMatrix} self\n */\n\n\n SparseMatrix.prototype.set = function (index, v, defaultValue) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n } // check it is a pattern matrix\n\n\n if (!this._values) {\n throw new Error('Cannot invoke set on a Pattern only matrix');\n } // row and column\n\n\n var i = index[0];\n var j = index[1]; // rows & columns\n\n var rows = this._size[0];\n var columns = this._size[1]; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0;\n\n if (isString(this._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [this._datatype, this._datatype]) || equalScalar; // convert 0 to the same datatype\n\n zero = typed.convert(0, this._datatype);\n } // check we need to resize matrix\n\n\n if (i > rows - 1 || j > columns - 1) {\n // resize matrix\n _resize(this, Math.max(i + 1, rows), Math.max(j + 1, columns), defaultValue); // update rows & columns\n\n\n rows = this._size[0];\n columns = this._size[1];\n } // check i, j are valid\n\n\n validateIndex(i, rows);\n validateIndex(j, columns); // find value index\n\n var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index); // check k is prior to next column k and it is in the correct row\n\n\n if (k < this._ptr[j + 1] && this._index[k] === i) {\n // check value != 0\n if (!eq(v, zero)) {\n // update value\n this._values[k] = v;\n } else {\n // remove value from matrix\n _remove(k, j, this._values, this._index, this._ptr);\n }\n } else {\n // insert value @ (i, j)\n _insert(k, i, j, v, this._values, this._index, this._ptr);\n }\n\n return this;\n };\n\n function _getValueIndex(i, top, bottom, index) {\n // check row is on the bottom side\n if (bottom - top === 0) {\n return bottom;\n } // loop rows [top, bottom[\n\n\n for (var r = top; r < bottom; r++) {\n // check we found value index\n if (index[r] === i) {\n return r;\n }\n } // we did not find row\n\n\n return top;\n }\n\n function _remove(k, j, values, index, ptr) {\n // remove value @ k\n values.splice(k, 1);\n index.splice(k, 1); // update pointers\n\n for (var x = j + 1; x < ptr.length; x++) {\n ptr[x]--;\n }\n }\n\n function _insert(k, i, j, v, values, index, ptr) {\n // insert value\n values.splice(k, 0, v); // update row for k\n\n index.splice(k, 0, i); // update column pointers\n\n for (var x = j + 1; x < ptr.length; x++) {\n ptr[x]++;\n }\n }\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @memberof SparseMatrix\n * @param {number[] | Matrix} size The new size the matrix should have.\n * Since sparse matrices are always two-dimensional,\n * size must be two numbers in either an array or a matrix\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n\n\n SparseMatrix.prototype.resize = function (size, defaultValue, copy) {\n // validate arguments\n if (!isCollection(size)) {\n throw new TypeError('Array or Matrix expected');\n } // SparseMatrix input is always 2d, flatten this into 1d if it's indeed a vector\n\n\n var sizeArray = size.valueOf().map(value => {\n return Array.isArray(value) && value.length === 1 ? value[0] : value;\n });\n\n if (sizeArray.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n } // check sizes\n\n\n sizeArray.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value < 0) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(sizeArray) + ')');\n }\n }); // matrix to resize\n\n var m = copy ? this.clone() : this; // resize matrix\n\n return _resize(m, sizeArray[0], sizeArray[1], defaultValue);\n };\n\n function _resize(matrix, rows, columns, defaultValue) {\n // value to insert at the time of growing matrix\n var value = defaultValue || 0; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0;\n\n if (isString(matrix._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar; // convert 0 to the same datatype\n\n zero = typed.convert(0, matrix._datatype); // convert value to the same datatype\n\n value = typed.convert(value, matrix._datatype);\n } // should we insert the value?\n\n\n var ins = !eq(value, zero); // old columns and rows\n\n var r = matrix._size[0];\n var c = matrix._size[1];\n var i, j, k; // check we need to increase columns\n\n if (columns > c) {\n // loop new columns\n for (j = c; j < columns; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._values.length; // check we need to insert matrix._values\n\n if (ins) {\n // loop rows\n for (i = 0; i < r; i++) {\n // add new matrix._values\n matrix._values.push(value); // update matrix._index\n\n\n matrix._index.push(i);\n }\n }\n } // store number of matrix._values in matrix._ptr\n\n\n matrix._ptr[columns] = matrix._values.length;\n } else if (columns < c) {\n // truncate matrix._ptr\n matrix._ptr.splice(columns + 1, c - columns); // truncate matrix._values and matrix._index\n\n\n matrix._values.splice(matrix._ptr[columns], matrix._values.length);\n\n matrix._index.splice(matrix._ptr[columns], matrix._index.length);\n } // update columns\n\n\n c = columns; // check we need to increase rows\n\n if (rows > r) {\n // check we have to insert values\n if (ins) {\n // inserts\n var n = 0; // loop columns\n\n for (j = 0; j < c; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._ptr[j] + n; // where to insert matrix._values\n\n k = matrix._ptr[j + 1] + n; // pointer\n\n var p = 0; // loop new rows, initialize pointer\n\n for (i = r; i < rows; i++, p++) {\n // add value\n matrix._values.splice(k + p, 0, value); // update matrix._index\n\n\n matrix._index.splice(k + p, 0, i); // increment inserts\n\n\n n++;\n }\n } // store number of matrix._values in matrix._ptr\n\n\n matrix._ptr[c] = matrix._values.length;\n }\n } else if (rows < r) {\n // deletes\n var d = 0; // loop columns\n\n for (j = 0; j < c; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._ptr[j] - d; // where matrix._values start for next column\n\n var k0 = matrix._ptr[j];\n var k1 = matrix._ptr[j + 1] - d; // loop matrix._index\n\n for (k = k0; k < k1; k++) {\n // row\n i = matrix._index[k]; // check we need to delete value and matrix._index\n\n if (i > rows - 1) {\n // remove value\n matrix._values.splice(k, 1); // remove item from matrix._index\n\n\n matrix._index.splice(k, 1); // increase deletes\n\n\n d++;\n }\n }\n } // update matrix._ptr for current column\n\n\n matrix._ptr[j] = matrix._values.length;\n } // update matrix._size\n\n\n matrix._size[0] = rows;\n matrix._size[1] = columns; // return matrix\n\n return matrix;\n }\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * NOTE: This might be better suited to copy by default, instead of modifying\n * in place. For now, it operates in place to remain consistent with\n * resize().\n *\n * @memberof SparseMatrix\n * @param {number[]} sizes The new size the matrix should have.\n * Since sparse matrices are always two-dimensional,\n * size must be two numbers in either an array or a matrix\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n\n\n SparseMatrix.prototype.reshape = function (sizes, copy) {\n // validate arguments\n if (!isArray(sizes)) {\n throw new TypeError('Array expected');\n }\n\n if (sizes.length !== 2) {\n throw new Error('Sparse matrices can only be reshaped in two dimensions');\n } // check sizes\n\n\n sizes.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value <= -2 || value === 0) {\n throw new TypeError('Invalid size, must contain positive integers or -1 ' + '(size: ' + format(sizes) + ')');\n }\n });\n var currentLength = this._size[0] * this._size[1];\n sizes = processSizesWildcard(sizes, currentLength);\n var newLength = sizes[0] * sizes[1]; // m * n must not change\n\n if (currentLength !== newLength) {\n throw new Error('Reshaping sparse matrix will result in the wrong number of elements');\n } // matrix to reshape\n\n\n var m = copy ? this.clone() : this; // return unchanged if the same shape\n\n if (this._size[0] === sizes[0] && this._size[1] === sizes[1]) {\n return m;\n } // Convert to COO format (generate a column index)\n\n\n var colIndex = [];\n\n for (var i = 0; i < m._ptr.length; i++) {\n for (var j = 0; j < m._ptr[i + 1] - m._ptr[i]; j++) {\n colIndex.push(i);\n }\n } // Clone the values array\n\n\n var values = m._values.slice(); // Clone the row index array\n\n\n var rowIndex = m._index.slice(); // Transform the (row, column) indices\n\n\n for (var _i = 0; _i < m._index.length; _i++) {\n var r1 = rowIndex[_i];\n var c1 = colIndex[_i];\n var flat = r1 * m._size[1] + c1;\n colIndex[_i] = flat % sizes[1];\n rowIndex[_i] = Math.floor(flat / sizes[1]);\n } // Now reshaping is supposed to preserve the row-major order, BUT these sparse matrices are stored\n // in column-major order, so we have to reorder the value array now. One option is to use a multisort,\n // sorting several arrays based on some other array.\n // OR, we could easily just:\n // 1. Remove all values from the matrix\n\n\n m._values.length = 0;\n m._index.length = 0;\n m._ptr.length = sizes[1] + 1;\n m._size = sizes.slice();\n\n for (var _i2 = 0; _i2 < m._ptr.length; _i2++) {\n m._ptr[_i2] = 0;\n } // 2. Re-insert all elements in the proper order (simplified code from SparseMatrix.prototype.set)\n // This step is probably the most time-consuming\n\n\n for (var h = 0; h < values.length; h++) {\n var _i3 = rowIndex[h];\n var _j = colIndex[h];\n var v = values[h];\n\n var k = _getValueIndex(_i3, m._ptr[_j], m._ptr[_j + 1], m._index);\n\n _insert(k, _i3, _j, v, m._values, m._index, m._ptr);\n } // The value indices are inserted out of order, but apparently that's... still OK?\n\n\n return m;\n };\n /**\n * Create a clone of the matrix\n * @memberof SparseMatrix\n * @return {SparseMatrix} clone\n */\n\n\n SparseMatrix.prototype.clone = function () {\n var m = new SparseMatrix({\n values: this._values ? clone(this._values) : undefined,\n index: clone(this._index),\n ptr: clone(this._ptr),\n size: clone(this._size),\n datatype: this._datatype\n });\n return m;\n };\n /**\n * Retrieve the size of the matrix.\n * @memberof SparseMatrix\n * @returns {number[]} size\n */\n\n\n SparseMatrix.prototype.size = function () {\n return this._size.slice(0); // copy the Array\n };\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @memberof SparseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {SparseMatrix} matrix\n */\n\n\n SparseMatrix.prototype.map = function (callback, skipZeros) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke map on a Pattern only matrix');\n } // matrix instance\n\n\n var me = this; // rows and columns\n\n var rows = this._size[0];\n var columns = this._size[1]; // invoke callback\n\n var invoke = function invoke(v, i, j) {\n // invoke callback\n return callback(v, [i, j], me);\n }; // invoke _map\n\n\n return _map(this, 0, rows - 1, 0, columns - 1, invoke, skipZeros);\n };\n /**\n * Create a new matrix with the results of the callback function executed on the interval\n * [minRow..maxRow, minColumn..maxColumn].\n */\n\n\n function _map(matrix, minRow, maxRow, minColumn, maxColumn, callback, skipZeros) {\n // result arrays\n var values = [];\n var index = [];\n var ptr = []; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0;\n\n if (isString(matrix._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar; // convert 0 to the same datatype\n\n zero = typed.convert(0, matrix._datatype);\n } // invoke callback\n\n\n var invoke = function invoke(v, x, y) {\n // invoke callback\n v = callback(v, x, y); // check value != 0\n\n if (!eq(v, zero)) {\n // store value\n values.push(v); // index\n\n index.push(x);\n }\n }; // loop columns\n\n\n for (var j = minColumn; j <= maxColumn; j++) {\n // store pointer to values index\n ptr.push(values.length); // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n\n var k0 = matrix._ptr[j];\n var k1 = matrix._ptr[j + 1];\n\n if (skipZeros) {\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = matrix._index[k]; // check i is in range\n\n if (i >= minRow && i <= maxRow) {\n // value @ k\n invoke(matrix._values[k], i - minRow, j - minColumn);\n }\n }\n } else {\n // create a cache holding all defined values\n var _values = {};\n\n for (var _k = k0; _k < k1; _k++) {\n var _i4 = matrix._index[_k];\n _values[_i4] = matrix._values[_k];\n } // loop over all rows (indexes can be unordered so we can't use that),\n // and either read the value or zero\n\n\n for (var _i5 = minRow; _i5 <= maxRow; _i5++) {\n var value = _i5 in _values ? _values[_i5] : 0;\n invoke(value, _i5 - minRow, j - minColumn);\n }\n }\n } // store number of values in ptr\n\n\n ptr.push(values.length); // return sparse matrix\n\n return new SparseMatrix({\n values: values,\n index: index,\n ptr: ptr,\n size: [maxRow - minRow + 1, maxColumn - minColumn + 1]\n });\n }\n /**\n * Execute a callback function on each entry of the matrix.\n * @memberof SparseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n * If false, the indices are guaranteed to be in order,\n * if true, the indices can be unordered.\n */\n\n\n SparseMatrix.prototype.forEach = function (callback, skipZeros) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke forEach on a Pattern only matrix');\n } // matrix instance\n\n\n var me = this; // rows and columns\n\n var rows = this._size[0];\n var columns = this._size[1]; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n\n if (skipZeros) {\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k]; // value @ k\n\n callback(this._values[k], [i, j], me);\n }\n } else {\n // create a cache holding all defined values\n var values = {};\n\n for (var _k2 = k0; _k2 < k1; _k2++) {\n var _i6 = this._index[_k2];\n values[_i6] = this._values[_k2];\n } // loop over all rows (indexes can be unordered so we can't use that),\n // and either read the value or zero\n\n\n for (var _i7 = 0; _i7 < rows; _i7++) {\n var value = _i7 in values ? values[_i7] : 0;\n callback(value, [_i7, j], me);\n }\n }\n }\n };\n /**\n * Iterate over the matrix elements, skipping zeros\n * @return {Iterable<{ value, index: number[] }>}\n */\n\n\n SparseMatrix.prototype[Symbol.iterator] = function* () {\n if (!this._values) {\n throw new Error('Cannot iterate a Pattern only matrix');\n }\n\n var columns = this._size[1];\n\n for (var j = 0; j < columns; j++) {\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n yield {\n value: this._values[k],\n index: [i, j]\n };\n }\n }\n };\n /**\n * Create an Array with a copy of the data of the SparseMatrix\n * @memberof SparseMatrix\n * @returns {Array} array\n */\n\n\n SparseMatrix.prototype.toArray = function () {\n return _toArray(this._values, this._index, this._ptr, this._size, true);\n };\n /**\n * Get the primitive value of the SparseMatrix: a two dimensions array\n * @memberof SparseMatrix\n * @returns {Array} array\n */\n\n\n SparseMatrix.prototype.valueOf = function () {\n return _toArray(this._values, this._index, this._ptr, this._size, false);\n };\n\n function _toArray(values, index, ptr, size, copy) {\n // rows and columns\n var rows = size[0];\n var columns = size[1]; // result\n\n var a = []; // vars\n\n var i, j; // initialize array\n\n for (i = 0; i < rows; i++) {\n a[i] = [];\n\n for (j = 0; j < columns; j++) {\n a[i][j] = 0;\n }\n } // loop columns\n\n\n for (j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1]; // loop k within [k0, k1[\n\n for (var k = k0; k < k1; k++) {\n // row index\n i = index[k]; // set value (use one for pattern matrix)\n\n a[i][j] = values ? copy ? clone(values[k]) : values[k] : 1;\n }\n }\n\n return a;\n }\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @memberof SparseMatrix\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n\n\n SparseMatrix.prototype.format = function (options) {\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1]; // density\n\n var density = this.density(); // rows & columns\n\n var str = 'Sparse Matrix [' + format(rows, options) + ' x ' + format(columns, options) + '] density: ' + format(density, options) + '\\n'; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1]; // loop k within [k0, k1[\n\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k]; // append value\n\n str += '\\n (' + format(i, options) + ', ' + format(j, options) + ') ==> ' + (this._values ? format(this._values[k], options) : 'X');\n }\n }\n\n return str;\n };\n /**\n * Get a string representation of the matrix\n * @memberof SparseMatrix\n * @returns {string} str\n */\n\n\n SparseMatrix.prototype.toString = function () {\n return format(this.toArray());\n };\n /**\n * Get a JSON representation of the matrix\n * @memberof SparseMatrix\n * @returns {Object}\n */\n\n\n SparseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'SparseMatrix',\n values: this._values,\n index: this._index,\n ptr: this._ptr,\n size: this._size,\n datatype: this._datatype\n };\n };\n /**\n * Get the kth Matrix diagonal.\n *\n * @memberof SparseMatrix\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will retrieved.\n *\n * @returns {Matrix} The matrix vector with the diagonal values.\n */\n\n\n SparseMatrix.prototype.diagonal = function (k) {\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n } // is must be an integer\n\n\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0; // rows & columns\n\n var rows = this._size[0];\n var columns = this._size[1]; // number diagonal values\n\n var n = Math.min(rows - kSub, columns - kSuper); // diagonal arrays\n\n var values = [];\n var index = [];\n var ptr = []; // initial ptr value\n\n ptr[0] = 0; // loop columns\n\n for (var j = kSuper; j < columns && values.length < n; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1]; // loop x within [k0, k1[\n\n for (var x = k0; x < k1; x++) {\n // row index\n var i = this._index[x]; // check row\n\n if (i === j - kSuper + kSub) {\n // value on this column\n values.push(this._values[x]); // store row\n\n index[values.length - 1] = i - kSub; // exit loop\n\n break;\n }\n }\n } // close ptr\n\n\n ptr.push(values.length); // return matrix\n\n return new SparseMatrix({\n values: values,\n index: index,\n ptr: ptr,\n size: [n, 1]\n });\n };\n /**\n * Generate a matrix from a JSON object\n * @memberof SparseMatrix\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SparseMatrix\", \"values\": [], \"index\": [], \"ptr\": [], \"size\": []}`,\n * where mathjs is optional\n * @returns {SparseMatrix}\n */\n\n\n SparseMatrix.fromJSON = function (json) {\n return new SparseMatrix(json);\n };\n /**\n * Create a diagonal matrix.\n *\n * @memberof SparseMatrix\n * @param {Array} size The matrix size.\n * @param {number | Array | Matrix } value The values for the diagonal.\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will be filled in.\n * @param {number} [defaultValue] The default value for non-diagonal\n * @param {string} [datatype] The Matrix datatype, values must be of this datatype.\n *\n * @returns {SparseMatrix}\n */\n\n\n SparseMatrix.diagonal = function (size, value, k, defaultValue, datatype) {\n if (!isArray(size)) {\n throw new TypeError('Array expected, size parameter');\n }\n\n if (size.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n } // map size & validate\n\n\n size = size.map(function (s) {\n // check it is a big number\n if (isBigNumber(s)) {\n // convert it\n s = s.toNumber();\n } // validate arguments\n\n\n if (!isNumber(s) || !isInteger(s) || s < 1) {\n throw new Error('Size values must be positive integers');\n }\n\n return s;\n }); // validate k if any\n\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n } // is must be an integer\n\n\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n } // equal signature to use\n\n\n var eq = equalScalar; // zero value\n\n var zero = 0;\n\n if (isString(datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [datatype, datatype]) || equalScalar; // convert 0 to the same datatype\n\n zero = typed.convert(0, datatype);\n }\n\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0; // rows and columns\n\n var rows = size[0];\n var columns = size[1]; // number of non-zero items\n\n var n = Math.min(rows - kSub, columns - kSuper); // value extraction function\n\n var _value; // check value\n\n\n if (isArray(value)) {\n // validate array\n if (value.length !== n) {\n // number of values in array must be n\n throw new Error('Invalid value array length');\n } // define function\n\n\n _value = function _value(i) {\n // return value @ i\n return value[i];\n };\n } else if (isMatrix(value)) {\n // matrix size\n var ms = value.size(); // validate matrix\n\n if (ms.length !== 1 || ms[0] !== n) {\n // number of values in array must be n\n throw new Error('Invalid matrix length');\n } // define function\n\n\n _value = function _value(i) {\n // return value @ i\n return value.get([i]);\n };\n } else {\n // define function\n _value = function _value() {\n // return value\n return value;\n };\n } // create arrays\n\n\n var values = [];\n var index = [];\n var ptr = []; // loop items\n\n for (var j = 0; j < columns; j++) {\n // number of rows with value\n ptr.push(values.length); // diagonal index\n\n var i = j - kSuper; // check we need to set diagonal value\n\n if (i >= 0 && i < n) {\n // get value @ i\n var v = _value(i); // check for zero\n\n\n if (!eq(v, zero)) {\n // column\n index.push(i + kSub); // add value\n\n values.push(v);\n }\n }\n } // last value should be number of values\n\n\n ptr.push(values.length); // create SparseMatrix\n\n return new SparseMatrix({\n values: values,\n index: index,\n ptr: ptr,\n size: [rows, columns]\n });\n };\n /**\n * Swap rows i and j in Matrix.\n *\n * @memberof SparseMatrix\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n\n\n SparseMatrix.prototype.swapRows = function (i, j) {\n // check index\n if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {\n throw new Error('Row index must be positive integers');\n } // check dimensions\n\n\n if (this._size.length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n } // validate index\n\n\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[0]); // swap rows\n\n SparseMatrix._swapRows(i, j, this._size[1], this._values, this._index, this._ptr); // return current instance\n\n\n return this;\n };\n /**\n * Loop rows with data in column j.\n *\n * @param {number} j Column\n * @param {Array} values Matrix values\n * @param {Array} index Matrix row indeces\n * @param {Array} ptr Matrix column pointers\n * @param {Function} callback Callback function invoked for every row in column j\n */\n\n\n SparseMatrix._forEachRow = function (j, values, index, ptr, callback) {\n // indeces for column j\n var k0 = ptr[j];\n var k1 = ptr[j + 1]; // loop\n\n for (var k = k0; k < k1; k++) {\n // invoke callback\n callback(index[k], values[k]);\n }\n };\n /**\n * Swap rows x and y in Sparse Matrix data structures.\n *\n * @param {number} x Matrix row index 1\n * @param {number} y Matrix row index 2\n * @param {number} columns Number of columns in matrix\n * @param {Array} values Matrix values\n * @param {Array} index Matrix row indeces\n * @param {Array} ptr Matrix column pointers\n */\n\n\n SparseMatrix._swapRows = function (x, y, columns, values, index, ptr) {\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1]; // find value index @ x\n\n var kx = _getValueIndex(x, k0, k1, index); // find value index @ x\n\n\n var ky = _getValueIndex(y, k0, k1, index); // check both rows exist in matrix\n\n\n if (kx < k1 && ky < k1 && index[kx] === x && index[ky] === y) {\n // swap values (check for pattern matrix)\n if (values) {\n var v = values[kx];\n values[kx] = values[ky];\n values[ky] = v;\n } // next column\n\n\n continue;\n } // check x row exist & no y row\n\n\n if (kx < k1 && index[kx] === x && (ky >= k1 || index[ky] !== y)) {\n // value @ x (check for pattern matrix)\n var vx = values ? values[kx] : undefined; // insert value @ y\n\n index.splice(ky, 0, y);\n\n if (values) {\n values.splice(ky, 0, vx);\n } // remove value @ x (adjust array index if needed)\n\n\n index.splice(ky <= kx ? kx + 1 : kx, 1);\n\n if (values) {\n values.splice(ky <= kx ? kx + 1 : kx, 1);\n } // next column\n\n\n continue;\n } // check y row exist & no x row\n\n\n if (ky < k1 && index[ky] === y && (kx >= k1 || index[kx] !== x)) {\n // value @ y (check for pattern matrix)\n var vy = values ? values[ky] : undefined; // insert value @ x\n\n index.splice(kx, 0, x);\n\n if (values) {\n values.splice(kx, 0, vy);\n } // remove value @ y (adjust array index if needed)\n\n\n index.splice(kx <= ky ? ky + 1 : ky, 1);\n\n if (values) {\n values.splice(kx <= ky ? ky + 1 : ky, 1);\n }\n }\n }\n };\n\n return SparseMatrix;\n}, {\n isClass: true\n});","import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'number';\nvar dependencies = ['typed'];\n/**\n * Separates the radix, integer part, and fractional part of a non decimal number string\n * @param {string} input string to parse\n * @returns {object} the parts of the string or null if not a valid input\n */\n\nfunction getNonDecimalNumberParts(input) {\n var nonDecimalWithRadixMatch = input.match(/(0[box])([0-9a-fA-F]*)\\.([0-9a-fA-F]*)/);\n\n if (nonDecimalWithRadixMatch) {\n var radix = {\n '0b': 2,\n '0o': 8,\n '0x': 16\n }[nonDecimalWithRadixMatch[1]];\n var integerPart = nonDecimalWithRadixMatch[2];\n var fractionalPart = nonDecimalWithRadixMatch[3];\n return {\n input,\n radix,\n integerPart,\n fractionalPart\n };\n } else {\n return null;\n }\n}\n/**\n * Makes a number from a radix, and integer part, and a fractional part\n * @param {parts} [x] parts of the number string (from getNonDecimalNumberParts)\n * @returns {number} the number\n */\n\n\nfunction makeNumberFromNonDecimalParts(parts) {\n var n = parseInt(parts.integerPart, parts.radix);\n var f = 0;\n\n for (var i = 0; i < parts.fractionalPart.length; i++) {\n var digitValue = parseInt(parts.fractionalPart[i], parts.radix);\n f += digitValue / Math.pow(parts.radix, i + 1);\n }\n\n var result = n + f;\n\n if (isNaN(result)) {\n throw new SyntaxError('String \"' + parts.input + '\" is no valid number');\n }\n\n return result;\n}\n\nexport var createNumber = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Create a number or convert a string, boolean, or unit to a number.\n * When value is a matrix, all elements will be converted to number.\n *\n * Syntax:\n *\n * math.number(value)\n * math.number(unit, valuelessUnit)\n *\n * Examples:\n *\n * math.number(2) // returns number 2\n * math.number('7.2') // returns number 7.2\n * math.number(true) // returns number 1\n * math.number([true, false, true, true]) // returns [1, 0, 1, 1]\n * math.number(math.unit('52cm'), 'm') // returns 0.52\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, string, unit\n *\n * @param {string | number | BigNumber | Fraction | boolean | Array | Matrix | Unit | null} [value] Value to be converted\n * @param {Unit | string} [valuelessUnit] A valueless unit, used to convert a unit to a number\n * @return {number | Array | Matrix} The created number\n */\n var number = typed('number', {\n '': function _() {\n return 0;\n },\n number: function number(x) {\n return x;\n },\n string: function string(x) {\n if (x === 'NaN') return NaN;\n var nonDecimalNumberParts = getNonDecimalNumberParts(x);\n\n if (nonDecimalNumberParts) {\n return makeNumberFromNonDecimalParts(nonDecimalNumberParts);\n }\n\n var size = 0;\n var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);\n\n if (wordSizeSuffixMatch) {\n // x includes a size suffix like 0xffffi32, so we extract\n // the suffix and remove it from x\n size = Number(wordSizeSuffixMatch[2]);\n x = wordSizeSuffixMatch[1];\n }\n\n var num = Number(x);\n\n if (isNaN(num)) {\n throw new SyntaxError('String \"' + x + '\" is no valid number');\n }\n\n if (wordSizeSuffixMatch) {\n // x is a signed bin, oct, or hex literal\n // num is the value of string x if x is interpreted as unsigned\n if (num > 2 ** size - 1) {\n // literal is too large for size suffix\n throw new SyntaxError(\"String \\\"\".concat(x, \"\\\" is out of range\"));\n } // check if the bit at index size - 1 is set and if so do the twos complement\n\n\n if (num >= 2 ** (size - 1)) {\n num = num - 2 ** size;\n }\n }\n\n return num;\n },\n BigNumber: function BigNumber(x) {\n return x.toNumber();\n },\n Fraction: function Fraction(x) {\n return x.valueOf();\n },\n Unit: function Unit(x) {\n throw new Error('Second argument with valueless unit expected');\n },\n null: function _null(x) {\n return 0;\n },\n 'Unit, string | Unit': function UnitStringUnit(unit, valuelessUnit) {\n return unit.toNumber(valuelessUnit);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n }); // reviver function to parse a JSON object like:\n //\n // {\"mathjs\":\"number\",\"value\":\"2.3\"}\n //\n // into a number 2.3\n\n number.fromJSON = function (json) {\n return parseFloat(json.value);\n };\n\n return number;\n});","import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nimport { format } from '../utils/number.js';\nvar name = 'string';\nvar dependencies = ['typed'];\nexport var createString = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Create a string or convert any object into a string.\n * Elements of Arrays and Matrices are processed element wise.\n *\n * Syntax:\n *\n * math.string(value)\n *\n * Examples:\n *\n * math.string(4.2) // returns string '4.2'\n * math.string(math.complex(3, 2) // returns string '3 + 2i'\n *\n * const u = math.unit(5, 'km')\n * math.string(u.to('m')) // returns string '5000 m'\n *\n * math.string([true, false]) // returns ['true', 'false']\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, number, unit\n *\n * @param {* | Array | Matrix | null} [value] A value to convert to a string\n * @return {string | Array | Matrix} The created string\n */\n return typed(name, {\n '': function _() {\n return '';\n },\n number: format,\n null: function _null(x) {\n return 'null';\n },\n boolean: function boolean(x) {\n return x + '';\n },\n string: function string(x) {\n return x;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n },\n any: function any(x) {\n return String(x);\n }\n });\n});","import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'boolean';\nvar dependencies = ['typed'];\nexport var createBoolean = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Create a boolean or convert a string or number to a boolean.\n * In case of a number, `true` is returned for non-zero numbers, and `false` in\n * case of zero.\n * Strings can be `'true'` or `'false'`, or can contain a number.\n * When value is a matrix, all elements will be converted to boolean.\n *\n * Syntax:\n *\n * math.boolean(x)\n *\n * Examples:\n *\n * math.boolean(0) // returns false\n * math.boolean(1) // returns true\n * math.boolean(-3) // returns true\n * math.boolean('true') // returns true\n * math.boolean('false') // returns false\n * math.boolean([1, 0, 1, 1]) // returns [true, false, true, true]\n *\n * See also:\n *\n * bignumber, complex, index, matrix, string, unit\n *\n * @param {string | number | boolean | Array | Matrix | null} value A value of any type\n * @return {boolean | Array | Matrix} The boolean value\n */\n return typed(name, {\n '': function _() {\n return false;\n },\n boolean: function boolean(x) {\n return x;\n },\n number: function number(x) {\n return !!x;\n },\n null: function _null(x) {\n return false;\n },\n BigNumber: function BigNumber(x) {\n return !x.isZero();\n },\n string: function string(x) {\n // try case insensitive\n var lcase = x.toLowerCase();\n\n if (lcase === 'true') {\n return true;\n } else if (lcase === 'false') {\n return false;\n } // test whether value is a valid number\n\n\n var num = Number(x);\n\n if (x !== '' && !isNaN(num)) {\n return !!num;\n }\n\n throw new Error('Cannot convert \"' + x + '\" to a boolean');\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'bignumber';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createBignumber = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber\n } = _ref;\n\n /**\n * Create a BigNumber, which can store numbers with arbitrary precision.\n * When a matrix is provided, all elements will be converted to BigNumber.\n *\n * Syntax:\n *\n * math.bignumber(x)\n *\n * Examples:\n *\n * 0.1 + 0.2 // returns number 0.30000000000000004\n * math.bignumber(0.1) + math.bignumber(0.2) // returns BigNumber 0.3\n *\n *\n * 7.2e500 // returns number Infinity\n * math.bignumber('7.2e500') // returns BigNumber 7.2e500\n *\n * See also:\n *\n * boolean, complex, index, matrix, string, unit\n *\n * @param {number | string | Fraction | BigNumber | Array | Matrix | boolean | null} [value] Value for the big number,\n * 0 by default.\n * @returns {BigNumber} The created bignumber\n */\n return typed('bignumber', {\n '': function _() {\n return new BigNumber(0);\n },\n number: function number(x) {\n // convert to string to prevent errors in case of >15 digits\n return new BigNumber(x + '');\n },\n string: function string(x) {\n var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);\n\n if (wordSizeSuffixMatch) {\n // x has a word size suffix\n var size = wordSizeSuffixMatch[2];\n var n = BigNumber(wordSizeSuffixMatch[1]);\n var twoPowSize = new BigNumber(2).pow(Number(size));\n\n if (n.gt(twoPowSize.sub(1))) {\n throw new SyntaxError(\"String \\\"\".concat(x, \"\\\" is out of range\"));\n }\n\n var twoPowSizeSubOne = new BigNumber(2).pow(Number(size) - 1);\n\n if (n.gte(twoPowSizeSubOne)) {\n return n.sub(twoPowSize);\n } else {\n return n;\n }\n }\n\n return new BigNumber(x);\n },\n BigNumber: function BigNumber(x) {\n // we assume a BigNumber is immutable\n return x;\n },\n Fraction: function Fraction(x) {\n return new BigNumber(x.n).div(x.d).times(x.s);\n },\n null: function _null(x) {\n return new BigNumber(0);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'complex';\nvar dependencies = ['typed', 'Complex'];\nexport var createComplex = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex\n } = _ref;\n\n /**\n * Create a complex value or convert a value to a complex value.\n *\n * Syntax:\n *\n * math.complex() // creates a complex value with zero\n * // as real and imaginary part.\n * math.complex(re : number, im : string) // creates a complex value with provided\n * // values for real and imaginary part.\n * math.complex(re : number) // creates a complex value with provided\n * // real value and zero imaginary part.\n * math.complex(complex : Complex) // clones the provided complex value.\n * math.complex(arg : string) // parses a string into a complex value.\n * math.complex(array : Array) // converts the elements of the array\n * // or matrix element wise into a\n * // complex value.\n * math.complex({re: number, im: number}) // creates a complex value with provided\n * // values for real an imaginary part.\n * math.complex({r: number, phi: number}) // creates a complex value with provided\n * // polar coordinates\n *\n * Examples:\n *\n * const a = math.complex(3, -4) // a = Complex 3 - 4i\n * a.re = 5 // a = Complex 5 - 4i\n * const i = a.im // Number -4\n * const b = math.complex('2 + 6i') // Complex 2 + 6i\n * const c = math.complex() // Complex 0 + 0i\n * const d = math.add(a, b) // Complex 5 + 2i\n *\n * See also:\n *\n * bignumber, boolean, index, matrix, number, string, unit\n *\n * @param {* | Array | Matrix} [args]\n * Arguments specifying the real and imaginary part of the complex number\n * @return {Complex | Array | Matrix} Returns a complex value\n */\n return typed('complex', {\n '': function _() {\n return Complex.ZERO;\n },\n number: function number(x) {\n return new Complex(x, 0);\n },\n 'number, number': function numberNumber(re, im) {\n return new Complex(re, im);\n },\n // TODO: this signature should be redundant\n 'BigNumber, BigNumber': function BigNumberBigNumber(re, im) {\n return new Complex(re.toNumber(), im.toNumber());\n },\n Fraction: function Fraction(x) {\n return new Complex(x.valueOf(), 0);\n },\n Complex: function Complex(x) {\n return x.clone();\n },\n string: function string(x) {\n return Complex(x); // for example '2 + 3i'\n },\n null: function _null(x) {\n return Complex(0);\n },\n Object: function Object(x) {\n if ('re' in x && 'im' in x) {\n return new Complex(x.re, x.im);\n }\n\n if ('r' in x && 'phi' in x || 'abs' in x && 'arg' in x) {\n return new Complex(x);\n }\n\n throw new Error('Expected object with properties (re and im) or (r and phi) or (abs and arg)');\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'fraction';\nvar dependencies = ['typed', 'Fraction'];\nexport var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Fraction\n } = _ref;\n\n /**\n * Create a fraction convert a value to a fraction.\n *\n * Syntax:\n * math.fraction(numerator, denominator)\n * math.fraction({n: numerator, d: denominator})\n * math.fraction(matrix: Array | Matrix) Turn all matrix entries\n * into fractions\n *\n * Examples:\n *\n * math.fraction(1, 3)\n * math.fraction('2/3')\n * math.fraction({n: 2, d: 3})\n * math.fraction([0.2, 0.25, 1.25])\n *\n * See also:\n *\n * bignumber, number, string, unit\n *\n * @param {number | string | Fraction | BigNumber | Array | Matrix} [args]\n * Arguments specifying the numerator and denominator of\n * the fraction\n * @return {Fraction | Array | Matrix} Returns a fraction\n */\n return typed('fraction', {\n number: function number(x) {\n if (!isFinite(x) || isNaN(x)) {\n throw new Error(x + ' cannot be represented as a fraction');\n }\n\n return new Fraction(x);\n },\n string: function string(x) {\n return new Fraction(x);\n },\n 'number, number': function numberNumber(numerator, denominator) {\n return new Fraction(numerator, denominator);\n },\n null: function _null(x) {\n return new Fraction(0);\n },\n BigNumber: function BigNumber(x) {\n return new Fraction(x.toString());\n },\n Fraction: function Fraction(x) {\n return x; // fractions are immutable\n },\n Object: function Object(x) {\n return new Fraction(x);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'matrix';\nvar dependencies = ['typed', 'Matrix', 'DenseMatrix', 'SparseMatrix'];\nexport var createMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Matrix,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n\n /**\n * Create a Matrix. The function creates a new `math.Matrix` object from\n * an `Array`. A Matrix has utility functions to manipulate the data in the\n * matrix, like getting the size and getting or setting values in the matrix.\n * Supported storage formats are 'dense' and 'sparse'.\n *\n * Syntax:\n *\n * math.matrix() // creates an empty matrix using default storage format (dense).\n * math.matrix(data) // creates a matrix with initial data using default storage format (dense).\n * math.matrix('dense') // creates an empty matrix using the given storage format.\n * math.matrix(data, 'dense') // creates a matrix with initial data using the given storage format.\n * math.matrix(data, 'sparse') // creates a sparse matrix with initial data.\n * math.matrix(data, 'sparse', 'number') // creates a sparse matrix with initial data, number data type.\n *\n * Examples:\n *\n * let m = math.matrix([[1, 2], [3, 4]])\n * m.size() // Array [2, 2]\n * m.resize([3, 2], 5)\n * m.valueOf() // Array [[1, 2], [3, 4], [5, 5]]\n * m.get([1, 0]) // number 3\n *\n * See also:\n *\n * bignumber, boolean, complex, index, number, string, unit, sparse\n *\n * @param {Array | Matrix} [data] A multi dimensional array\n * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`\n * @param {string} [datatype] Type of the values\n *\n * @return {Matrix} The created matrix\n */\n return typed(name, {\n '': function _() {\n return _create([]);\n },\n string: function string(format) {\n return _create([], format);\n },\n 'string, string': function stringString(format, datatype) {\n return _create([], format, datatype);\n },\n Array: function Array(data) {\n return _create(data);\n },\n Matrix: function Matrix(data) {\n return _create(data, data.storage());\n },\n 'Array | Matrix, string': _create,\n 'Array | Matrix, string, string': _create\n });\n /**\n * Create a new Matrix with given storage format\n * @param {Array} data\n * @param {string} [format]\n * @param {string} [datatype]\n * @returns {Matrix} Returns a new Matrix\n * @private\n */\n\n function _create(data, format, datatype) {\n // get storage format constructor\n if (format === 'dense' || format === 'default' || format === undefined) {\n return new DenseMatrix(data, datatype);\n }\n\n if (format === 'sparse') {\n return new SparseMatrix(data, datatype);\n }\n\n throw new TypeError('Unknown matrix type ' + JSON.stringify(format) + '.');\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromFunction';\nvar dependencies = ['typed', 'matrix', 'isZero'];\nexport var createMatrixFromFunction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isZero\n } = _ref;\n\n /**\n * Create a matrix by evaluating a generating function at each index.\n * The simplest overload returns a multi-dimensional array as long as `size` is an array.\n * Passing `size` as a Matrix or specifying a `format` will result in returning a Matrix.\n *\n * Syntax:\n *\n * math.matrixFromFunction(size, fn)\n * math.matrixFromFunction(size, fn, format)\n * math.matrixFromFunction(size, fn, format, datatype)\n * math.matrixFromFunction(size, format, fn)\n * math.matrixFromFunction(size, format, datatype, fn)\n *\n * Examples:\n *\n * math.matrixFromFunction([3,3], i => i[0] - i[1]) // an antisymmetric matrix\n * math.matrixFromFunction([100, 100], 'sparse', i => i[0] - i[1] === 1 ? 4 : 0) // a sparse subdiagonal matrix\n * math.matrixFromFunction([5], i => math.random()) // a random vector\n *\n * See also:\n *\n * matrix, zeros\n *\n * @param {Array | Matrix} size The size of the matrix to be created\n * @param {function} fn Callback function invoked for every entry in the matrix\n * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`\n * @param {string} [datatype] Type of the values\n * @return {Array | Matrix} Returns the created matrix\n */\n return typed(name, {\n 'Array | Matrix, function, string, string': function ArrayMatrixFunctionStringString(size, fn, format, datatype) {\n return _create(size, fn, format, datatype);\n },\n 'Array | Matrix, function, string': function ArrayMatrixFunctionString(size, fn, format) {\n return _create(size, fn, format);\n },\n 'Matrix, function': function MatrixFunction(size, fn) {\n return _create(size, fn, 'dense');\n },\n 'Array, function': function ArrayFunction(size, fn) {\n return _create(size, fn, 'dense').toArray();\n },\n 'Array | Matrix, string, function': function ArrayMatrixStringFunction(size, format, fn) {\n return _create(size, fn, format);\n },\n 'Array | Matrix, string, string, function': function ArrayMatrixStringStringFunction(size, format, datatype, fn) {\n return _create(size, fn, format, datatype);\n }\n });\n\n function _create(size, fn, format, datatype) {\n var m;\n\n if (datatype !== undefined) {\n m = matrix(format, datatype);\n } else {\n m = matrix(format);\n }\n\n m.resize(size);\n m.forEach(function (_, index) {\n var val = fn(index);\n if (isZero(val)) return;\n m.set(index, val);\n });\n return m;\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromRows';\nvar dependencies = ['typed', 'matrix', 'flatten', 'size'];\nexport var createMatrixFromRows = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n flatten,\n size\n } = _ref;\n\n /**\n * Create a dense matrix from vectors as individual rows.\n * If you pass column vectors, they will be transposed (but not conjugated!)\n *\n * Syntax:\n *\n * math.matrixFromRows(...arr)\n * math.matrixFromRows(row1, row2)\n * math.matrixFromRows(row1, row2, row3)\n *\n * Examples:\n *\n * math.matrixFromRows([1, 2, 3], [[4],[5],[6]])\n * math.matrixFromRows(...vectors)\n *\n * See also:\n *\n * matrix, matrixFromColumns, matrixFromFunction, zeros\n *\n * @param {... Array | Matrix} rows Multiple rows\n * @return { number[][] | Matrix } if at least one of the arguments is an array, an array will be returned\n */\n return typed(name, {\n '...Array': function Array(arr) {\n return _createArray(arr);\n },\n '...Matrix': function Matrix(arr) {\n return matrix(_createArray(arr.map(m => m.toArray())));\n } // TODO implement this properly for SparseMatrix\n\n });\n\n function _createArray(arr) {\n if (arr.length === 0) throw new TypeError('At least one row is needed to construct a matrix.');\n var N = checkVectorTypeAndReturnLength(arr[0]);\n var result = [];\n\n for (var row of arr) {\n var rowLength = checkVectorTypeAndReturnLength(row);\n\n if (rowLength !== N) {\n throw new TypeError('The vectors had different length: ' + (N | 0) + ' ≠ ' + (rowLength | 0));\n }\n\n result.push(flatten(row));\n }\n\n return result;\n }\n\n function checkVectorTypeAndReturnLength(vec) {\n var s = size(vec);\n\n if (s.length === 1) {\n // 1D vector\n return s[0];\n } else if (s.length === 2) {\n // 2D vector\n if (s[0] === 1) {\n // row vector\n return s[1];\n } else if (s[1] === 1) {\n // col vector\n return s[0];\n } else {\n throw new TypeError('At least one of the arguments is not a vector.');\n }\n } else {\n throw new TypeError('Only one- or two-dimensional vectors are supported.');\n }\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromColumns';\nvar dependencies = ['typed', 'matrix', 'flatten', 'size'];\nexport var createMatrixFromColumns = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n flatten,\n size\n } = _ref;\n\n /**\n * Create a dense matrix from vectors as individual columns.\n * If you pass row vectors, they will be transposed (but not conjugated!)\n *\n * Syntax:\n *\n * math.matrixFromColumns(...arr)\n * math.matrixFromColumns(col1, col2)\n * math.matrixFromColumns(col1, col2, col3)\n *\n * Examples:\n *\n * math.matrixFromColumns([1, 2, 3], [[4],[5],[6]])\n * math.matrixFromColumns(...vectors)\n *\n * See also:\n *\n * matrix, matrixFromRows, matrixFromFunction, zeros\n *\n * @param {... Array | Matrix} cols Multiple columns\n * @return { number[][] | Matrix } if at least one of the arguments is an array, an array will be returned\n */\n return typed(name, {\n '...Array': function Array(arr) {\n return _createArray(arr);\n },\n '...Matrix': function Matrix(arr) {\n return matrix(_createArray(arr.map(m => m.toArray())));\n } // TODO implement this properly for SparseMatrix\n\n });\n\n function _createArray(arr) {\n if (arr.length === 0) throw new TypeError('At least one column is needed to construct a matrix.');\n var N = checkVectorTypeAndReturnLength(arr[0]); // create an array with empty rows\n\n var result = [];\n\n for (var i = 0; i < N; i++) {\n result[i] = [];\n } // loop columns\n\n\n for (var col of arr) {\n var colLength = checkVectorTypeAndReturnLength(col);\n\n if (colLength !== N) {\n throw new TypeError('The vectors had different length: ' + (N | 0) + ' ≠ ' + (colLength | 0));\n }\n\n var f = flatten(col); // push a value to each row\n\n for (var _i = 0; _i < N; _i++) {\n result[_i].push(f[_i]);\n }\n }\n\n return result;\n }\n\n function checkVectorTypeAndReturnLength(vec) {\n var s = size(vec);\n\n if (s.length === 1) {\n // 1D vector\n return s[0];\n } else if (s.length === 2) {\n // 2D vector\n if (s[0] === 1) {\n // row vector\n return s[1];\n } else if (s[1] === 1) {\n // col vector\n return s[0];\n } else {\n throw new TypeError('At least one of the arguments is not a vector.');\n }\n } else {\n throw new TypeError('Only one- or two-dimensional vectors are supported.');\n }\n }\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'splitUnit';\nvar dependencies = ['typed'];\nexport var createSplitUnit = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Split a unit in an array of units whose sum is equal to the original unit.\n *\n * Syntax:\n *\n * splitUnit(unit: Unit, parts: Array.)\n *\n * Example:\n *\n * math.splitUnit(new Unit(1, 'm'), ['feet', 'inch'])\n * // [ 3 feet, 3.3700787401575 inch ]\n *\n * See also:\n *\n * unit\n *\n * @param {Array} [parts] An array of strings or valueless units.\n * @return {Array} An array of units.\n */\n return typed(name, {\n 'Unit, Array': function UnitArray(unit, parts) {\n return unit.splitUnit(parts);\n }\n });\n});","import { isInteger, log2, log10, cbrt, expm1, sign, toFixed, log1p } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function absNumber(a) {\n return Math.abs(a);\n}\nabsNumber.signature = n1;\nexport function addNumber(a, b) {\n return a + b;\n}\naddNumber.signature = n2;\nexport function subtractNumber(a, b) {\n return a - b;\n}\nsubtractNumber.signature = n2;\nexport function multiplyNumber(a, b) {\n return a * b;\n}\nmultiplyNumber.signature = n2;\nexport function divideNumber(a, b) {\n return a / b;\n}\ndivideNumber.signature = n2;\nexport function unaryMinusNumber(x) {\n return -x;\n}\nunaryMinusNumber.signature = n1;\nexport function unaryPlusNumber(x) {\n return x;\n}\nunaryPlusNumber.signature = n1;\nexport function cbrtNumber(x) {\n return cbrt(x);\n}\ncbrtNumber.signature = n1;\nexport function ceilNumber(x) {\n return Math.ceil(x);\n}\nceilNumber.signature = n1;\nexport function cubeNumber(x) {\n return x * x * x;\n}\ncubeNumber.signature = n1;\nexport function expNumber(x) {\n return Math.exp(x);\n}\nexpNumber.signature = n1;\nexport function expm1Number(x) {\n return expm1(x);\n}\nexpm1Number.signature = n1;\nexport function fixNumber(x) {\n return x > 0 ? Math.floor(x) : Math.ceil(x);\n}\nfixNumber.signature = n1;\nexport function floorNumber(x) {\n return Math.floor(x);\n}\nfloorNumber.signature = n1;\n/**\n * Calculate gcd for numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the greatest common denominator of a and b\n */\n\nexport function gcdNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function gcd must be integer numbers');\n } // https://en.wikipedia.org/wiki/Euclidean_algorithm\n\n\n var r;\n\n while (b !== 0) {\n r = a % b;\n a = b;\n b = r;\n }\n\n return a < 0 ? -a : a;\n}\ngcdNumber.signature = n2;\n/**\n * Calculate lcm for two numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the least common multiple of a and b\n */\n\nexport function lcmNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function lcm must be integer numbers');\n }\n\n if (a === 0 || b === 0) {\n return 0;\n } // https://en.wikipedia.org/wiki/Euclidean_algorithm\n // evaluate lcm here inline to reduce overhead\n\n\n var t;\n var prod = a * b;\n\n while (b !== 0) {\n t = b;\n b = a % t;\n a = t;\n }\n\n return Math.abs(prod / a);\n}\nlcmNumber.signature = n2;\n/**\n * Calculate the logarithm of a value.\n * @param {number} x\n * @return {number}\n */\n\nexport function logNumber(x) {\n return Math.log(x);\n}\nlogNumber.signature = n1;\n/**\n * Calculate the 10-base logarithm of a number\n * @param {number} x\n * @return {number}\n */\n\nexport function log10Number(x) {\n return log10(x);\n}\nlog10Number.signature = n1;\n/**\n * Calculate the 2-base logarithm of a number\n * @param {number} x\n * @return {number}\n */\n\nexport function log2Number(x) {\n return log2(x);\n}\nlog2Number.signature = n1;\n/**\n * Calculate the natural logarithm of a `number+1`\n * @param {number} x\n * @returns {number}\n */\n\nexport function log1pNumber(x) {\n return log1p(x);\n}\nlog1pNumber.signature = n1;\n/**\n * Calculate the modulus of two numbers\n * @param {number} x\n * @param {number} y\n * @returns {number} res\n * @private\n */\n\nexport function modNumber(x, y) {\n if (y > 0) {\n // We don't use JavaScript's % operator here as this doesn't work\n // correctly for x < 0 and x === 0\n // see https://en.wikipedia.org/wiki/Modulo_operation\n return x - y * Math.floor(x / y);\n } else if (y === 0) {\n return x;\n } else {\n // y < 0\n // TODO: implement mod for a negative divisor\n throw new Error('Cannot calculate mod for a negative divisor');\n }\n}\nmodNumber.signature = n2;\n/**\n * Calculate the nth root of a, solve x^root == a\n * http://rosettacode.org/wiki/Nth_root#JavaScript\n * @param {number} a\n * @param {number} root\n * @private\n */\n\nexport function nthRootNumber(a, root) {\n var inv = root < 0;\n\n if (inv) {\n root = -root;\n }\n\n if (root === 0) {\n throw new Error('Root must be non-zero');\n }\n\n if (a < 0 && Math.abs(root) % 2 !== 1) {\n throw new Error('Root must be odd when a is negative.');\n } // edge cases zero and infinity\n\n\n if (a === 0) {\n return inv ? Infinity : 0;\n }\n\n if (!isFinite(a)) {\n return inv ? 0 : a;\n }\n\n var x = Math.pow(Math.abs(a), 1 / root); // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n\n x = a < 0 ? -x : x;\n return inv ? 1 / x : x; // Very nice algorithm, but fails with nthRoot(-2, 3).\n // Newton's method has some well-known problems at times:\n // https://en.wikipedia.org/wiki/Newton%27s_method#Failure_analysis\n\n /*\n let x = 1 // Initial guess\n let xPrev = 1\n let i = 0\n const iMax = 10000\n do {\n const delta = (a / Math.pow(x, root - 1) - x) / root\n xPrev = x\n x = x + delta\n i++\n }\n while (xPrev !== x && i < iMax)\n if (xPrev !== x) {\n throw new Error('Function nthRoot failed to converge')\n }\n return inv ? 1 / x : x\n */\n}\nnthRootNumber.signature = n2;\nexport function signNumber(x) {\n return sign(x);\n}\nsignNumber.signature = n1;\nexport function sqrtNumber(x) {\n return Math.sqrt(x);\n}\nsqrtNumber.signature = n1;\nexport function squareNumber(x) {\n return x * x;\n}\nsquareNumber.signature = n1;\n/**\n * Calculate xgcd for two numbers\n * @param {number} a\n * @param {number} b\n * @return {number} result\n * @private\n */\n\nexport function xgcdNumber(a, b) {\n // source: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm\n var t; // used to swap two variables\n\n var q; // quotient\n\n var r; // remainder\n\n var x = 0;\n var lastx = 1;\n var y = 1;\n var lasty = 0;\n\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function xgcd must be integer numbers');\n }\n\n while (b) {\n q = Math.floor(a / b);\n r = a - q * b;\n t = x;\n x = lastx - q * x;\n lastx = t;\n t = y;\n y = lasty - q * y;\n lasty = t;\n a = b;\n b = r;\n }\n\n var res;\n\n if (a < 0) {\n res = [-a, -lastx, -lasty];\n } else {\n res = [a, a ? lastx : 0, lasty];\n }\n\n return res;\n}\nxgcdNumber.signature = n2;\n/**\n * Calculates the power of x to y, x^y, for two numbers.\n * @param {number} x\n * @param {number} y\n * @return {number} res\n */\n\nexport function powNumber(x, y) {\n // x^Infinity === 0 if -1 < x < 1\n // A real number 0 is returned instead of complex(0)\n if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {\n return 0;\n }\n\n return Math.pow(x, y);\n}\npowNumber.signature = n2;\n/**\n * round a number to the given number of decimals, or to zero if decimals is\n * not provided\n * @param {number} value\n * @param {number} decimals number of decimals, between 0 and 15 (0 by default)\n * @return {number} roundedValue\n */\n\nexport function roundNumber(value) {\n var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return parseFloat(toFixed(value, decimals));\n}\nroundNumber.signature = n2;\n/**\n * Calculate the norm of a number, the absolute value.\n * @param {number} x\n * @return {number}\n */\n\nexport function normNumber(x) {\n return Math.abs(x);\n}\nnormNumber.signature = n1;","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { unaryMinusNumber } from '../../plain/number/index.js';\nvar name = 'unaryMinus';\nvar dependencies = ['typed'];\nexport var createUnaryMinus = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Inverse the sign of a value, apply a unary minus operation.\n *\n * For matrices, the function is evaluated element wise. Boolean values and\n * strings will be converted to a number. For complex numbers, both real and\n * complex value are inverted.\n *\n * Syntax:\n *\n * math.unaryMinus(x)\n *\n * Examples:\n *\n * math.unaryMinus(3.5) // returns -3.5\n * math.unaryMinus(-4.2) // returns 4.2\n *\n * See also:\n *\n * add, subtract, unaryPlus\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Number to be inverted.\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Returns the value with inverted sign.\n */\n return typed(name, {\n number: unaryMinusNumber,\n Complex: function Complex(x) {\n return x.neg();\n },\n BigNumber: function BigNumber(x) {\n return x.neg();\n },\n Fraction: function Fraction(x) {\n return x.neg();\n },\n Unit: function Unit(x) {\n var res = x.clone();\n res.value = this(x.value);\n return res;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since unaryMinus(0) = 0\n return deepMap(x, this, true);\n } // TODO: add support for string\n\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { unaryPlusNumber } from '../../plain/number/index.js';\nvar name = 'unaryPlus';\nvar dependencies = ['typed', 'config', 'BigNumber'];\nexport var createUnaryPlus = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n BigNumber\n } = _ref;\n\n /**\n * Unary plus operation.\n * Boolean values and strings will be converted to a number, numeric values will be returned as is.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.unaryPlus(x)\n *\n * Examples:\n *\n * math.unaryPlus(3.5) // returns 3.5\n * math.unaryPlus(1) // returns 1\n *\n * See also:\n *\n * unaryMinus, add, subtract\n *\n * @param {number | BigNumber | Fraction | string | Complex | Unit | Array | Matrix} x\n * Input value\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix}\n * Returns the input value when numeric, converts to a number when input is non-numeric.\n */\n return typed(name, {\n number: unaryPlusNumber,\n Complex: function Complex(x) {\n return x; // complex numbers are immutable\n },\n BigNumber: function BigNumber(x) {\n return x; // bignumbers are immutable\n },\n Fraction: function Fraction(x) {\n return x; // fractions are immutable\n },\n Unit: function Unit(x) {\n return x.clone();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since unaryPlus(0) = 0\n return deepMap(x, this, true);\n },\n 'boolean | string': function booleanString(x) {\n // convert to a number or bignumber\n return config.number === 'BigNumber' ? new BigNumber(+x) : +x;\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { absNumber } from '../../plain/number/index.js';\nvar name = 'abs';\nvar dependencies = ['typed'];\nexport var createAbs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the absolute value of a number. For matrices, the function is\n * evaluated element wise.\n *\n * Syntax:\n *\n * math.abs(x)\n *\n * Examples:\n *\n * math.abs(3.5) // returns number 3.5\n * math.abs(-4.2) // returns number 4.2\n *\n * math.abs([3, -5, -1, 0, 2]) // returns Array [3, 5, 1, 0, 2]\n *\n * See also:\n *\n * sign\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x\n * A number or matrix for which to get the absolute value\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit}\n * Absolute value of `x`\n */\n return typed(name, {\n number: absNumber,\n Complex: function Complex(x) {\n return x.abs();\n },\n BigNumber: function BigNumber(x) {\n return x.abs();\n },\n Fraction: function Fraction(x) {\n return x.abs();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since abs(0) = 0\n return deepMap(x, this, true);\n },\n Unit: function Unit(x) {\n return x.abs();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { arraySize } from '../../utils/array.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { IndexError } from '../../error/IndexError.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\nexport var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n\n /**\n * Apply a function that maps an array to a scalar\n * along a given axis of a matrix or array.\n * Returns a new matrix or array with one less dimension than the input.\n *\n * Syntax:\n *\n * math.apply(A, dim, callback)\n *\n * Where:\n *\n * - `dim: number` is a zero-based dimension over which to concatenate the matrices.\n *\n * Examples:\n *\n * const A = [[1, 2], [3, 4]]\n * const sum = math.sum\n *\n * math.apply(A, 0, sum) // returns [4, 6]\n * math.apply(A, 1, sum) // returns [3, 7]\n *\n * See also:\n *\n * map, filter, forEach\n *\n * @param {Array | Matrix} array The input Matrix\n * @param {number} dim The dimension along which the callback is applied\n * @param {Function} callback The callback function that is applied. This Function\n * should take an array or 1-d matrix as an input and\n * return a number.\n * @return {Array | Matrix} res The residual matrix with the function applied over some dimension.\n */\n return typed(name, {\n 'Array | Matrix, number | BigNumber, function': function ArrayMatrixNumberBigNumberFunction(mat, dim, callback) {\n if (!isInteger(dim)) {\n throw new TypeError('Integer number expected for dimension');\n }\n\n var size = Array.isArray(mat) ? arraySize(mat) : mat.size();\n\n if (dim < 0 || dim >= size.length) {\n throw new IndexError(dim, size.length);\n }\n\n if (isMatrix(mat)) {\n return mat.create(_apply(mat.valueOf(), dim, callback));\n } else {\n return _apply(mat, dim, callback);\n }\n }\n });\n});\n/**\n * Recursively reduce a matrix\n * @param {Array} mat\n * @param {number} dim\n * @param {Function} callback\n * @returns {Array} ret\n * @private\n */\n\nfunction _apply(mat, dim, callback) {\n var i, ret, tran;\n\n if (dim <= 0) {\n if (!Array.isArray(mat[0])) {\n return callback(mat);\n } else {\n tran = _switch(mat);\n ret = [];\n\n for (i = 0; i < tran.length; i++) {\n ret[i] = _apply(tran[i], dim - 1, callback);\n }\n\n return ret;\n }\n } else {\n ret = [];\n\n for (i = 0; i < mat.length; i++) {\n ret[i] = _apply(mat[i], dim - 1, callback);\n }\n\n return ret;\n }\n}\n/**\n * Transpose a matrix\n * @param {Array} mat\n * @returns {Array} ret\n * @private\n */\n\n\nfunction _switch(mat) {\n var I = mat.length;\n var J = mat[0].length;\n var i, j;\n var ret = [];\n\n for (j = 0; j < J; j++) {\n var tmp = [];\n\n for (i = 0; i < I; i++) {\n tmp.push(mat[i][j]);\n }\n\n ret.push(tmp);\n }\n\n return ret;\n}","import { factory } from '../../utils/factory.js';\nimport { addNumber } from '../../plain/number/index.js';\nvar name = 'addScalar';\nvar dependencies = ['typed'];\nexport var createAddScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Add two scalar values, `x + y`.\n * This function is meant for internal use: it is used by the public function\n * `add`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | Fraction | Complex | Unit} x First value to add\n * @param {number | BigNumber | Fraction | Complex} y Second value to add\n * @return {number | BigNumber | Fraction | Complex | Unit} Sum of `x` and `y`\n * @private\n */\n return typed(name, {\n 'number, number': addNumber,\n 'Complex, Complex': function ComplexComplex(x, y) {\n return x.add(y);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.plus(y);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.add(y);\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (x.value === null || x.value === undefined) throw new Error('Parameter x contains a unit with undefined value');\n if (y.value === null || y.value === undefined) throw new Error('Parameter y contains a unit with undefined value');\n if (!x.equalBase(y)) throw new Error('Units do not match');\n var res = x.clone();\n res.value = this(res.value, y.value);\n res.fixPrefix = false;\n return res;\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { isBigNumber, isComplex, isFraction } from '../../utils/is.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cbrtNumber } from '../../plain/number/index.js';\nvar name = 'cbrt';\nvar dependencies = ['config', 'typed', 'isNegative', 'unaryMinus', 'matrix', 'Complex', 'BigNumber', 'Fraction'];\nexport var createCbrt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n isNegative,\n unaryMinus,\n matrix,\n Complex,\n BigNumber,\n Fraction\n } = _ref;\n\n /**\n * Calculate the cubic root of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.cbrt(x)\n * math.cbrt(x, allRoots)\n *\n * Examples:\n *\n * math.cbrt(27) // returns 3\n * math.cube(3) // returns 27\n * math.cbrt(-64) // returns -4\n * math.cbrt(math.unit('27 m^3')) // returns Unit 3 m\n * math.cbrt([27, 64, 125]) // returns [3, 4, 5]\n *\n * const x = math.complex('8i')\n * math.cbrt(x) // returns Complex 1.7320508075689 + i\n * math.cbrt(x, true) // returns Matrix [\n * // 1.7320508075689 + i\n * // -1.7320508075689 + i\n * // -2i\n * // ]\n *\n * See also:\n *\n * square, sqrt, cube\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x\n * Value for which to calculate the cubic root.\n * @param {boolean} [allRoots] Optional, false by default. Only applicable\n * when `x` is a number or complex number. If true, all complex\n * roots are returned, if false (default) the principal root is\n * returned.\n * @return {number | BigNumber | Complex | Unit | Array | Matrix}\n * Returns the cubic root of `x`\n */\n return typed(name, {\n number: cbrtNumber,\n // note: signature 'number, boolean' is also supported,\n // created by typed as it knows how to convert number to Complex\n Complex: _cbrtComplex,\n 'Complex, boolean': _cbrtComplex,\n BigNumber: function BigNumber(x) {\n return x.cbrt();\n },\n Unit: _cbrtUnit,\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since cbrt(0) = 0\n return deepMap(x, this, true);\n }\n });\n /**\n * Calculate the cubic root for a complex number\n * @param {Complex} x\n * @param {boolean} [allRoots] If true, the function will return an array\n * with all three roots. If false or undefined,\n * the principal root is returned.\n * @returns {Complex | Array. | Matrix.} Returns the cubic root(s) of x\n * @private\n */\n\n function _cbrtComplex(x, allRoots) {\n // https://www.wikiwand.com/en/Cube_root#/Complex_numbers\n var arg3 = x.arg() / 3;\n var abs = x.abs(); // principal root:\n\n var principal = new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3).exp());\n\n if (allRoots) {\n var all = [principal, new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3 + Math.PI * 2 / 3).exp()), new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3 - Math.PI * 2 / 3).exp())];\n return config.matrix === 'Array' ? all : matrix(all);\n } else {\n return principal;\n }\n }\n /**\n * Calculate the cubic root for a Unit\n * @param {Unit} x\n * @return {Unit} Returns the cubic root of x\n * @private\n */\n\n\n function _cbrtUnit(x) {\n if (x.value && isComplex(x.value)) {\n var result = x.clone();\n result.value = 1.0;\n result = result.pow(1.0 / 3); // Compute the units\n\n result.value = _cbrtComplex(x.value); // Compute the value\n\n return result;\n } else {\n var negate = isNegative(x.value);\n\n if (negate) {\n x.value = unaryMinus(x.value);\n } // TODO: create a helper function for this\n\n\n var third;\n\n if (isBigNumber(x.value)) {\n third = new BigNumber(1).div(3);\n } else if (isFraction(x.value)) {\n third = new Fraction(1, 3);\n } else {\n third = 1 / 3;\n }\n\n var _result = x.pow(third);\n\n if (negate) {\n _result.value = unaryMinus(_result.value);\n }\n\n return _result;\n }\n }\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'algorithm11';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm11 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked NZ times (number of nonzero items in S).\n *\n *\n * ┌ f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = ┤\n * └ 0 ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function algorithm11(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype; // sparse matrix cannot be a Pattern matrix\n\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string') {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // convert b to the same datatype\n\n b = typed.convert(b, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cvalues = [];\n var cindex = [];\n var cptr = []; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // initialize ptr\n cptr[j] = cindex.length; // values in j\n\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = aindex[k]; // invoke callback\n\n var v = inverse ? cf(b, avalues[k]) : cf(avalues[k], b); // check value is zero\n\n if (!eq(v, zero)) {\n // push index & value\n cindex.push(i);\n cvalues.push(v);\n }\n }\n } // update ptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return s.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nimport { clone } from '../../../utils/object.js';\nvar name = 'algorithm14';\nvar dependencies = ['typed'];\nexport var createAlgorithm14 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, b).\n * Callback function invoked MxN times.\n *\n * C(i,j,...z) = f(Aij..z, b)\n *\n * @param {Matrix} a The DenseMatrix instance (A)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij..z,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Aij..z)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97659042\n */\n return function algorithm14(a, b, callback, inverse) {\n // a arrays\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype; // datatype\n\n var dt; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string') {\n // datatype\n dt = adt; // convert b to the same datatype\n\n b = typed.convert(b, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // populate cdata, iterate through dimensions\n\n\n var cdata = asize.length > 0 ? _iterate(cf, 0, asize, asize[0], adata, b, inverse) : []; // c matrix\n\n return a.createDenseMatrix({\n data: cdata,\n size: clone(asize),\n datatype: dt\n });\n }; // recursive function\n\n function _iterate(f, level, s, n, av, bv, inverse) {\n // initialize array for this level\n var cv = []; // check we reach the last level\n\n if (level === s.length - 1) {\n // loop arrays in last level\n for (var i = 0; i < n; i++) {\n // invoke callback and store value\n cv[i] = inverse ? f(bv, av[i]) : f(av[i], bv);\n }\n } else {\n // iterate current level\n for (var j = 0; j < n; j++) {\n // iterate next level\n cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv, inverse);\n }\n }\n\n return cv;\n }\n});","import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { ceilNumber } from '../../plain/number/index.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'ceil';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];\nexport var createCeil = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar\n } = _ref;\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Round a value towards plus infinity\n * If `x` is complex, both real and imaginary part are rounded towards plus infinity.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.ceil(x)\n * math.ceil(x, n)\n *\n * Examples:\n *\n * math.ceil(3.2) // returns number 4\n * math.ceil(3.8) // returns number 4\n * math.ceil(-4.2) // returns number -4\n * math.ceil(-4.7) // returns number -4\n *\n * math.ceil(3.212, 2) // returns number 3.22\n * math.ceil(3.288, 2) // returns number 3.29\n * math.ceil(-4.212, 2) // returns number -4.21\n * math.ceil(-4.782, 2) // returns number -4.78\n *\n * const c = math.complex(3.24, -2.71)\n * math.ceil(c) // returns Complex 4 - 2i\n * math.ceil(c, 1) // returns Complex 3.3 - 2.7i\n *\n * math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4]\n * math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7]\n *\n * See also:\n *\n * floor, fix, round\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n\n return typed('ceil', {\n number: function number(x) {\n if (nearlyEqual(x, round(x), config.epsilon)) {\n return round(x);\n } else {\n return ceilNumber(x);\n }\n },\n 'number, number': function numberNumber(x, n) {\n if (nearlyEqual(x, round(x, n), config.epsilon)) {\n return round(x, n);\n } else {\n var [number, exponent] = \"\".concat(x, \"e\").split('e');\n var result = Math.ceil(Number(\"\".concat(number, \"e\").concat(Number(exponent) + n)));\n [number, exponent] = \"\".concat(result, \"e\").split('e');\n return Number(\"\".concat(number, \"e\").concat(Number(exponent) - n));\n }\n },\n Complex: function Complex(x) {\n return x.ceil();\n },\n 'Complex, number': function ComplexNumber(x, n) {\n return x.ceil(n);\n },\n BigNumber: function BigNumber(x) {\n if (bigNearlyEqual(x, round(x), config.epsilon)) {\n return round(x);\n } else {\n return x.ceil();\n }\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {\n if (bigNearlyEqual(x, round(x, n), config.epsilon)) {\n return round(x, n);\n } else {\n return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_CEIL);\n }\n },\n Fraction: function Fraction(x) {\n return x.ceil();\n },\n 'Fraction, number': function FractionNumber(x, n) {\n return x.ceil(n);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, this, true);\n },\n 'Array | Matrix, number': function ArrayMatrixNumber(x, n) {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, i => this(i, n), true);\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cubeNumber } from '../../plain/number/index.js';\nvar name = 'cube';\nvar dependencies = ['typed'];\nexport var createCube = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the cube of a value, `x * x * x`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.cube(x)\n *\n * Examples:\n *\n * math.cube(2) // returns number 8\n * math.pow(2, 3) // returns number 8\n * math.cube(4) // returns number 64\n * 4 * 4 * 4 // returns number 64\n *\n * math.cube([1, 2, 3, 4]) // returns Array [1, 8, 27, 64]\n *\n * See also:\n *\n * multiply, square, pow, cbrt\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x Number for which to calculate the cube\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} Cube of x\n */\n return typed(name, {\n number: cubeNumber,\n Complex: function Complex(x) {\n return x.mul(x).mul(x); // Is faster than pow(x, 3)\n },\n BigNumber: function BigNumber(x) {\n return x.times(x).times(x);\n },\n Fraction: function Fraction(x) {\n return x.pow(3); // Is faster than mul()mul()mul()\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since cube(0) = 0\n return deepMap(x, this, true);\n },\n Unit: function Unit(x) {\n return x.pow(3);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { expNumber } from '../../plain/number/index.js';\nvar name = 'exp';\nvar dependencies = ['typed'];\nexport var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the exponent of a value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.exp(x)\n *\n * Examples:\n *\n * math.exp(2) // returns number 7.3890560989306495\n * math.pow(math.e, 2) // returns number 7.3890560989306495\n * math.log(math.exp(2)) // returns number 2\n *\n * math.exp([1, 2, 3])\n * // returns Array [\n * // 2.718281828459045,\n * // 7.3890560989306495,\n * // 20.085536923187668\n * // ]\n *\n * See also:\n *\n * expm1, log, pow\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to exponentiate\n * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x`\n */\n return typed(name, {\n number: expNumber,\n Complex: function Complex(x) {\n return x.exp();\n },\n BigNumber: function BigNumber(x) {\n return x.exp();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // TODO: exp(sparse) should return a dense matrix since exp(0)==1\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { expm1Number } from '../../plain/number/index.js';\nvar name = 'expm1';\nvar dependencies = ['typed', 'Complex'];\nexport var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex: _Complex\n } = _ref;\n\n /**\n * Calculate the value of subtracting 1 from the exponential value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.expm1(x)\n *\n * Examples:\n *\n * math.expm1(2) // returns number 6.38905609893065\n * math.pow(math.e, 2) - 1 // returns number 6.3890560989306495\n * math.log(math.expm1(2) + 1) // returns number 2\n *\n * math.expm1([1, 2, 3])\n * // returns Array [\n * // 1.718281828459045,\n * // 6.3890560989306495,\n * // 19.085536923187668\n * // ]\n *\n * See also:\n *\n * exp, log, pow\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to apply expm1\n * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x`\n */\n return typed(name, {\n number: expm1Number,\n Complex: function Complex(x) {\n var r = Math.exp(x.re);\n return new _Complex(r * Math.cos(x.im) - 1, r * Math.sin(x.im));\n },\n BigNumber: function BigNumber(x) {\n return x.exp().minus(1);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'fix';\nvar dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor'];\nexport var createFix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex: _Complex,\n matrix,\n ceil,\n floor\n } = _ref;\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Round a value towards zero.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.fix(x)\n *\n * Examples:\n *\n * math.fix(3.2) // returns number 3\n * math.fix(3.8) // returns number 3\n * math.fix(-4.2) // returns number -4\n * math.fix(-4.7) // returns number -4\n *\n * math.fix(3.12, 1) // returns number 3.1\n * math.fix(3.18, 1) // returns number 3.1\n * math.fix(-4.12, 1) // returns number -4.1\n * math.fix(-4.17, 1) // returns number -4.1\n *\n * const c = math.complex(3.22, -2.78)\n * math.fix(c) // returns Complex 3 - 2i\n * math.fix(c, 1) // returns Complex 3.2 - 2.7i\n *\n * math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]\n * math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]\n *\n * See also:\n *\n * ceil, floor, round\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n\n return typed('fix', {\n number: function number(x) {\n return x > 0 ? floor(x) : ceil(x);\n },\n 'number, number | BigNumber': function numberNumberBigNumber(x, n) {\n return x > 0 ? floor(x, n) : ceil(x, n);\n },\n Complex: function Complex(x) {\n return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));\n },\n 'Complex, number | BigNumber': function ComplexNumberBigNumber(x, n) {\n return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));\n },\n BigNumber: function BigNumber(x) {\n return x.isNegative() ? ceil(x) : floor(x);\n },\n 'BigNumber, number | BigNumber': function BigNumberNumberBigNumber(x, n) {\n return x.isNegative() ? ceil(x, n) : floor(x, n);\n },\n Fraction: function Fraction(x) {\n return x.s < 0 ? x.ceil() : x.floor();\n },\n 'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {\n return x.s < 0 ? x.ceil(n) : x.floor(n);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, this, true);\n },\n 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(x, n) {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, i => this(i, n), true);\n },\n 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'floor';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];\nexport var createFloor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar\n } = _ref;\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Round a value towards minus infinity.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.floor(x)\n * math.floor(x, n)\n *\n * Examples:\n *\n * math.floor(3.2) // returns number 3\n * math.floor(3.8) // returns number 3\n * math.floor(-4.2) // returns number -5\n * math.floor(-4.7) // returns number -5\n *\n * math.floor(3.212, 2) // returns number 3.21\n * math.floor(3.288, 2) // returns number 3.28\n * math.floor(-4.212, 2) // returns number -4.22\n * math.floor(-4.782, 2) // returns number -4.79\n *\n * const c = math.complex(3.24, -2.71)\n * math.floor(c) // returns Complex 3 - 3i\n * math.floor(c, 1) // returns Complex 3.2 - 2.8i\n *\n * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]\n * math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]\n *\n * See also:\n *\n * ceil, fix, round\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n\n return typed('floor', {\n number: function number(x) {\n if (nearlyEqual(x, round(x), config.epsilon)) {\n return round(x);\n } else {\n return Math.floor(x);\n }\n },\n 'number, number': function numberNumber(x, n) {\n if (nearlyEqual(x, round(x, n), config.epsilon)) {\n return round(x, n);\n } else {\n var [number, exponent] = \"\".concat(x, \"e\").split('e');\n var result = Math.floor(Number(\"\".concat(number, \"e\").concat(Number(exponent) + n)));\n [number, exponent] = \"\".concat(result, \"e\").split('e');\n return Number(\"\".concat(number, \"e\").concat(Number(exponent) - n));\n }\n },\n Complex: function Complex(x) {\n return x.floor();\n },\n 'Complex, number': function ComplexNumber(x, n) {\n return x.floor(n);\n },\n BigNumber: function BigNumber(x) {\n if (bigNearlyEqual(x, round(x), config.epsilon)) {\n return round(x);\n } else {\n return x.floor();\n }\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {\n if (bigNearlyEqual(x, round(x, n), config.epsilon)) {\n return round(x, n);\n } else {\n return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_FLOOR);\n }\n },\n Fraction: function Fraction(x) {\n return x.floor();\n },\n 'Fraction, number': function FractionNumber(x, n) {\n return x.floor(n);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since floor(0) = 0\n return deepMap(x, this, true);\n },\n 'Array | Matrix, number': function ArrayMatrixNumber(x, n) {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, i => this(i, n), true);\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm01';\nvar dependencies = ['typed'];\nexport var createAlgorithm01 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij).\n * Callback function invoked NNZ times (number of nonzero items in SparseMatrix).\n *\n *\n * ┌ f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = ┤\n * └ Dij ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (S)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function algorithm1(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype; // sparse matrix arrays\n\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // sparse matrix cannot be a Pattern matrix\n\n\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // process data types\n\n var dt = typeof adt === 'string' && adt === bdt ? adt : undefined; // callback function\n\n var cf = dt ? typed.find(callback, [dt, dt]) : callback; // vars\n\n var i, j; // result (DenseMatrix)\n\n var cdata = []; // initialize c\n\n for (i = 0; i < rows; i++) {\n cdata[i] = [];\n } // workspace\n\n\n var x = []; // marks indicating we have a value in x for a given column\n\n var w = []; // loop columns in b\n\n for (j = 0; j < columns; j++) {\n // column mark\n var mark = j + 1; // values in column j\n\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k]; // update workspace\n\n x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]); // mark i as updated\n\n w[i] = mark;\n } // loop rows\n\n\n for (i = 0; i < rows; i++) {\n // check row is in workspace\n if (w[i] === mark) {\n // c[i][j] was already calculated\n cdata[i][j] = x[i];\n } else {\n // item does not exist in S\n cdata[i][j] = adata[i][j];\n }\n }\n } // return dense matrix\n\n\n return denseMatrix.createDenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm04';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm04 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0\n * └ B(i,j) ; B(i,j) !== 0\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function algorithm04(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype; // sparse matrix arrays\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = []; // workspace\n\n var xa = avalues && bvalues ? [] : undefined;\n var xb = avalues && bvalues ? [] : undefined; // marks indicating we have a value in x for a given column\n\n var wa = [];\n var wb = []; // vars\n\n var i, j, k, k0, k1; // loop columns\n\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length; // columns mark\n\n var mark = j + 1; // loop A(:,j)\n\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k]; // update c\n\n cindex.push(i); // update workspace\n\n wa[i] = mark; // check we need to process values\n\n if (xa) {\n xa[i] = avalues[k];\n }\n } // loop B(:,j)\n\n\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k]; // check row exists in A\n\n if (wa[i] === mark) {\n // update record in xa @ i\n if (xa) {\n // invoke callback\n var v = cf(xa[i], bvalues[k]); // check for zero\n\n if (!eq(v, zero)) {\n // update workspace\n xa[i] = v;\n } else {\n // remove mark (index will be removed later)\n wa[i] = null;\n }\n }\n } else {\n // update c\n cindex.push(i); // update workspace\n\n wb[i] = mark; // check we need to process values\n\n if (xb) {\n xb[i] = bvalues[k];\n }\n }\n } // check we need to process values (non pattern matrix)\n\n\n if (xa && xb) {\n // initialize first index in j\n k = cptr[j]; // loop index in j\n\n while (k < cindex.length) {\n // row\n i = cindex[k]; // check workspace has value @ i\n\n if (wa[i] === mark) {\n // push value (Aij != 0 || (Aij != 0 && Bij != 0))\n cvalues[k] = xa[i]; // increment pointer\n\n k++;\n } else if (wb[i] === mark) {\n // push value (bij != 0)\n cvalues[k] = xb[i]; // increment pointer\n\n k++;\n } else {\n // remove index @ k\n cindex.splice(k, 1);\n }\n }\n }\n } // update cptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'algorithm10';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createAlgorithm10 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked NZ times (number of nonzero items in S).\n *\n *\n * ┌ f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = ┤\n * └ b ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function algorithm10(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype; // sparse matrix cannot be a Pattern matrix\n\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string') {\n // datatype\n dt = adt; // convert b to the same datatype\n\n b = typed.convert(b, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cdata = []; // workspaces\n\n var x = []; // marks indicating we have a value in x for a given column\n\n var w = []; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1; // values in j\n\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var r = aindex[k]; // update workspace\n\n x[r] = avalues[k];\n w[r] = mark;\n } // loop rows\n\n\n for (var i = 0; i < rows; i++) {\n // initialize C on first column\n if (j === 0) {\n // create row array\n cdata[i] = [];\n } // check sparse matrix has a value @ i,j\n\n\n if (w[i] === mark) {\n // invoke callback, update C\n cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);\n } else {\n // dense matrix value @ i, j\n cdata[i][j] = b;\n }\n }\n } // return dense matrix\n\n\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm13';\nvar dependencies = ['typed'];\nexport var createAlgorithm13 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, Bij..z).\n * Callback function invoked MxN times.\n *\n * C(i,j,...z) = f(Aij..z, Bij..z)\n *\n * @param {Matrix} a The DenseMatrix instance (A)\n * @param {Matrix} b The DenseMatrix instance (B)\n * @param {Function} callback The f(Aij..z,Bij..z) operation to invoke\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97658658\n */\n return function algorithm13(a, b, callback) {\n // a arrays\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype; // b arrays\n\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype; // c arrays\n\n var csize = []; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // validate each one of the dimension sizes\n\n\n for (var s = 0; s < asize.length; s++) {\n // must match\n if (asize[s] !== bsize[s]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // update dimension in c\n\n\n csize[s] = asize[s];\n } // datatype\n\n\n var dt; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // populate cdata, iterate through dimensions\n\n\n var cdata = csize.length > 0 ? _iterate(cf, 0, csize, csize[0], adata, bdata) : []; // c matrix\n\n return a.createDenseMatrix({\n data: cdata,\n size: csize,\n datatype: dt\n });\n }; // recursive function\n\n function _iterate(f, level, s, n, av, bv) {\n // initialize array for this level\n var cv = []; // check we reach the last level\n\n if (level === s.length - 1) {\n // loop arrays in last level\n for (var i = 0; i < n; i++) {\n // invoke callback and store value\n cv[i] = f(av[i], bv[i]);\n }\n } else {\n // iterate current level\n for (var j = 0; j < n; j++) {\n // iterate next level\n cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv[j]);\n }\n }\n\n return cv;\n }\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm04 } from '../../type/matrix/utils/algorithm04.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { gcdNumber } from '../../plain/number/index.js';\nvar name = 'gcd';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix'];\nexport var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber,\n DenseMatrix\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm04 = createAlgorithm04({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Calculate the greatest common divisor for two or more values or arrays.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.gcd(a, b)\n * math.gcd(a, b, c, ...)\n *\n * Examples:\n *\n * math.gcd(8, 12) // returns 4\n * math.gcd(-4, 6) // returns 2\n * math.gcd(25, 15, -10) // returns 5\n *\n * math.gcd([8, -4], [12, 6]) // returns [4, 2]\n *\n * See also:\n *\n * lcm, xgcd\n *\n * @param {... number | BigNumber | Fraction | Array | Matrix} args Two or more integer numbers\n * @return {number | BigNumber | Fraction | Array | Matrix} The greatest common divisor\n */\n\n return typed(name, {\n 'number, number': gcdNumber,\n 'BigNumber, BigNumber': _gcdBigNumber,\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.gcd(y);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm04(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm01(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm01(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm10(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n return algorithm10(y, x, this, true);\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n },\n // TODO: need a smarter notation here\n 'Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber': function ArrayMatrixNumberBigNumberArrayMatrixNumberBigNumberArrayMatrixNumberBigNumber(a, b, args) {\n var res = this(a, b);\n\n for (var i = 0; i < args.length; i++) {\n res = this(res, args[i]);\n }\n\n return res;\n }\n });\n /**\n * Calculate gcd for BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @returns {BigNumber} Returns greatest common denominator of a and b\n * @private\n */\n\n function _gcdBigNumber(a, b) {\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function gcd must be integer numbers');\n } // https://en.wikipedia.org/wiki/Euclidean_algorithm\n\n\n var zero = new BigNumber(0);\n\n while (!b.isZero()) {\n var r = a.mod(b);\n a = b;\n b = r;\n }\n\n return a.lt(zero) ? a.neg() : a;\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm02';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm02 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij).\n * Callback function invoked NNZ times (number of nonzero items in SparseMatrix).\n *\n *\n * ┌ f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = ┤\n * └ 0 ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (S)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function algorithm02(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype; // sparse matrix arrays\n\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // sparse matrix cannot be a Pattern matrix\n\n\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result (SparseMatrix)\n\n\n var cvalues = [];\n var cindex = [];\n var cptr = []; // loop columns in b\n\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length; // values in column j\n\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = bindex[k]; // update C(i,j)\n\n var cij = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]); // check for nonzero\n\n if (!eq(cij, zero)) {\n // push i & v\n cindex.push(i);\n cvalues.push(cij);\n }\n }\n } // update cptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return sparseMatrix.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nimport { scatter } from '../../../utils/collection.js';\nvar name = 'algorithm06';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm06 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked (Anz U Bnz) times, where Anz and Bnz are the nonzero elements in both matrices.\n *\n *\n * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = ┤\n * └ 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function algorithm06(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var asize = a._size;\n var adt = a._datatype; // sparse matrix arrays\n\n var bvalues = b._values;\n var bsize = b._size;\n var bdt = b._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = []; // workspaces\n\n var x = cvalues ? [] : undefined; // marks indicating we have a value in x for a given column\n\n var w = []; // marks indicating value in a given row has been updated\n\n var u = []; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length; // columns mark\n\n var mark = j + 1; // scatter the values of A(:,j) into workspace\n\n scatter(a, j, w, x, u, mark, cindex, cf); // scatter the values of B(:,j) into workspace\n\n scatter(b, j, w, x, u, mark, cindex, cf); // check we need to process values (non pattern matrix)\n\n if (x) {\n // initialize first index in j\n var k = cptr[j]; // loop index in j\n\n while (k < cindex.length) {\n // row\n var i = cindex[k]; // check function was invoked on current row (Aij !=0 && Bij != 0)\n\n if (u[i] === mark) {\n // value @ i\n var v = x[i]; // check for zero value\n\n if (!eq(v, zero)) {\n // push value\n cvalues.push(v); // increment pointer\n\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n } else {\n // initialize first index in j\n var p = cptr[j]; // loop index in j\n\n while (p < cindex.length) {\n // row\n var r = cindex[p]; // check function was invoked on current row (Aij !=0 && Bij != 0)\n\n if (u[r] !== mark) {\n // remove value @ i, do not increment pointer\n cindex.splice(p, 1);\n } else {\n // increment pointer\n p++;\n }\n }\n }\n } // update cptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm06 } from '../../type/matrix/utils/algorithm06.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { lcmNumber } from '../../plain/number/index.js';\nvar name = 'lcm';\nvar dependencies = ['typed', 'matrix', 'equalScalar'];\nexport var createLcm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm06 = createAlgorithm06({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Calculate the least common multiple for two or more values or arrays.\n *\n * lcm is defined as:\n *\n * lcm(a, b) = abs(a * b) / gcd(a, b)\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.lcm(a, b)\n * math.lcm(a, b, c, ...)\n *\n * Examples:\n *\n * math.lcm(4, 6) // returns 12\n * math.lcm(6, 21) // returns 42\n * math.lcm(6, 21, 5) // returns 210\n *\n * math.lcm([4, 6], [6, 21]) // returns [12, 42]\n *\n * See also:\n *\n * gcd, xgcd\n *\n * @param {... number | BigNumber | Array | Matrix} args Two or more integer numbers\n * @return {number | BigNumber | Array | Matrix} The least common multiple\n */\n\n return typed(name, {\n 'number, number': lcmNumber,\n 'BigNumber, BigNumber': _lcmBigNumber,\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.lcm(y);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm06(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm02(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n return algorithm11(y, x, this, true);\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n },\n // TODO: need a smarter notation here\n 'Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber': function ArrayMatrixNumberBigNumberArrayMatrixNumberBigNumberArrayMatrixNumberBigNumber(a, b, args) {\n var res = this(a, b);\n\n for (var i = 0; i < args.length; i++) {\n res = this(res, args[i]);\n }\n\n return res;\n }\n });\n /**\n * Calculate lcm for two BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @returns {BigNumber} Returns the least common multiple of a and b\n * @private\n */\n\n function _lcmBigNumber(a, b) {\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function lcm must be integer numbers');\n }\n\n if (a.isZero()) {\n return a;\n }\n\n if (b.isZero()) {\n return b;\n } // https://en.wikipedia.org/wiki/Euclidean_algorithm\n // evaluate lcm here inline to reduce overhead\n\n\n var prod = a.times(b);\n\n while (!b.isZero()) {\n var t = b;\n b = a.mod(t);\n a = t;\n }\n\n return prod.div(a).abs();\n }\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log10Number } from '../../plain/number/index.js';\nvar name = 'log10';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex: _Complex\n } = _ref;\n\n /**\n * Calculate the 10-base logarithm of a value. This is the same as calculating `log(x, 10)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log10(x)\n *\n * Examples:\n *\n * math.log10(0.00001) // returns -5\n * math.log10(10000) // returns 4\n * math.log(10000) / math.log(10) // returns 4\n * math.pow(10, 4) // returns 10000\n *\n * See also:\n *\n * exp, log, log1p, log2\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the 10-base logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return log10Number(x);\n } else {\n // negative value -> complex value computation\n return new _Complex(x, 0).log().div(Math.LN10);\n }\n },\n Complex: function Complex(x) {\n return new _Complex(x).log().div(Math.LN10);\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.log();\n } else {\n // downgrade to number, return Complex valued result\n return new _Complex(x.toNumber(), 0).log().div(Math.LN10);\n }\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log2Number } from '../../plain/number/index.js';\nvar name = 'log2';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createLog2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n\n /**\n * Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log2(x)\n *\n * Examples:\n *\n * math.log2(0.03125) // returns -5\n * math.log2(16) // returns 4\n * math.log2(16) / math.log2(2) // returns 4\n * math.pow(2, 4) // returns 16\n *\n * See also:\n *\n * exp, log, log1p, log10\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the 2-base logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return log2Number(x);\n } else {\n // negative value -> complex value computation\n return _log2Complex(new Complex(x, 0));\n }\n },\n Complex: _log2Complex,\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.log(2);\n } else {\n // downgrade to number, return Complex valued result\n return _log2Complex(new Complex(x.toNumber(), 0));\n }\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n /**\n * Calculate log2 for a complex value\n * @param {Complex} x\n * @returns {Complex}\n * @private\n */\n\n function _log2Complex(x) {\n var newX = Math.sqrt(x.re * x.re + x.im * x.im);\n return new Complex(Math.log2 ? Math.log2(newX) : Math.log(newX) / Math.LN2, Math.atan2(x.im, x.re) / Math.LN2);\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm03';\nvar dependencies = ['typed'];\nexport var createAlgorithm03 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Iterates over SparseMatrix items and invokes the callback function f(Dij, Sij).\n * Callback function invoked M*N times.\n *\n *\n * ┌ f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = ┤\n * └ f(Dij, 0) ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (C)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function algorithm03(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype; // sparse matrix arrays\n\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // sparse matrix cannot be a Pattern matrix\n\n\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result (DenseMatrix)\n\n\n var cdata = []; // initialize dense matrix\n\n for (var z = 0; z < rows; z++) {\n // initialize row\n cdata[z] = [];\n } // workspace\n\n\n var x = []; // marks indicating we have a value in x for a given column\n\n var w = []; // loop columns in b\n\n for (var j = 0; j < columns; j++) {\n // column mark\n var mark = j + 1; // values in column j\n\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = bindex[k]; // update workspace\n\n x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n w[i] = mark;\n } // process workspace\n\n\n for (var y = 0; y < rows; y++) {\n // check we have a calculated value for current row\n if (w[y] === mark) {\n // use calculated value\n cdata[y][j] = x[y];\n } else {\n // calculate value\n cdata[y][j] = inverse ? cf(zero, adata[y][j]) : cf(adata[y][j], zero);\n }\n }\n } // return dense matrix\n\n\n return denseMatrix.createDenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm05';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm05 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * ┌ f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0\n * C(i,j) = ┤\n * └ 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function algorithm05(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype; // sparse matrix arrays\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = []; // workspaces\n\n var xa = cvalues ? [] : undefined;\n var xb = cvalues ? [] : undefined; // marks indicating we have a value in x for a given column\n\n var wa = [];\n var wb = []; // vars\n\n var i, j, k, k1; // loop columns\n\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length; // columns mark\n\n var mark = j + 1; // loop values A(:,j)\n\n for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) {\n // row\n i = aindex[k]; // push index\n\n cindex.push(i); // update workspace\n\n wa[i] = mark; // check we need to process values\n\n if (xa) {\n xa[i] = avalues[k];\n }\n } // loop values B(:,j)\n\n\n for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) {\n // row\n i = bindex[k]; // check row existed in A\n\n if (wa[i] !== mark) {\n // push index\n cindex.push(i);\n } // update workspace\n\n\n wb[i] = mark; // check we need to process values\n\n if (xb) {\n xb[i] = bvalues[k];\n }\n } // check we need to process values (non pattern matrix)\n\n\n if (cvalues) {\n // initialize first index in j\n k = cptr[j]; // loop index in j\n\n while (k < cindex.length) {\n // row\n i = cindex[k]; // marks\n\n var wai = wa[i];\n var wbi = wb[i]; // check Aij or Bij are nonzero\n\n if (wai === mark || wbi === mark) {\n // matrix values @ i,j\n var va = wai === mark ? xa[i] : zero;\n var vb = wbi === mark ? xb[i] : zero; // Cij\n\n var vc = cf(va, vb); // check for zero\n\n if (!eq(vc, zero)) {\n // push value\n cvalues.push(vc); // increment pointer\n\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n }\n }\n } // update cptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'algorithm12';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createAlgorithm12 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked MxN times.\n *\n *\n * ┌ f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = ┤\n * └ f(0, b) ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function algorithm12(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype; // sparse matrix cannot be a Pattern matrix\n\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string') {\n // datatype\n dt = adt; // convert b to the same datatype\n\n b = typed.convert(b, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cdata = []; // workspaces\n\n var x = []; // marks indicating we have a value in x for a given column\n\n var w = []; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1; // values in j\n\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var r = aindex[k]; // update workspace\n\n x[r] = avalues[k];\n w[r] = mark;\n } // loop rows\n\n\n for (var i = 0; i < rows; i++) {\n // initialize C on first column\n if (j === 0) {\n // create row array\n cdata[i] = [];\n } // check sparse matrix has a value @ i,j\n\n\n if (w[i] === mark) {\n // invoke callback, update C\n cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);\n } else {\n // dense matrix value @ i, j\n cdata[i][j] = inverse ? cf(b, 0) : cf(0, b);\n }\n }\n } // return dense matrix\n\n\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm05 } from '../../type/matrix/utils/algorithm05.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { modNumber } from '../../plain/number/index.js';\nvar name = 'mod';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];\nexport var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm05 = createAlgorithm05({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Calculates the modulus, the remainder of an integer division.\n *\n * For matrices, the function is evaluated element wise.\n *\n * The modulus is defined as:\n *\n * x - y * floor(x / y)\n *\n * See https://en.wikipedia.org/wiki/Modulo_operation.\n *\n * Syntax:\n *\n * math.mod(x, y)\n *\n * Examples:\n *\n * math.mod(8, 3) // returns 2\n * math.mod(11, 2) // returns 1\n *\n * function isOdd(x) {\n * return math.mod(x, 2) != 0\n * }\n *\n * isOdd(2) // returns false\n * isOdd(3) // returns true\n *\n * See also:\n *\n * divide\n *\n * @param {number | BigNumber | Fraction | Array | Matrix} x Dividend\n * @param {number | BigNumber | Fraction | Array | Matrix} y Divisor\n * @return {number | BigNumber | Fraction | Array | Matrix} Returns the remainder of `x` divided by `y`.\n */\n\n return typed(name, {\n 'number, number': modNumber,\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n if (y.isNeg()) {\n throw new Error('Cannot calculate mod for a negative divisor');\n }\n\n return y.isZero() ? x : x.mod(y);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n if (y.compare(0) < 0) {\n throw new Error('Cannot calculate mod for a negative divisor');\n } // Workaround suggested in Fraction.js library to calculate correct modulo for negative dividend\n\n\n return x.compare(0) >= 0 ? x.mod(y) : x.mod(y).add(y).mod(y);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm05(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { multiplyNumber } from '../../plain/number/index.js';\nvar name = 'multiplyScalar';\nvar dependencies = ['typed'];\nexport var createMultiplyScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Multiply two scalar values, `x * y`.\n * This function is meant for internal use: it is used by the public function\n * `multiply`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | Fraction | Complex | Unit} x First value to multiply\n * @param {number | BigNumber | Fraction | Complex} y Second value to multiply\n * @return {number | BigNumber | Fraction | Complex | Unit} Multiplication of `x` and `y`\n * @private\n */\n return typed('multiplyScalar', {\n 'number, number': multiplyNumber,\n 'Complex, Complex': function ComplexComplex(x, y) {\n return x.mul(y);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.times(y);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.mul(y);\n },\n 'number | Fraction | BigNumber | Complex, Unit': function numberFractionBigNumberComplexUnit(x, y) {\n var res = y.clone();\n res.value = res.value === null ? res._normalize(x) : this(res.value, x);\n return res;\n },\n 'Unit, number | Fraction | BigNumber | Complex': function UnitNumberFractionBigNumberComplex(x, y) {\n var res = x.clone();\n res.value = res.value === null ? res._normalize(y) : this(res.value, y);\n return res;\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n return x.multiply(y);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { extend } from '../../utils/object.js';\nimport { arraySize } from '../../utils/array.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'multiply';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'equalScalar', 'dot'];\nexport var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n multiplyScalar,\n equalScalar,\n dot\n } = _ref;\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n\n function _validateMatrixDimensions(size1, size2) {\n // check left operand dimensions\n switch (size1.length) {\n case 1:\n // check size2\n switch (size2.length) {\n case 1:\n // Vector x Vector\n if (size1[0] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Vectors must have the same length');\n }\n\n break;\n\n case 2:\n // Vector x Matrix\n if (size1[0] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Vector length (' + size1[0] + ') must match Matrix rows (' + size2[0] + ')');\n }\n\n break;\n\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)');\n }\n\n break;\n\n case 2:\n // check size2\n switch (size2.length) {\n case 1:\n // Matrix x Vector\n if (size1[1] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Matrix columns (' + size1[1] + ') must match Vector length (' + size2[0] + ')');\n }\n\n break;\n\n case 2:\n // Matrix x Matrix\n if (size1[1] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Matrix A columns (' + size1[1] + ') must match Matrix B rows (' + size2[0] + ')');\n }\n\n break;\n\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)');\n }\n\n break;\n\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix A has ' + size1.length + ' dimensions)');\n }\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (N)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {number} Scalar value\n */\n\n\n function _multiplyVectorVector(a, b, n) {\n // check empty vector\n if (n === 0) {\n throw new Error('Cannot multiply two empty vectors');\n }\n\n return dot(a, b);\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (M)\n * @param {Matrix} b Matrix (MxN)\n *\n * @return {Matrix} Dense Vector (N)\n */\n\n\n function _multiplyVectorMatrix(a, b) {\n // process storage\n if (b.storage() !== 'dense') {\n throw new Error('Support for SparseMatrix not implemented');\n }\n\n return _multiplyVectorDenseMatrix(a, b);\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (M)\n * @param {Matrix} b Dense Matrix (MxN)\n *\n * @return {Matrix} Dense Vector (N)\n */\n\n\n function _multiplyVectorDenseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype; // b dense\n\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype; // rows & columns\n\n var alength = asize[0];\n var bcolumns = bsize[1]; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n } // result\n\n\n var c = []; // loop matrix columns\n\n for (var j = 0; j < bcolumns; j++) {\n // sum (do not initialize it with zero)\n var sum = mf(adata[0], bdata[0][j]); // loop vector\n\n for (var i = 1; i < alength; i++) {\n // multiply & accumulate\n sum = af(sum, mf(adata[i], bdata[i][j]));\n }\n\n c[j] = sum;\n } // return matrix\n\n\n return a.createDenseMatrix({\n data: c,\n size: [bcolumns],\n datatype: dt\n });\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a Matrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} Dense Vector (M)\n */\n\n\n var _multiplyMatrixVector = typed('_multiplyMatrixVector', {\n 'DenseMatrix, any': _multiplyDenseMatrixVector,\n 'SparseMatrix, any': _multiplySparseMatrixVector\n });\n /**\n * C = A * B\n *\n * @param {Matrix} a Matrix (MxN)\n * @param {Matrix} b Matrix (NxC)\n *\n * @return {Matrix} Matrix (MxC)\n */\n\n\n var _multiplyMatrixMatrix = typed('_multiplyMatrixMatrix', {\n 'DenseMatrix, DenseMatrix': _multiplyDenseMatrixDenseMatrix,\n 'DenseMatrix, SparseMatrix': _multiplyDenseMatrixSparseMatrix,\n 'SparseMatrix, DenseMatrix': _multiplySparseMatrixDenseMatrix,\n 'SparseMatrix, SparseMatrix': _multiplySparseMatrixSparseMatrix\n });\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} Dense Vector (M)\n */\n\n\n function _multiplyDenseMatrixVector(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype; // b dense\n\n var bdata = b._data;\n var bdt = b._datatype; // rows & columns\n\n var arows = asize[0];\n var acolumns = asize[1]; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n } // result\n\n\n var c = []; // loop matrix a rows\n\n for (var i = 0; i < arows; i++) {\n // current row\n var row = adata[i]; // sum (do not initialize it with zero)\n\n var sum = mf(row[0], bdata[0]); // loop matrix a columns\n\n for (var j = 1; j < acolumns; j++) {\n // multiply & accumulate\n sum = af(sum, mf(row[j], bdata[j]));\n }\n\n c[i] = sum;\n } // return matrix\n\n\n return a.createDenseMatrix({\n data: c,\n size: [arows],\n datatype: dt\n });\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b DenseMatrix (NxC)\n *\n * @return {Matrix} DenseMatrix (MxC)\n */\n\n\n function _multiplyDenseMatrixDenseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype; // b dense\n\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype; // rows & columns\n\n var arows = asize[0];\n var acolumns = asize[1];\n var bcolumns = bsize[1]; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n } // result\n\n\n var c = []; // loop matrix a rows\n\n for (var i = 0; i < arows; i++) {\n // current row\n var row = adata[i]; // initialize row array\n\n c[i] = []; // loop matrix b columns\n\n for (var j = 0; j < bcolumns; j++) {\n // sum (avoid initializing sum to zero)\n var sum = mf(row[0], bdata[0][j]); // loop matrix a columns\n\n for (var x = 1; x < acolumns; x++) {\n // multiply & accumulate\n sum = af(sum, mf(row[x], bdata[x][j]));\n }\n\n c[i][j] = sum;\n }\n } // return matrix\n\n\n return a.createDenseMatrix({\n data: c,\n size: [arows, bcolumns],\n datatype: dt\n });\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b SparseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n\n\n function _multiplyDenseMatrixSparseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype; // b sparse\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype; // validate b matrix\n\n if (!bvalues) {\n throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix');\n } // rows & columns\n\n\n var arows = asize[0];\n var bcolumns = bsize[1]; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // equalScalar signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt);\n } // result\n\n\n var cvalues = [];\n var cindex = [];\n var cptr = []; // c matrix\n\n var c = b.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: dt\n }); // loop b columns\n\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length; // indeces in column jb\n\n var kb0 = bptr[jb];\n var kb1 = bptr[jb + 1]; // do not process column jb if no data exists\n\n if (kb1 > kb0) {\n // last row mark processed\n var last = 0; // loop a rows\n\n for (var i = 0; i < arows; i++) {\n // column mark\n var mark = i + 1; // C[i, jb]\n\n var cij = void 0; // values in b column j\n\n for (var kb = kb0; kb < kb1; kb++) {\n // row\n var ib = bindex[kb]; // check value has been initialized\n\n if (last !== mark) {\n // first value in column jb\n cij = mf(adata[i][ib], bvalues[kb]); // update mark\n\n last = mark;\n } else {\n // accumulate value\n cij = af(cij, mf(adata[i][ib], bvalues[kb]));\n }\n } // check column has been processed and value != 0\n\n\n if (last === mark && !eq(cij, zero)) {\n // push row & value\n cindex.push(i);\n cvalues.push(cij);\n }\n }\n }\n } // update ptr\n\n\n cptr[bcolumns] = cindex.length; // return sparse matrix\n\n return c;\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} SparseMatrix (M, 1)\n */\n\n\n function _multiplySparseMatrixVector(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype; // validate a matrix\n\n if (!avalues) {\n throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');\n } // b dense\n\n\n var bdata = b._data;\n var bdt = b._datatype; // rows & columns\n\n var arows = a._size[0];\n var brows = b._size[0]; // result\n\n var cvalues = [];\n var cindex = [];\n var cptr = []; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // equalScalar signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt);\n } // workspace\n\n\n var x = []; // vector with marks indicating a value x[i] exists in a given column\n\n var w = []; // update ptr\n\n cptr[0] = 0; // rows in b\n\n for (var ib = 0; ib < brows; ib++) {\n // b[ib]\n var vbi = bdata[ib]; // check b[ib] != 0, avoid loops\n\n if (!eq(vbi, zero)) {\n // A values & index in ib column\n for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // a row\n var ia = aindex[ka]; // check value exists in current j\n\n if (!w[ia]) {\n // ia is new entry in j\n w[ia] = true; // add i to pattern of C\n\n cindex.push(ia); // x(ia) = A\n\n x[ia] = mf(vbi, avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(vbi, avalues[ka]));\n }\n }\n }\n } // copy values from x to column jb of c\n\n\n for (var p1 = cindex.length, p = 0; p < p1; p++) {\n // row\n var ic = cindex[p]; // copy value\n\n cvalues[p] = x[ic];\n } // update ptr\n\n\n cptr[1] = cindex.length; // return sparse matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, 1],\n datatype: dt\n });\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b DenseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n\n\n function _multiplySparseMatrixDenseMatrix(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype; // validate a matrix\n\n if (!avalues) {\n throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');\n } // b dense\n\n\n var bdata = b._data;\n var bdt = b._datatype; // rows & columns\n\n var arows = a._size[0];\n var brows = b._size[0];\n var bcolumns = b._size[1]; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // equalScalar signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt);\n } // result\n\n\n var cvalues = [];\n var cindex = [];\n var cptr = []; // c matrix\n\n var c = a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: dt\n }); // workspace\n\n var x = []; // vector with marks indicating a value x[i] exists in a given column\n\n var w = []; // loop b columns\n\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length; // mark in workspace for current column\n\n var mark = jb + 1; // rows in jb\n\n for (var ib = 0; ib < brows; ib++) {\n // b[ib, jb]\n var vbij = bdata[ib][jb]; // check b[ib, jb] != 0, avoid loops\n\n if (!eq(vbij, zero)) {\n // A values & index in ib column\n for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // a row\n var ia = aindex[ka]; // check value exists in current j\n\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark; // add i to pattern of C\n\n cindex.push(ia); // x(ia) = A\n\n x[ia] = mf(vbij, avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(vbij, avalues[ka]));\n }\n }\n }\n } // copy values from x to column jb of c\n\n\n for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {\n // row\n var ic = cindex[p]; // copy value\n\n cvalues[p] = x[ic];\n }\n } // update ptr\n\n\n cptr[bcolumns] = cindex.length; // return sparse matrix\n\n return c;\n }\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b SparseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n\n\n function _multiplySparseMatrixSparseMatrix(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype; // b sparse\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bdt = b._datatype; // rows & columns\n\n var arows = a._size[0];\n var bcolumns = b._size[1]; // flag indicating both matrices (a & b) contain data\n\n var values = avalues && bvalues; // datatype\n\n var dt; // addScalar signature to use\n\n var af = addScalar; // multiplyScalar signature to use\n\n var mf = multiplyScalar; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n // datatype\n dt = adt; // find signatures that matches (dt, dt)\n\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n } // result\n\n\n var cvalues = values ? [] : undefined;\n var cindex = [];\n var cptr = []; // c matrix\n\n var c = a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: dt\n }); // workspace\n\n var x = values ? [] : undefined; // vector with marks indicating a value x[i] exists in a given column\n\n var w = []; // variables\n\n var ka, ka0, ka1, kb, kb0, kb1, ia, ib; // loop b columns\n\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length; // mark in workspace for current column\n\n var mark = jb + 1; // B values & index in j\n\n for (kb0 = bptr[jb], kb1 = bptr[jb + 1], kb = kb0; kb < kb1; kb++) {\n // b row\n ib = bindex[kb]; // check we need to process values\n\n if (values) {\n // loop values in a[:,ib]\n for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // row\n ia = aindex[ka]; // check value exists in current j\n\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark; // add i to pattern of C\n\n cindex.push(ia); // x(ia) = A\n\n x[ia] = mf(bvalues[kb], avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(bvalues[kb], avalues[ka]));\n }\n }\n } else {\n // loop values in a[:,ib]\n for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // row\n ia = aindex[ka]; // check value exists in current j\n\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark; // add i to pattern of C\n\n cindex.push(ia);\n }\n }\n }\n } // check we need to process matrix values (pattern matrix)\n\n\n if (values) {\n // copy values from x to column jb of c\n for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {\n // row\n var ic = cindex[p]; // copy value\n\n cvalues[p] = x[ic];\n }\n }\n } // update ptr\n\n\n cptr[bcolumns] = cindex.length; // return sparse matrix\n\n return c;\n }\n /**\n * Multiply two or more values, `x * y`.\n * For matrices, the matrix product is calculated.\n *\n * Syntax:\n *\n * math.multiply(x, y)\n * math.multiply(x, y, z, ...)\n *\n * Examples:\n *\n * math.multiply(4, 5.2) // returns number 20.8\n * math.multiply(2, 3, 4) // returns number 24\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(4, 1)\n * math.multiply(a, b) // returns Complex 5 + 14i\n *\n * const c = [[1, 2], [4, 3]]\n * const d = [[1, 2, 3], [3, -4, 7]]\n * math.multiply(c, d) // returns Array [[7, -6, 17], [13, -4, 33]]\n *\n * const e = math.unit('2.1 km')\n * math.multiply(3, e) // returns Unit 6.3 km\n *\n * See also:\n *\n * divide, prod, cross, dot\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First value to multiply\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second value to multiply\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`\n */\n\n\n return typed(name, extend({\n // we extend the signatures of multiplyScalar with signatures dealing with matrices\n 'Array, Array': function ArrayArray(x, y) {\n // check dimensions\n _validateMatrixDimensions(arraySize(x), arraySize(y)); // use dense matrix implementation\n\n\n var m = this(matrix(x), matrix(y)); // return array or scalar\n\n return isMatrix(m) ? m.valueOf() : m;\n },\n 'Matrix, Matrix': function MatrixMatrix(x, y) {\n // dimensions\n var xsize = x.size();\n var ysize = y.size(); // check dimensions\n\n _validateMatrixDimensions(xsize, ysize); // process dimensions\n\n\n if (xsize.length === 1) {\n // process y dimensions\n if (ysize.length === 1) {\n // Vector * Vector\n return _multiplyVectorVector(x, y, xsize[0]);\n } // Vector * Matrix\n\n\n return _multiplyVectorMatrix(x, y);\n } // process y dimensions\n\n\n if (ysize.length === 1) {\n // Matrix * Vector\n return _multiplyMatrixVector(x, y);\n } // Matrix * Matrix\n\n\n return _multiplyMatrixMatrix(x, y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use Matrix * Matrix implementation\n return this(x, matrix(y));\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use Matrix * Matrix implementation\n return this(matrix(x, y.storage()), y);\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, multiplyScalar, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, multiplyScalar, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm11(y, x, multiplyScalar, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, multiplyScalar, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, multiplyScalar, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, multiplyScalar, true).valueOf();\n },\n 'any, any': multiplyScalar,\n 'any, any, ...any': function anyAnyAny(x, y, rest) {\n var result = this(x, y);\n\n for (var i = 0; i < rest.length; i++) {\n result = this(result, rest[i]);\n }\n\n return result;\n }\n }, multiplyScalar.signatures));\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm06 } from '../../type/matrix/utils/algorithm06.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { nthRootNumber } from '../../plain/number/index.js';\nvar name = 'nthRoot';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber'];\nexport var createNthRoot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber: _BigNumber\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm06 = createAlgorithm06({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Calculate the nth root of a value.\n * The principal nth root of a positive real number A, is the positive real\n * solution of the equation\n *\n * x^root = A\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.nthRoot(a)\n * math.nthRoot(a, root)\n *\n * Examples:\n *\n * math.nthRoot(9, 2) // returns 3, as 3^2 == 9\n * math.sqrt(9) // returns 3, as 3^2 == 9\n * math.nthRoot(64, 3) // returns 4, as 4^3 == 64\n *\n * See also:\n *\n * sqrt, pow\n *\n * @param {number | BigNumber | Array | Matrix | Complex} a\n * Value for which to calculate the nth root\n * @param {number | BigNumber} [root=2] The root.\n * @return {number | Complex | Array | Matrix} Returns the nth root of `a`\n */\n\n var complexErr = '' + 'Complex number not supported in function nthRoot. ' + 'Use nthRoots instead.';\n return typed(name, {\n number: function number(x) {\n return nthRootNumber(x, 2);\n },\n 'number, number': nthRootNumber,\n BigNumber: function BigNumber(x) {\n return _bigNthRoot(x, new _BigNumber(2));\n },\n Complex: function Complex(x) {\n throw new Error(complexErr);\n },\n 'Complex, number': function ComplexNumber(x, y) {\n throw new Error(complexErr);\n },\n 'BigNumber, BigNumber': _bigNthRoot,\n 'Array | Matrix': function ArrayMatrix(x) {\n return this(x, 2);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // sparse + sparse\n return algorithm06(x, y, this);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // dense + sparse\n return algorithm01(x, y, this, false);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // sparse - scalar\n return algorithm11(y, x, this, true);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return this(matrix(x), y).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y)).valueOf();\n }\n });\n /**\n * Calculate the nth root of a for BigNumbers, solve x^root == a\n * https://rosettacode.org/wiki/Nth_root#JavaScript\n * @param {BigNumber} a\n * @param {BigNumber} root\n * @private\n */\n\n function _bigNthRoot(a, root) {\n var precision = _BigNumber.precision;\n\n var Big = _BigNumber.clone({\n precision: precision + 2\n });\n\n var zero = new _BigNumber(0);\n var one = new Big(1);\n var inv = root.isNegative();\n\n if (inv) {\n root = root.neg();\n }\n\n if (root.isZero()) {\n throw new Error('Root must be non-zero');\n }\n\n if (a.isNegative() && !root.abs().mod(2).equals(1)) {\n throw new Error('Root must be odd when a is negative.');\n } // edge cases zero and infinity\n\n\n if (a.isZero()) {\n return inv ? new Big(Infinity) : 0;\n }\n\n if (!a.isFinite()) {\n return inv ? zero : a;\n }\n\n var x = a.abs().pow(one.div(root)); // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n\n x = a.isNeg() ? x.neg() : x;\n return new _BigNumber((inv ? one.div(x) : x).toPrecision(precision));\n }\n});\nexport var createNthRootNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, {\n number: nthRootNumber,\n 'number, number': nthRootNumber\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { signNumber } from '../../plain/number/index.js';\nvar name = 'sign';\nvar dependencies = ['typed', 'BigNumber', 'Fraction', 'complex'];\nexport var createSign = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber,\n complex,\n Fraction: _Fraction\n } = _ref;\n\n /**\n * Compute the sign of a value. The sign of a value x is:\n *\n * - 1 when x > 0\n * - -1 when x < 0\n * - 0 when x == 0\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sign(x)\n *\n * Examples:\n *\n * math.sign(3.5) // returns 1\n * math.sign(-4.2) // returns -1\n * math.sign(0) // returns 0\n *\n * math.sign([3, 5, -2, 0, 2]) // returns [1, 1, -1, 0, 1]\n *\n * See also:\n *\n * abs\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x\n * The number for which to determine the sign\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit}e\n * The sign of `x`\n */\n return typed(name, {\n number: signNumber,\n Complex: function Complex(x) {\n return x.im === 0 ? complex(signNumber(x.re)) : x.sign();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(x.cmp(0));\n },\n Fraction: function Fraction(x) {\n return new _Fraction(x.s, 1);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since sign(0) = 0\n return deepMap(x, this, true);\n },\n Unit: function Unit(x) {\n return this(x.value);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'sqrt';\nvar dependencies = ['config', 'typed', 'Complex'];\nexport var createSqrt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n Complex\n } = _ref;\n\n /**\n * Calculate the square root of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sqrt(x)\n *\n * Examples:\n *\n * math.sqrt(25) // returns 5\n * math.square(5) // returns 25\n * math.sqrt(-4) // returns Complex 2i\n *\n * See also:\n *\n * square, multiply, cube, cbrt, sqrtm\n *\n * @param {number | BigNumber | Complex | Array | Matrix | Unit} x\n * Value for which to calculate the square root.\n * @return {number | BigNumber | Complex | Array | Matrix | Unit}\n * Returns the square root of `x`\n */\n return typed('sqrt', {\n number: _sqrtNumber,\n Complex: function Complex(x) {\n return x.sqrt();\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.sqrt();\n } else {\n // negative value -> downgrade to number to do complex value computation\n return _sqrtNumber(x.toNumber());\n }\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since sqrt(0) = 0\n return deepMap(x, this, true);\n },\n Unit: function Unit(x) {\n // Someday will work for complex units when they are implemented\n return x.pow(0.5);\n }\n });\n /**\n * Calculate sqrt for a number\n * @param {number} x\n * @returns {number | Complex} Returns the square root of x\n * @private\n */\n\n function _sqrtNumber(x) {\n if (isNaN(x)) {\n return NaN;\n } else if (x >= 0 || config.predictable) {\n return Math.sqrt(x);\n } else {\n return new Complex(x, 0).sqrt();\n }\n }\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { squareNumber } from '../../plain/number/index.js';\nvar name = 'square';\nvar dependencies = ['typed'];\nexport var createSquare = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the square of a value, `x * x`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.square(x)\n *\n * Examples:\n *\n * math.square(2) // returns number 4\n * math.square(3) // returns number 9\n * math.pow(3, 2) // returns number 9\n * math.multiply(3, 3) // returns number 9\n *\n * math.square([1, 2, 3, 4]) // returns Array [1, 4, 9, 16]\n *\n * See also:\n *\n * multiply, cube, sqrt, pow\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x\n * Number for which to calculate the square\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit}\n * Squared value\n */\n return typed(name, {\n number: squareNumber,\n Complex: function Complex(x) {\n return x.mul(x);\n },\n BigNumber: function BigNumber(x) {\n return x.times(x);\n },\n Fraction: function Fraction(x) {\n return x.mul(x);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since square(0) = 0\n return deepMap(x, this, true);\n },\n Unit: function Unit(x) {\n return x.pow(2);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm05 } from '../../type/matrix/utils/algorithm05.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'subtract';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'addScalar', 'unaryMinus', 'DenseMatrix'];\nexport var createSubtract = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n addScalar,\n unaryMinus,\n DenseMatrix\n } = _ref;\n // TODO: split function subtract in two: subtract and subtractScalar\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm05 = createAlgorithm05({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Subtract two values, `x - y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.subtract(x, y)\n *\n * Examples:\n *\n * math.subtract(5.3, 2) // returns number 3.3\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(4, 1)\n * math.subtract(a, b) // returns Complex -2 + 2i\n *\n * math.subtract([5, 7, 4], 4) // returns Array [1, 3, 0]\n *\n * const c = math.unit('2.1 km')\n * const d = math.unit('500m')\n * math.subtract(c, d) // returns Unit 1.6 km\n *\n * See also:\n *\n * add\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x\n * Initial value\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y\n * Value to subtract from `x`\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix}\n * Subtraction of `x` and `y`\n */\n\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return x - y;\n },\n 'Complex, Complex': function ComplexComplex(x, y) {\n return x.sub(y);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.minus(y);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.sub(y);\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (x.value === null) {\n throw new Error('Parameter x contains a unit with undefined value');\n }\n\n if (y.value === null) {\n throw new Error('Parameter y contains a unit with undefined value');\n }\n\n if (!x.equalBase(y)) {\n throw new Error('Units do not match');\n }\n\n var res = x.clone();\n res.value = this(res.value, y.value);\n res.fixPrefix = false;\n return res;\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n checkEqualDimensions(x, y);\n return algorithm05(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n checkEqualDimensions(x, y);\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n checkEqualDimensions(x, y);\n return algorithm01(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n checkEqualDimensions(x, y);\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm10(x, unaryMinus(y), addScalar);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm10(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});\n/**\n * Check whether matrix x and y have the same number of dimensions.\n * Throws a DimensionError when dimensions are not equal\n * @param {Matrix} x\n * @param {Matrix} y\n */\n\nfunction checkEqualDimensions(x, y) {\n var xsize = x.size();\n var ysize = y.size();\n\n if (xsize.length !== ysize.length) {\n throw new DimensionError(xsize.length, ysize.length);\n }\n}","import { factory } from '../../utils/factory.js';\nimport { xgcdNumber } from '../../plain/number/index.js';\nvar name = 'xgcd';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createXgcd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n\n /**\n * Calculate the extended greatest common divisor for two values.\n * See https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm.\n *\n * Syntax:\n *\n * math.xgcd(a, b)\n *\n * Examples:\n *\n * math.xgcd(8, 12) // returns [4, -1, 1]\n * math.gcd(8, 12) // returns 4\n * math.xgcd(36163, 21199) // returns [1247, -7, 12]\n *\n * See also:\n *\n * gcd, lcm\n *\n * @param {number | BigNumber} a An integer number\n * @param {number | BigNumber} b An integer number\n * @return {Array} Returns an array containing 3 integers `[div, m, n]`\n * where `div = gcd(a, b)` and `a*m + b*n = div`\n */\n return typed(name, {\n 'number, number': function numberNumber(a, b) {\n var res = xgcdNumber(a, b);\n return config.matrix === 'Array' ? res : matrix(res);\n },\n 'BigNumber, BigNumber': _xgcdBigNumber // TODO: implement support for Fraction\n\n });\n /**\n * Calculate xgcd for two BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @return {BigNumber[]} result\n * @private\n */\n\n function _xgcdBigNumber(a, b) {\n // source: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm\n var // used to swap two variables\n t;\n var // quotient\n q;\n var // remainder\n r;\n var zero = new BigNumber(0);\n var one = new BigNumber(1);\n var x = zero;\n var lastx = one;\n var y = one;\n var lasty = zero;\n\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function xgcd must be integer numbers');\n }\n\n while (!b.isZero()) {\n q = a.div(b).floor();\n r = a.mod(b);\n t = x;\n x = lastx.minus(q.times(x));\n lastx = t;\n t = y;\n y = lasty.minus(q.times(y));\n lasty = t;\n a = b;\n b = r;\n }\n\n var res;\n\n if (a.lt(zero)) {\n res = [a.neg(), lastx.neg(), lasty.neg()];\n } else {\n res = [a, !a.isZero() ? lastx : 0, lasty];\n }\n\n return config.matrix === 'Array' ? res : matrix(res);\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm09';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm09 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix A and invokes the callback function f(Aij, Bij).\n * Callback function invoked NZA times, number of nonzero elements in A.\n *\n *\n * ┌ f(Aij, Bij) ; A(i,j) !== 0\n * C(i,j) = ┤\n * └ 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function algorithm09(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype; // sparse matrix arrays\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = []; // workspaces\n\n var x = cvalues ? [] : undefined; // marks indicating we have a value in x for a given column\n\n var w = []; // vars\n\n var i, j, k, k0, k1; // loop columns\n\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length; // column mark\n\n var mark = j + 1; // check we need to process values\n\n if (x) {\n // loop B(:,j)\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k]; // update workspace\n\n w[i] = mark;\n x[i] = bvalues[k];\n }\n } // loop A(:,j)\n\n\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k]; // check we need to process values\n\n if (x) {\n // b value @ i,j\n var vb = w[i] === mark ? x[i] : zero; // invoke f\n\n var vc = cf(avalues[k], vb); // check zero value\n\n if (!eq(vc, zero)) {\n // push index\n cindex.push(i); // push value\n\n cvalues.push(vc);\n }\n } else {\n // push index\n cindex.push(i);\n }\n }\n } // update cptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm09 } from '../../type/matrix/utils/algorithm09.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'dotMultiply';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'multiplyScalar'];\nexport var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n multiplyScalar\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm09 = createAlgorithm09({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Multiply two matrices element wise. The function accepts both matrices and\n * scalar values.\n *\n * Syntax:\n *\n * math.dotMultiply(x, y)\n *\n * Examples:\n *\n * math.dotMultiply(2, 4) // returns 8\n *\n * a = [[9, 5], [6, 1]]\n * b = [[3, 2], [5, 2]]\n *\n * math.dotMultiply(a, b) // returns [[27, 10], [30, 2]]\n * math.multiply(a, b) // returns [[52, 28], [23, 14]]\n *\n * See also:\n *\n * multiply, divide, dotDivide\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Left hand value\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Right hand value\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`\n */\n\n return typed(name, {\n 'any, any': multiplyScalar,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm09(x, y, multiplyScalar, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, multiplyScalar, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm02(x, y, multiplyScalar, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, multiplyScalar);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, multiplyScalar, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, multiplyScalar, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm11(y, x, multiplyScalar, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, multiplyScalar, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, multiplyScalar, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, multiplyScalar, true).valueOf();\n }\n });\n});","/**\n * Bitwise and for Bignumbers\n *\n * Special Cases:\n * N & n = N\n * n & 0 = 0\n * n & -1 = n\n * n & n = n\n * I & I = I\n * -I & -I = -I\n * I & -I = 0\n * I & n = n\n * I & -n = I\n * -I & n = 0\n * -I & -n = -I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` & `y`, is fully precise\n * @private\n */\nexport function bitAndBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitAnd');\n }\n\n var BigNumber = x.constructor;\n\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n\n if (x.isZero() || y.eq(-1) || x.eq(y)) {\n return x;\n }\n\n if (y.isZero() || x.eq(-1)) {\n return y;\n }\n\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !y.isFinite()) {\n if (x.isNegative() === y.isNegative()) {\n return x;\n }\n\n return new BigNumber(0);\n }\n\n if (!x.isFinite()) {\n if (y.isNegative()) {\n return x;\n }\n\n if (x.isNegative()) {\n return new BigNumber(0);\n }\n\n return y;\n }\n\n if (!y.isFinite()) {\n if (x.isNegative()) {\n return y;\n }\n\n if (y.isNegative()) {\n return new BigNumber(0);\n }\n\n return x;\n }\n }\n\n return bitwise(x, y, function (a, b) {\n return a & b;\n });\n}\n/**\n * Bitwise not\n * @param {BigNumber} x\n * @return {BigNumber} Result of ~`x`, fully precise\n *\n */\n\nexport function bitNotBigNumber(x) {\n if (x.isFinite() && !x.isInteger()) {\n throw new Error('Integer expected in function bitNot');\n }\n\n var BigNumber = x.constructor;\n var prevPrec = BigNumber.precision;\n BigNumber.config({\n precision: 1E9\n });\n var result = x.plus(new BigNumber(1));\n result.s = -result.s || null;\n BigNumber.config({\n precision: prevPrec\n });\n return result;\n}\n/**\n * Bitwise OR for BigNumbers\n *\n * Special Cases:\n * N | n = N\n * n | 0 = n\n * n | -1 = -1\n * n | n = n\n * I | I = I\n * -I | -I = -I\n * I | -n = -1\n * I | -I = -1\n * I | n = I\n * -I | n = -I\n * -I | -n = -n\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` | `y`, fully precise\n */\n\nexport function bitOrBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitOr');\n }\n\n var BigNumber = x.constructor;\n\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n\n var negOne = new BigNumber(-1);\n\n if (x.isZero() || y.eq(negOne) || x.eq(y)) {\n return y;\n }\n\n if (y.isZero() || x.eq(negOne)) {\n return x;\n }\n\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !x.isNegative() && y.isNegative() || x.isNegative() && !y.isNegative() && !y.isFinite()) {\n return negOne;\n }\n\n if (x.isNegative() && y.isNegative()) {\n return x.isFinite() ? x : y;\n }\n\n return x.isFinite() ? y : x;\n }\n\n return bitwise(x, y, function (a, b) {\n return a | b;\n });\n}\n/**\n * Applies bitwise function to numbers\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @param {function (a, b)} func\n * @return {BigNumber}\n */\n\nexport function bitwise(x, y, func) {\n var BigNumber = x.constructor;\n var xBits, yBits;\n var xSign = +(x.s < 0);\n var ySign = +(y.s < 0);\n\n if (xSign) {\n xBits = decCoefficientToBinaryString(bitNotBigNumber(x));\n\n for (var i = 0; i < xBits.length; ++i) {\n xBits[i] ^= 1;\n }\n } else {\n xBits = decCoefficientToBinaryString(x);\n }\n\n if (ySign) {\n yBits = decCoefficientToBinaryString(bitNotBigNumber(y));\n\n for (var _i = 0; _i < yBits.length; ++_i) {\n yBits[_i] ^= 1;\n }\n } else {\n yBits = decCoefficientToBinaryString(y);\n }\n\n var minBits, maxBits, minSign;\n\n if (xBits.length <= yBits.length) {\n minBits = xBits;\n maxBits = yBits;\n minSign = xSign;\n } else {\n minBits = yBits;\n maxBits = xBits;\n minSign = ySign;\n }\n\n var shortLen = minBits.length;\n var longLen = maxBits.length;\n var expFuncVal = func(xSign, ySign) ^ 1;\n var outVal = new BigNumber(expFuncVal ^ 1);\n var twoPower = new BigNumber(1);\n var two = new BigNumber(2);\n var prevPrec = BigNumber.precision;\n BigNumber.config({\n precision: 1E9\n });\n\n while (shortLen > 0) {\n if (func(minBits[--shortLen], maxBits[--longLen]) === expFuncVal) {\n outVal = outVal.plus(twoPower);\n }\n\n twoPower = twoPower.times(two);\n }\n\n while (longLen > 0) {\n if (func(minSign, maxBits[--longLen]) === expFuncVal) {\n outVal = outVal.plus(twoPower);\n }\n\n twoPower = twoPower.times(two);\n }\n\n BigNumber.config({\n precision: prevPrec\n });\n\n if (expFuncVal === 0) {\n outVal.s = -outVal.s;\n }\n\n return outVal;\n}\n/* Extracted from decimal.js, and edited to specialize. */\n\nfunction decCoefficientToBinaryString(x) {\n // Convert to string\n var a = x.d; // array with digits\n\n var r = a[0] + '';\n\n for (var i = 1; i < a.length; ++i) {\n var s = a[i] + '';\n\n for (var z = 7 - s.length; z--;) {\n s = '0' + s;\n }\n\n r += s;\n }\n\n var j = r.length;\n\n while (r.charAt(j) === '0') {\n j--;\n }\n\n var xe = x.e;\n var str = r.slice(0, j + 1 || 1);\n var strL = str.length;\n\n if (xe > 0) {\n if (++xe > strL) {\n // Append zeros.\n xe -= strL;\n\n while (xe--) {\n str += '0';\n }\n } else if (xe < strL) {\n str = str.slice(0, xe) + '.' + str.slice(xe);\n }\n } // Convert from base 10 (decimal) to base 2\n\n\n var arr = [0];\n\n for (var _i2 = 0; _i2 < str.length;) {\n var arrL = arr.length;\n\n while (arrL--) {\n arr[arrL] *= 10;\n }\n\n arr[0] += parseInt(str.charAt(_i2++)); // convert to int\n\n for (var _j = 0; _j < arr.length; ++_j) {\n if (arr[_j] > 1) {\n if (arr[_j + 1] === null || arr[_j + 1] === undefined) {\n arr[_j + 1] = 0;\n }\n\n arr[_j + 1] += arr[_j] >> 1;\n arr[_j] &= 1;\n }\n }\n }\n\n return arr.reverse();\n}\n/**\n * Bitwise XOR for BigNumbers\n *\n * Special Cases:\n * N ^ n = N\n * n ^ 0 = n\n * n ^ n = 0\n * n ^ -1 = ~n\n * I ^ n = I\n * I ^ -n = -I\n * I ^ -I = -1\n * -I ^ n = -I\n * -I ^ -n = I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` ^ `y`, fully precise\n *\n */\n\n\nexport function bitXor(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitXor');\n }\n\n var BigNumber = x.constructor;\n\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n\n if (x.isZero()) {\n return y;\n }\n\n if (y.isZero()) {\n return x;\n }\n\n if (x.eq(y)) {\n return new BigNumber(0);\n }\n\n var negOne = new BigNumber(-1);\n\n if (x.eq(negOne)) {\n return bitNotBigNumber(y);\n }\n\n if (y.eq(negOne)) {\n return bitNotBigNumber(x);\n }\n\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !y.isFinite()) {\n return negOne;\n }\n\n return new BigNumber(x.isNegative() === y.isNegative() ? Infinity : -Infinity);\n }\n\n return bitwise(x, y, function (a, b) {\n return a ^ b;\n });\n}\n/**\n * Bitwise left shift\n *\n * Special Cases:\n * n << -n = N\n * n << N = N\n * N << n = N\n * n << 0 = n\n * 0 << n = 0\n * I << I = N\n * I << n = I\n * n << I = I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` << `y`\n *\n */\n\nexport function leftShiftBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function leftShift');\n }\n\n var BigNumber = x.constructor;\n\n if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {\n return new BigNumber(NaN);\n }\n\n if (x.isZero() || y.isZero()) {\n return x;\n }\n\n if (!x.isFinite() && !y.isFinite()) {\n return new BigNumber(NaN);\n } // Math.pow(2, y) is fully precise for y < 55, and fast\n\n\n if (y.lt(55)) {\n return x.times(Math.pow(2, y.toNumber()) + '');\n }\n\n return x.times(new BigNumber(2).pow(y));\n}\n/*\n * Special Cases:\n * n >> -n = N\n * n >> N = N\n * N >> n = N\n * I >> I = N\n * n >> 0 = n\n * I >> n = I\n * -I >> n = -I\n * -I >> I = -I\n * n >> I = I\n * -n >> I = -1\n * 0 >> n = 0\n *\n * @param {BigNumber} value\n * @param {BigNumber} value\n * @return {BigNumber} Result of `x` >> `y`\n *\n */\n\nexport function rightArithShiftBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function rightArithShift');\n }\n\n var BigNumber = x.constructor;\n\n if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {\n return new BigNumber(NaN);\n }\n\n if (x.isZero() || y.isZero()) {\n return x;\n }\n\n if (!y.isFinite()) {\n if (x.isNegative()) {\n return new BigNumber(-1);\n }\n\n if (!x.isFinite()) {\n return new BigNumber(NaN);\n }\n\n return new BigNumber(0);\n } // Math.pow(2, y) is fully precise for y < 55, and fast\n\n\n if (y.lt(55)) {\n return x.div(Math.pow(2, y.toNumber()) + '').floor();\n }\n\n return x.div(new BigNumber(2).pow(y)).floor();\n}","import { isInteger } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function bitAndNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitAnd');\n }\n\n return x & y;\n}\nbitAndNumber.signature = n2;\nexport function bitNotNumber(x) {\n if (!isInteger(x)) {\n throw new Error('Integer expected in function bitNot');\n }\n\n return ~x;\n}\nbitNotNumber.signature = n1;\nexport function bitOrNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitOr');\n }\n\n return x | y;\n}\nbitOrNumber.signature = n2;\nexport function bitXorNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitXor');\n }\n\n return x ^ y;\n}\nbitXorNumber.signature = n2;\nexport function leftShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function leftShift');\n }\n\n return x << y;\n}\nleftShiftNumber.signature = n2;\nexport function rightArithShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function rightArithShift');\n }\n\n return x >> y;\n}\nrightArithShiftNumber.signature = n2;\nexport function rightLogShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function rightLogShift');\n }\n\n return x >>> y;\n}\nrightLogShiftNumber.signature = n2;","import { bitAndBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm06 } from '../../type/matrix/utils/algorithm06.js';\nimport { factory } from '../../utils/factory.js';\nimport { bitAndNumber } from '../../plain/number/index.js';\nvar name = 'bitAnd';\nvar dependencies = ['typed', 'matrix', 'equalScalar'];\nexport var createBitAnd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm06 = createAlgorithm06({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Bitwise AND two values, `x & y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.bitAnd(x, y)\n *\n * Examples:\n *\n * math.bitAnd(53, 131) // returns number 1\n *\n * math.bitAnd([1, 12, 31], 42) // returns Array [0, 8, 10]\n *\n * See also:\n *\n * bitNot, bitOr, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | Array | Matrix} x First value to and\n * @param {number | BigNumber | Array | Matrix} y Second value to and\n * @return {number | BigNumber | Array | Matrix} AND of `x` and `y`\n */\n\n return typed(name, {\n 'number, number': bitAndNumber,\n 'BigNumber, BigNumber': bitAndBigNumber,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm06(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm02(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm11(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { bitNotBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { bitNotNumber } from '../../plain/number/index.js';\nvar name = 'bitNot';\nvar dependencies = ['typed'];\nexport var createBitNot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Bitwise NOT value, `~x`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.bitNot(x)\n *\n * Examples:\n *\n * math.bitNot(1) // returns number -2\n *\n * math.bitNot([2, -3, 4]) // returns Array [-3, 2, 5]\n *\n * See also:\n *\n * bitAnd, bitOr, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | Array | Matrix} x Value to not\n * @return {number | BigNumber | Array | Matrix} NOT of `x`\n */\n return typed(name, {\n number: bitNotNumber,\n BigNumber: bitNotBigNumber,\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { bitOrBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm04 } from '../../type/matrix/utils/algorithm04.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { bitOrNumber } from '../../plain/number/index.js';\nvar name = 'bitOr';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];\nexport var createBitOr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm04 = createAlgorithm04({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Bitwise OR two values, `x | y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the lowest print base.\n *\n * Syntax:\n *\n * math.bitOr(x, y)\n *\n * Examples:\n *\n * math.bitOr(1, 2) // returns number 3\n *\n * math.bitOr([1, 2, 3], 4) // returns Array [5, 6, 7]\n *\n * See also:\n *\n * bitAnd, bitNot, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | Array | Matrix} x First value to or\n * @param {number | BigNumber | Array | Matrix} y Second value to or\n * @return {number | BigNumber | Array | Matrix} OR of `x` and `y`\n */\n\n return typed(name, {\n 'number, number': bitOrNumber,\n 'BigNumber, BigNumber': bitOrBigNumber,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm04(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm01(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm01(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm10(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm10(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm07';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createAlgorithm07 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n\n /**\n * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij).\n * Callback function invoked MxN times.\n *\n * C(i,j) = f(Aij, Bij)\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function algorithm07(a, b, callback) {\n // sparse matrix arrays\n var asize = a._size;\n var adt = a._datatype; // sparse matrix arrays\n\n var bsize = b._size;\n var bdt = b._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // vars\n\n\n var i, j; // result arrays\n\n var cdata = []; // initialize c\n\n for (i = 0; i < rows; i++) {\n cdata[i] = [];\n } // workspaces\n\n\n var xa = [];\n var xb = []; // marks indicating we have a value in x for a given column\n\n var wa = [];\n var wb = []; // loop columns\n\n for (j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1; // scatter the values of A(:,j) into workspace\n\n _scatter(a, j, wa, xa, mark); // scatter the values of B(:,j) into workspace\n\n\n _scatter(b, j, wb, xb, mark); // loop rows\n\n\n for (i = 0; i < rows; i++) {\n // matrix values @ i,j\n var va = wa[i] === mark ? xa[i] : zero;\n var vb = wb[i] === mark ? xb[i] : zero; // invoke callback\n\n cdata[i][j] = cf(va, vb);\n }\n } // return dense matrix\n\n\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n\n function _scatter(m, j, w, x, mark) {\n // a arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // loop values in column j\n\n for (var k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) {\n // row\n var i = index[k]; // update workspace\n\n w[i] = mark;\n x[i] = values[k];\n }\n }\n});","import { bitXor as bigBitXor } from '../../utils/bignumber/bitwise.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { factory } from '../../utils/factory.js';\nimport { bitXorNumber } from '../../plain/number/index.js';\nvar name = 'bitXor';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix'];\nexport var createBitXor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Bitwise XOR two values, `x ^ y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.bitXor(x, y)\n *\n * Examples:\n *\n * math.bitXor(1, 2) // returns number 3\n *\n * math.bitXor([2, 3, 4], 4) // returns Array [6, 7, 0]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | Array | Matrix} x First value to xor\n * @param {number | BigNumber | Array | Matrix} y Second value to xor\n * @return {number | BigNumber | Array | Matrix} XOR of `x` and `y`\n */\n\n return typed(name, {\n 'number, number': bitXorNumber,\n 'BigNumber, BigNumber': bigBitXor,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'arg';\nvar dependencies = ['typed'];\nexport var createArg = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the argument of a complex value.\n * For a complex number `a + bi`, the argument is computed as `atan2(b, a)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.arg(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 2)\n * math.arg(a) / math.pi // returns number 0.25\n *\n * const b = math.complex('2 + 3i')\n * math.arg(b) // returns number 0.982793723247329\n * math.atan2(3, 2) // returns number 0.982793723247329\n *\n * See also:\n *\n * re, im, conj, abs\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The argument of x\n */\n return typed(name, {\n number: function number(x) {\n return Math.atan2(0, x);\n },\n BigNumber: function BigNumber(x) {\n return x.constructor.atan2(0, x);\n },\n Complex: function Complex(x) {\n return x.arg();\n },\n // TODO: implement BigNumber support for function arg\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'conj';\nvar dependencies = ['typed'];\nexport var createConj = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the complex conjugate of a complex value.\n * If `x = a+bi`, the complex conjugate of `x` is `a - bi`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.conj(x)\n *\n * Examples:\n *\n * math.conj(math.complex('2 + 3i')) // returns Complex 2 - 3i\n * math.conj(math.complex('2 - 3i')) // returns Complex 2 + 3i\n * math.conj(math.complex('-5.2i')) // returns Complex 5.2i\n *\n * See also:\n *\n * re, im, arg, abs\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Complex | Array | Matrix}\n * The complex conjugate of x\n */\n return typed(name, {\n number: function number(x) {\n return x;\n },\n BigNumber: function BigNumber(x) {\n return x;\n },\n Complex: function Complex(x) {\n return x.conjugate();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'im';\nvar dependencies = ['typed'];\nexport var createIm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Get the imaginary part of a complex number.\n * For a complex number `a + bi`, the function returns `b`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.im(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 3)\n * math.re(a) // returns number 2\n * math.im(a) // returns number 3\n *\n * math.re(math.complex('-5.2i')) // returns number -5.2\n * math.re(math.complex(2.4)) // returns number 0\n *\n * See also:\n *\n * re, conj, abs, arg\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The imaginary part of x\n */\n return typed(name, {\n number: function number(x) {\n return 0;\n },\n BigNumber: function BigNumber(x) {\n return x.mul(0);\n },\n Fraction: function Fraction(x) {\n return x.mul(0);\n },\n Complex: function Complex(x) {\n return x.im;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 're';\nvar dependencies = ['typed'];\nexport var createRe = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Get the real part of a complex number.\n * For a complex number `a + bi`, the function returns `a`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.re(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 3)\n * math.re(a) // returns number 2\n * math.im(a) // returns number 3\n *\n * math.re(math.complex('-5.2i')) // returns number 0\n * math.re(math.complex(2.4)) // returns number 2.4\n *\n * See also:\n *\n * im, conj, abs, arg\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The real part of x\n */\n return typed(name, {\n number: function number(x) {\n return x;\n },\n BigNumber: function BigNumber(x) {\n return x;\n },\n Fraction: function Fraction(x) {\n return x;\n },\n Complex: function Complex(x) {\n return x.re;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","var n1 = 'number';\nvar n2 = 'number, number';\nexport function notNumber(x) {\n return !x;\n}\nnotNumber.signature = n1;\nexport function orNumber(x, y) {\n return !!(x || y);\n}\norNumber.signature = n2;\nexport function xorNumber(x, y) {\n return !!x !== !!y;\n}\nxorNumber.signature = n2;\nexport function andNumber(x, y) {\n return !!(x && y);\n}\nandNumber.signature = n2;","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { notNumber } from '../../plain/number/index.js';\nvar name = 'not';\nvar dependencies = ['typed'];\nexport var createNot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Logical `not`. Flips boolean value of a given parameter.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.not(x)\n *\n * Examples:\n *\n * math.not(2) // returns false\n * math.not(0) // returns true\n * math.not(true) // returns false\n *\n * a = [2, -7, 0]\n * math.not(a) // returns [false, false, true]\n *\n * See also:\n *\n * and, or, xor\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x First value to check\n * @return {boolean | Array | Matrix}\n * Returns true when input is a zero or empty value.\n */\n return typed(name, {\n number: notNumber,\n Complex: function Complex(x) {\n return x.re === 0 && x.im === 0;\n },\n BigNumber: function BigNumber(x) {\n return x.isZero() || x.isNaN();\n },\n Unit: function Unit(x) {\n return x.value !== null ? this(x.value) : true;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm05 } from '../../type/matrix/utils/algorithm05.js';\nimport { factory } from '../../utils/factory.js';\nimport { orNumber } from '../../plain/number/index.js';\nvar name = 'or';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];\nexport var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm05 = createAlgorithm05({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Logical `or`. Test if at least one value is defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.or(x, y)\n *\n * Examples:\n *\n * math.or(2, 4) // returns true\n *\n * a = [2, 5, 0]\n * b = [0, 22, 0]\n * c = 0\n *\n * math.or(a, b) // returns [true, true, false]\n * math.or(b, c) // returns [false, true, false]\n *\n * See also:\n *\n * and, not, xor\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when one of the inputs is defined with a nonzero/nonempty value.\n */\n\n return typed(name, {\n 'number, number': orNumber,\n 'Complex, Complex': function ComplexComplex(x, y) {\n return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n return this(x.value || 0, y.value || 0);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm05(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { factory } from '../../utils/factory.js';\nimport { xorNumber } from '../../plain/number/index.js';\nvar name = 'xor';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix'];\nexport var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Logical `xor`. Test whether one and only one value is defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.xor(x, y)\n *\n * Examples:\n *\n * math.xor(2, 4) // returns false\n *\n * a = [2, 0, 0]\n * b = [2, 7, 0]\n * c = 0\n *\n * math.xor(a, b) // returns [false, true, false]\n * math.xor(a, c) // returns [true, false, false]\n *\n * See also:\n *\n * and, not, or\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when one and only one input is defined with a nonzero/nonempty value.\n */\n\n return typed(name, {\n 'number, number': xorNumber,\n 'Complex, Complex': function ComplexComplex(x, y) {\n return (x.re !== 0 || x.im !== 0) !== (y.re !== 0 || y.im !== 0);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n return this(x.value || 0, y.value || 0);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { isBigNumber, isMatrix, isNumber } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { arraySize } from '../../utils/array.js';\nimport { IndexError } from '../../error/IndexError.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcat = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n\n /**\n * Concatenate two or more matrices.\n *\n * Syntax:\n *\n * math.concat(A, B, C, ...)\n * math.concat(A, B, C, ..., dim)\n *\n * Where:\n *\n * - `dim: number` is a zero-based dimension over which to concatenate the matrices.\n * By default the last dimension of the matrices.\n *\n * Examples:\n *\n * const A = [[1, 2], [5, 6]]\n * const B = [[3, 4], [7, 8]]\n *\n * math.concat(A, B) // returns [[1, 2, 3, 4], [5, 6, 7, 8]]\n * math.concat(A, B, 0) // returns [[1, 2], [5, 6], [3, 4], [7, 8]]\n * math.concat('hello', ' ', 'world') // returns 'hello world'\n *\n * See also:\n *\n * size, squeeze, subset, transpose\n *\n * @param {... Array | Matrix} args Two or more matrices\n * @return {Array | Matrix} Concatenated matrix\n */\n return typed(name, {\n // TODO: change signature to '...Array | Matrix, dim?' when supported\n '...Array | Matrix | number | BigNumber': function ArrayMatrixNumberBigNumber(args) {\n var i;\n var len = args.length;\n var dim = -1; // zero-based dimension\n\n var prevDim;\n var asMatrix = false;\n var matrices = []; // contains multi dimensional arrays\n\n for (i = 0; i < len; i++) {\n var arg = args[i]; // test whether we need to return a Matrix (if not we return an Array)\n\n if (isMatrix(arg)) {\n asMatrix = true;\n }\n\n if (isNumber(arg) || isBigNumber(arg)) {\n if (i !== len - 1) {\n throw new Error('Dimension must be specified as last argument');\n } // last argument contains the dimension on which to concatenate\n\n\n prevDim = dim;\n dim = arg.valueOf(); // change BigNumber to number\n\n if (!isInteger(dim)) {\n throw new TypeError('Integer number expected for dimension');\n }\n\n if (dim < 0 || i > 0 && dim > prevDim) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, prevDim + 1);\n }\n } else {\n // this is a matrix or array\n var m = clone(arg).valueOf();\n var size = arraySize(m);\n matrices[i] = m;\n prevDim = dim;\n dim = size.length - 1; // verify whether each of the matrices has the same number of dimensions\n\n if (i > 0 && dim !== prevDim) {\n throw new DimensionError(prevDim + 1, dim + 1);\n }\n }\n }\n\n if (matrices.length === 0) {\n throw new SyntaxError('At least one matrix expected');\n }\n\n var res = matrices.shift();\n\n while (matrices.length) {\n res = _concat(res, matrices.shift(), dim, 0);\n }\n\n return asMatrix ? matrix(res) : res;\n },\n '...string': function string(args) {\n return args.join('');\n }\n });\n});\n/**\n * Recursively concatenate two matrices.\n * The contents of the matrices is not cloned.\n * @param {Array} a Multi dimensional array\n * @param {Array} b Multi dimensional array\n * @param {number} concatDim The dimension on which to concatenate (zero-based)\n * @param {number} dim The current dim (zero-based)\n * @return {Array} c The concatenated matrix\n * @private\n */\n\nfunction _concat(a, b, concatDim, dim) {\n if (dim < concatDim) {\n // recurse into next dimension\n if (a.length !== b.length) {\n throw new DimensionError(a.length, b.length);\n }\n\n var c = [];\n\n for (var i = 0; i < a.length; i++) {\n c[i] = _concat(a[i], b[i], concatDim, dim + 1);\n }\n\n return c;\n } else {\n // concatenate this dimension\n return a.concat(b);\n }\n}","import { factory } from '../../utils/factory.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\nexport var createColumn = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n\n /**\n * Return a column from a Matrix.\n *\n * Syntax:\n *\n * math.column(value, index)\n *\n * Example:\n *\n * // get a column\n * const d = [[1, 2], [3, 4]]\n * math.column(d, 1) // returns [[2], [4]]\n *\n * See also:\n *\n * row\n *\n * @param {Array | Matrix } value An array or matrix\n * @param {number} column The index of the column\n * @return {Array | Matrix} The retrieved column\n */\n return typed(name, {\n 'Matrix, number': _column,\n 'Array, number': function ArrayNumber(value, column) {\n return _column(matrix(clone(value)), column).valueOf();\n }\n });\n /**\n * Retrieve a column of a matrix\n * @param {Matrix } value A matrix\n * @param {number} column The index of the column\n * @return {Matrix} The retrieved column\n */\n\n function _column(value, column) {\n // check dimensions\n if (value.size().length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n\n validateIndex(column, value.size()[1]);\n var rowRange = range(0, value.size()[0]);\n var index = new Index(rowRange, column);\n return value.subset(index);\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'count';\nvar dependencies = ['typed', 'size', 'prod'];\nexport var createCount = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n prod\n } = _ref;\n\n /**\n * Count the number of elements of a matrix, array or string.\n *\n * Syntax:\n *\n * math.count(x)\n *\n * Examples:\n *\n * math.count('hello world') // returns 11\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.count(A) // returns 6\n * math.count(math.range(1,6)) // returns 5\n *\n * See also:\n *\n * size\n *\n * @param {string | Array | Matrix} x A matrix or string\n * @return {number} An integer with the elements in `x`.\n */\n return typed(name, {\n string: function string(x) {\n return x.length;\n },\n 'Matrix | Array': function MatrixArray(x) {\n return prod(size(x));\n }\n });\n});","import { arraySize, squeeze } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'cross';\nvar dependencies = ['typed', 'matrix', 'subtract', 'multiply'];\nexport var createCross = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n multiply\n } = _ref;\n\n /**\n * Calculate the cross product for two vectors in three dimensional space.\n * The cross product of `A = [a1, a2, a3]` and `B = [b1, b2, b3]` is defined\n * as:\n *\n * cross(A, B) = [\n * a2 * b3 - a3 * b2,\n * a3 * b1 - a1 * b3,\n * a1 * b2 - a2 * b1\n * ]\n *\n * If one of the input vectors has a dimension greater than 1, the output\n * vector will be a 1x3 (2-dimensional) matrix.\n *\n * Syntax:\n *\n * math.cross(x, y)\n *\n * Examples:\n *\n * math.cross([1, 1, 0], [0, 1, 1]) // Returns [1, -1, 1]\n * math.cross([3, -3, 1], [4, 9, 2]) // Returns [-15, -2, 39]\n * math.cross([2, 3, 4], [5, 6, 7]) // Returns [-3, 6, -3]\n * math.cross([[1, 2, 3]], [[4], [5], [6]]) // Returns [[-3, 6, -3]]\n *\n * See also:\n *\n * dot, multiply\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {Array | Matrix} Returns the cross product of `x` and `y`\n */\n return typed(name, {\n 'Matrix, Matrix': function MatrixMatrix(x, y) {\n return matrix(_cross(x.toArray(), y.toArray()));\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n return matrix(_cross(x.toArray(), y));\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n return matrix(_cross(x, y.toArray()));\n },\n 'Array, Array': _cross\n });\n /**\n * Calculate the cross product for two arrays\n * @param {Array} x First vector\n * @param {Array} y Second vector\n * @returns {Array} Returns the cross product of x and y\n * @private\n */\n\n function _cross(x, y) {\n var highestDimension = Math.max(arraySize(x).length, arraySize(y).length);\n x = squeeze(x);\n y = squeeze(y);\n var xSize = arraySize(x);\n var ySize = arraySize(y);\n\n if (xSize.length !== 1 || ySize.length !== 1 || xSize[0] !== 3 || ySize[0] !== 3) {\n throw new RangeError('Vectors with length 3 expected ' + '(Size A = [' + xSize.join(', ') + '], B = [' + ySize.join(', ') + '])');\n }\n\n var product = [subtract(multiply(x[1], y[2]), multiply(x[2], y[1])), subtract(multiply(x[2], y[0]), multiply(x[0], y[2])), subtract(multiply(x[0], y[1]), multiply(x[1], y[0]))];\n\n if (highestDimension > 1) {\n return [product];\n } else {\n return product;\n }\n }\n});","import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'diag';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'SparseMatrix'];\nexport var createDiag = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n\n /**\n * Create a diagonal matrix or retrieve the diagonal of a matrix\n *\n * When `x` is a vector, a matrix with vector `x` on the diagonal will be returned.\n * When `x` is a two dimensional matrix, the matrixes `k`th diagonal will be returned as vector.\n * When k is positive, the values are placed on the super diagonal.\n * When k is negative, the values are placed on the sub diagonal.\n *\n * Syntax:\n *\n * math.diag(X)\n * math.diag(X, format)\n * math.diag(X, k)\n * math.diag(X, k, format)\n *\n * Examples:\n *\n * // create a diagonal matrix\n * math.diag([1, 2, 3]) // returns [[1, 0, 0], [0, 2, 0], [0, 0, 3]]\n * math.diag([1, 2, 3], 1) // returns [[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]]\n * math.diag([1, 2, 3], -1) // returns [[0, 0, 0], [1, 0, 0], [0, 2, 0], [0, 0, 3]]\n *\n * // retrieve the diagonal from a matrix\n * const a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n * math.diag(a) // returns [1, 5, 9]\n *\n * See also:\n *\n * ones, zeros, identity\n *\n * @param {Matrix | Array} x A two dimensional matrix or a vector\n * @param {number | BigNumber} [k=0] The diagonal where the vector will be filled\n * in or retrieved.\n * @param {string} [format='dense'] The matrix storage format.\n *\n * @returns {Matrix | Array} Diagonal matrix from input vector, or diagonal from input matrix.\n */\n return typed(name, {\n // FIXME: simplify this huge amount of signatures as soon as typed-function supports optional arguments\n Array: function Array(x) {\n return _diag(x, 0, arraySize(x), null);\n },\n 'Array, number': function ArrayNumber(x, k) {\n return _diag(x, k, arraySize(x), null);\n },\n 'Array, BigNumber': function ArrayBigNumber(x, k) {\n return _diag(x, k.toNumber(), arraySize(x), null);\n },\n 'Array, string': function ArrayString(x, format) {\n return _diag(x, 0, arraySize(x), format);\n },\n 'Array, number, string': function ArrayNumberString(x, k, format) {\n return _diag(x, k, arraySize(x), format);\n },\n 'Array, BigNumber, string': function ArrayBigNumberString(x, k, format) {\n return _diag(x, k.toNumber(), arraySize(x), format);\n },\n Matrix: function Matrix(x) {\n return _diag(x, 0, x.size(), x.storage());\n },\n 'Matrix, number': function MatrixNumber(x, k) {\n return _diag(x, k, x.size(), x.storage());\n },\n 'Matrix, BigNumber': function MatrixBigNumber(x, k) {\n return _diag(x, k.toNumber(), x.size(), x.storage());\n },\n 'Matrix, string': function MatrixString(x, format) {\n return _diag(x, 0, x.size(), format);\n },\n 'Matrix, number, string': function MatrixNumberString(x, k, format) {\n return _diag(x, k, x.size(), format);\n },\n 'Matrix, BigNumber, string': function MatrixBigNumberString(x, k, format) {\n return _diag(x, k.toNumber(), x.size(), format);\n }\n });\n /**\n * Creeate diagonal matrix from a vector or vice versa\n * @param {Array | Matrix} x\n * @param {number} k\n * @param {string} format Storage format for matrix. If null,\n * an Array is returned\n * @returns {Array | Matrix}\n * @private\n */\n\n function _diag(x, k, size, format) {\n if (!isInteger(k)) {\n throw new TypeError('Second parameter in function diag must be an integer');\n }\n\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0; // check dimensions\n\n switch (size.length) {\n case 1:\n return _createDiagonalMatrix(x, k, format, size[0], kSub, kSuper);\n\n case 2:\n return _getDiagonal(x, k, format, size, kSub, kSuper);\n }\n\n throw new RangeError('Matrix for function diag must be 2 dimensional');\n }\n\n function _createDiagonalMatrix(x, k, format, l, kSub, kSuper) {\n // matrix size\n var ms = [l + kSub, l + kSuper];\n\n if (format && format !== 'sparse' && format !== 'dense') {\n throw new TypeError(\"Unknown matrix type \".concat(format, \"\\\"\"));\n } // create diagonal matrix\n\n\n var m = format === 'sparse' ? SparseMatrix.diagonal(ms, x, k) : DenseMatrix.diagonal(ms, x, k); // check we need to return a matrix\n\n return format !== null ? m : m.valueOf();\n }\n\n function _getDiagonal(x, k, format, s, kSub, kSuper) {\n // check x is a Matrix\n if (isMatrix(x)) {\n // get diagonal matrix\n var dm = x.diagonal(k); // check we need to return a matrix\n\n if (format !== null) {\n // check we need to change matrix format\n if (format !== dm.storage()) {\n return matrix(dm, format);\n }\n\n return dm;\n }\n\n return dm.valueOf();\n } // vector size\n\n\n var n = Math.min(s[0] - kSub, s[1] - kSuper); // diagonal values\n\n var vector = []; // loop diagonal\n\n for (var i = 0; i < n; i++) {\n vector[i] = x[i + kSub][i + kSuper];\n } // check we need to return a matrix\n\n\n return format !== null ? matrix(vector) : vector;\n }\n});","// (c) 2018, Mariusz Nowak\n// SPDX-License-Identifier: ISC\n// Derived from https://github.com/medikoo/lru-queue\nexport function lruQueue(limit) {\n var size = 0;\n var base = 1;\n var queue = Object.create(null);\n var map = Object.create(null);\n var index = 0;\n\n var del = function del(id) {\n var oldIndex = map[id];\n if (!oldIndex) return;\n delete queue[oldIndex];\n delete map[id];\n --size;\n if (base !== oldIndex) return;\n\n if (!size) {\n index = 0;\n base = 1;\n return;\n }\n\n while (!hasOwnProperty.call(queue, ++base)) {\n continue;\n }\n };\n\n limit = Math.abs(limit);\n return {\n hit: function hit(id) {\n var oldIndex = map[id];\n var nuIndex = ++index;\n queue[nuIndex] = id;\n map[id] = nuIndex;\n\n if (!oldIndex) {\n ++size;\n if (size <= limit) return undefined;\n id = queue[base];\n del(id);\n return id;\n }\n\n delete queue[oldIndex];\n if (base !== oldIndex) return undefined;\n\n while (!hasOwnProperty.call(queue, ++base)) {\n continue;\n }\n\n return undefined;\n },\n delete: del,\n clear: function clear() {\n size = index = 0;\n base = 1;\n queue = Object.create(null);\n map = Object.create(null);\n }\n };\n}\n;","// function utils\nimport { lruQueue } from './lruQueue.js';\n/**\n * Memoize a given function by caching the computed result.\n * The cache of a memoized function can be cleared by deleting the `cache`\n * property of the function.\n *\n * @param {function} fn The function to be memoized.\n * Must be a pure function.\n * @param {Object} [options]\n * @param {function(args: Array): string} [options.hasher]\n * A custom hash builder. Is JSON.stringify by default.\n * @param {number | undefined} [options.limit]\n * Maximum number of values that may be cached. Undefined indicates\n * unlimited (default)\n * @return {function} Returns the memoized function\n */\n\nexport function memoize(fn) {\n var {\n hasher,\n limit\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n limit = limit == null ? Number.POSITIVE_INFINITY : limit;\n hasher = hasher == null ? JSON.stringify : hasher;\n return function memoize() {\n if (typeof memoize.cache !== 'object') {\n memoize.cache = {\n values: new Map(),\n lru: lruQueue(limit || Number.POSITIVE_INFINITY)\n };\n }\n\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n var hash = hasher(args);\n\n if (memoize.cache.values.has(hash)) {\n memoize.cache.lru.hit(hash);\n return memoize.cache.values.get(hash);\n }\n\n var newVal = fn.apply(fn, args);\n memoize.cache.values.set(hash, newVal);\n memoize.cache.values.delete(memoize.cache.lru.hit(hash));\n return newVal;\n };\n}\n/**\n * Memoize a given function by caching all results and the arguments,\n * and comparing against the arguments of previous results before\n * executing again.\n * This is less performant than `memoize` which calculates a hash,\n * which is very fast to compare. Use `memoizeCompare` only when it is\n * not possible to create a unique serializable hash from the function\n * arguments.\n * The isEqual function must compare two sets of arguments\n * and return true when equal (can be a deep equality check for example).\n * @param {function} fn\n * @param {function(a: *, b: *) : boolean} isEqual\n * @returns {function}\n */\n\nexport function memoizeCompare(fn, isEqual) {\n var memoize = function memoize() {\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n for (var c = 0; c < memoize.cache.length; c++) {\n var cached = memoize.cache[c];\n\n if (isEqual(args, cached.args)) {\n // TODO: move this cache entry to the top so recently used entries move up?\n return cached.res;\n }\n }\n\n var res = fn.apply(fn, args);\n memoize.cache.unshift({\n args,\n res\n });\n return res;\n };\n\n memoize.cache = [];\n return memoize;\n}\n/**\n * Find the maximum number of arguments expected by a typed function.\n * @param {function} fn A typed function\n * @return {number} Returns the maximum number of expected arguments.\n * Returns -1 when no signatures where found on the function.\n */\n\nexport function maxArgumentCount(fn) {\n return Object.keys(fn.signatures || {}).reduce(function (args, signature) {\n var count = (signature.match(/,/g) || []).length + 1;\n return Math.max(args, count);\n }, -1);\n}","import { filter, filterRegExp } from '../../utils/array.js';\nimport { maxArgumentCount } from '../../utils/function.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilter = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Filter the items in an array or one dimensional matrix.\n *\n * Syntax:\n *\n * math.filter(x, test)\n *\n * Examples:\n *\n * function isPositive (x) {\n * return x > 0\n * }\n * math.filter([6, -2, -1, 4, 3], isPositive) // returns [6, 4, 3]\n *\n * math.filter([\"23\", \"foo\", \"100\", \"55\", \"bar\"], /[0-9]+/) // returns [\"23\", \"100\", \"55\"]\n *\n * See also:\n *\n * forEach, map, sort\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to filter\n * @param {Function | RegExp} test\n * A function or regular expression to test items.\n * All entries for which `test` returns true are returned.\n * When `test` is a function, it is invoked with three parameters:\n * the value of the element, the index of the element, and the\n * matrix/array being traversed. The function must return a boolean.\n * @return {Matrix | Array} Returns the filtered matrix.\n */\n return typed('filter', {\n 'Array, function': _filterCallback,\n 'Matrix, function': function MatrixFunction(x, test) {\n return x.create(_filterCallback(x.toArray(), test));\n },\n 'Array, RegExp': filterRegExp,\n 'Matrix, RegExp': function MatrixRegExp(x, test) {\n return x.create(filterRegExp(x.toArray(), test));\n }\n });\n});\n/**\n * Filter values in a callback given a callback function\n * @param {Array} x\n * @param {Function} callback\n * @return {Array} Returns the filtered array\n * @private\n */\n\nfunction _filterCallback(x, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n return filter(x, function (value, index, array) {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n return callback(value);\n } else if (args === 2) {\n return callback(value, [index]);\n } else {\n // 3 or -1\n return callback(value, [index], array);\n }\n });\n}","import { clone } from '../../utils/object.js';\nimport { flatten as flattenArray } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'flatten';\nvar dependencies = ['typed', 'matrix'];\nexport var createFlatten = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n\n /**\n * Flatten a multi dimensional matrix into a single dimensional matrix.\n * It is guaranteed to always return a clone of the argument.\n *\n * Syntax:\n *\n * math.flatten(x)\n *\n * Examples:\n *\n * math.flatten([[1,2], [3,4]]) // returns [1, 2, 3, 4]\n *\n * See also:\n *\n * concat, resize, size, squeeze\n *\n * @param {Matrix | Array} x Matrix to be flattened\n * @return {Matrix | Array} Returns the flattened matrix\n */\n return typed(name, {\n Array: function Array(x) {\n return flattenArray(clone(x));\n },\n Matrix: function Matrix(x) {\n var flat = flattenArray(clone(x.toArray())); // TODO: return the same matrix type as x\n\n return matrix(flat);\n }\n });\n});","import { maxArgumentCount } from '../../utils/function.js';\nimport { forEach as forEachArray } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEach = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Iterate over all elements of a matrix/array, and executes the given callback function.\n *\n * Syntax:\n *\n * math.forEach(x, callback)\n *\n * Examples:\n *\n * math.forEach([1, 2, 3], function(value) {\n * console.log(value)\n * })\n * // outputs 1, 2, 3\n *\n * See also:\n *\n * filter, map, sort\n *\n * @param {Matrix | Array} x The matrix to iterate on.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix/array being traversed.\n */\n return typed(name, {\n 'Array, function': _forEach,\n 'Matrix, function': function MatrixFunction(x, callback) {\n return x.forEach(callback);\n }\n });\n});\n/**\n * forEach for a multi dimensional array\n * @param {Array} array\n * @param {Function} callback\n * @private\n */\n\nfunction _forEach(array, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n\n var recurse = function recurse(value, index) {\n if (Array.isArray(value)) {\n forEachArray(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n recurse(child, index.concat(i));\n });\n } else {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n callback(value);\n } else if (args === 2) {\n callback(value, index);\n } else {\n // 3 or -1\n callback(value, index, array);\n }\n }\n };\n\n recurse(array, []);\n}","import { factory } from '../../utils/factory.js';\nimport { getArrayDataType } from '../../utils/array.js';\nimport { typeOf } from '../../utils/is.js';\nvar name = 'getMatrixDataType';\nvar dependencies = ['typed'];\nexport var createGetMatrixDataType = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Find the data type of all elements in a matrix or array,\n * for example 'number' if all items are a number and 'Complex' if all values\n * are complex numbers.\n * If a matrix contains more than one data type, it will return 'mixed'.\n *\n * Syntax:\n *\n * math.getMatrixDataType(x)\n *\n * Examples:\n *\n * const x = [ [1, 2, 3], [4, 5, 6] ]\n * const mixedX = [ [1, true], [2, 3] ]\n * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3] ]\n * const unitX = [ [math.unit('5cm')], [math.unit('5cm')] ]\n * const bigNumberX = [ [math.bignumber(1)], [math.bignumber(0)] ]\n * const sparse = math.sparse(x)\n * const dense = math.matrix(x)\n * math.getMatrixDataType(x) // returns 'number'\n * math.getMatrixDataType(sparse) // returns 'number'\n * math.getMatrixDataType(dense) // returns 'number'\n * math.getMatrixDataType(mixedX) // returns 'mixed'\n * math.getMatrixDataType(fractionX) // returns 'Fraction'\n * math.getMatrixDataType(unitX) // returns 'Unit'\n * math.getMatrixDataType(bigNumberX) // return 'BigNumber'\n *\n * See also:\n * SparseMatrix, DenseMatrix\n *\n * @param {...Matrix | Array} x The Matrix with values.\n *\n * @return {string} A string representation of the matrix type\n */\n return typed(name, {\n Array: function Array(x) {\n return getArrayDataType(x, typeOf);\n },\n Matrix: function Matrix(x) {\n return x.getDataType();\n }\n });\n});","import { isBigNumber } from '../../utils/is.js';\nimport { resize } from '../../utils/array.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'identity';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix'];\nexport var createIdentity = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n\n /**\n * Create a 2-dimensional identity matrix with size m x n or n x n.\n * The matrix has ones on the diagonal and zeros elsewhere.\n *\n * Syntax:\n *\n * math.identity(n)\n * math.identity(n, format)\n * math.identity(m, n)\n * math.identity(m, n, format)\n * math.identity([m, n])\n * math.identity([m, n], format)\n *\n * Examples:\n *\n * math.identity(3) // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]]\n * math.identity(3, 2) // returns [[1, 0], [0, 1], [0, 0]]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.identity(math.size(A)) // returns [[1, 0, 0], [0, 1, 0]]\n *\n * See also:\n *\n * diag, ones, zeros, size, range\n *\n * @param {...number | Matrix | Array} size The size for the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Matrix | Array | number} A matrix with ones on the diagonal.\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Matrix' ? matrix([]) : [];\n },\n string: function string(format) {\n return matrix(format);\n },\n 'number | BigNumber': function numberBigNumber(rows) {\n return _identity(rows, rows, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber, string': function numberBigNumberString(rows, format) {\n return _identity(rows, rows, format);\n },\n 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(rows, cols) {\n return _identity(rows, cols, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber, number | BigNumber, string': function numberBigNumberNumberBigNumberString(rows, cols, format) {\n return _identity(rows, cols, format);\n },\n Array: function Array(size) {\n return _identityVector(size);\n },\n 'Array, string': function ArrayString(size, format) {\n return _identityVector(size, format);\n },\n Matrix: function Matrix(size) {\n return _identityVector(size.valueOf(), size.storage());\n },\n 'Matrix, string': function MatrixString(size, format) {\n return _identityVector(size.valueOf(), format);\n }\n });\n\n function _identityVector(size, format) {\n switch (size.length) {\n case 0:\n return format ? matrix(format) : [];\n\n case 1:\n return _identity(size[0], size[0], format);\n\n case 2:\n return _identity(size[0], size[1], format);\n\n default:\n throw new Error('Vector containing two values expected');\n }\n }\n /**\n * Create an identity matrix\n * @param {number | BigNumber} rows\n * @param {number | BigNumber} cols\n * @param {string} [format]\n * @returns {Matrix}\n * @private\n */\n\n\n function _identity(rows, cols, format) {\n // BigNumber constructor with the right precision\n var Big = isBigNumber(rows) || isBigNumber(cols) ? BigNumber : null;\n if (isBigNumber(rows)) rows = rows.toNumber();\n if (isBigNumber(cols)) cols = cols.toNumber();\n\n if (!isInteger(rows) || rows < 1) {\n throw new Error('Parameters in function identity must be positive integers');\n }\n\n if (!isInteger(cols) || cols < 1) {\n throw new Error('Parameters in function identity must be positive integers');\n }\n\n var one = Big ? new BigNumber(1) : 1;\n var defaultValue = Big ? new Big(0) : 0;\n var size = [rows, cols]; // check we need to return a matrix\n\n if (format) {\n // create diagonal matrix (use optimized implementation for storage format)\n if (format === 'sparse') {\n return SparseMatrix.diagonal(size, one, 0, defaultValue);\n }\n\n if (format === 'dense') {\n return DenseMatrix.diagonal(size, one, 0, defaultValue);\n }\n\n throw new TypeError(\"Unknown matrix type \\\"\".concat(format, \"\\\"\"));\n } // create and resize array\n\n\n var res = resize([], size, defaultValue); // fill in ones on the diagonal\n\n var minimum = rows < cols ? rows : cols; // fill diagonal\n\n for (var d = 0; d < minimum; d++) {\n res[d][d] = one;\n }\n\n return res;\n }\n});","import { arraySize as size } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'kron';\nvar dependencies = ['typed', 'matrix', 'multiplyScalar'];\nexport var createKron = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n multiplyScalar\n } = _ref;\n\n /**\n * Calculates the kronecker product of 2 matrices or vectors.\n *\n * NOTE: If a one dimensional vector / matrix is given, it will be\n * wrapped so its two dimensions.\n * See the examples.\n *\n * Syntax:\n *\n * math.kron(x, y)\n *\n * Examples:\n *\n * math.kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])\n * // returns [ [ 1, 2, 0, 0 ], [ 3, 4, 0, 0 ], [ 0, 0, 1, 2 ], [ 0, 0, 3, 4 ] ]\n *\n * math.kron([1,1], [2,3,4])\n * // returns [ [ 2, 3, 4, 2, 3, 4 ] ]\n *\n * See also:\n *\n * multiply, dot, cross\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {Array | Matrix} Returns the kronecker product of `x` and `y`\n */\n return typed(name, {\n 'Matrix, Matrix': function MatrixMatrix(x, y) {\n return matrix(_kron(x.toArray(), y.toArray()));\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n return matrix(_kron(x.toArray(), y));\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n return matrix(_kron(x, y.toArray()));\n },\n 'Array, Array': _kron\n });\n /**\n * Calculate the kronecker product of two matrices / vectors\n * @param {Array} a First vector\n * @param {Array} b Second vector\n * @returns {Array} Returns the kronecker product of x and y\n * @private\n */\n\n function _kron(a, b) {\n // Deal with the dimensions of the matricies.\n if (size(a).length === 1) {\n // Wrap it in a 2D Matrix\n a = [a];\n }\n\n if (size(b).length === 1) {\n // Wrap it in a 2D Matrix\n b = [b];\n }\n\n if (size(a).length > 2 || size(b).length > 2) {\n throw new RangeError('Vectors with dimensions greater then 2 are not supported expected ' + '(Size x = ' + JSON.stringify(a.length) + ', y = ' + JSON.stringify(b.length) + ')');\n }\n\n var t = [];\n var r = [];\n return a.map(function (a) {\n return b.map(function (b) {\n r = [];\n t.push(r);\n return a.map(function (y) {\n return b.map(function (x) {\n return r.push(multiplyScalar(y, x));\n });\n });\n });\n }) && t;\n }\n});","import { maxArgumentCount } from '../../utils/function.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Create a new matrix or array with the results of the callback function executed on\n * each entry of the matrix/array.\n *\n * Syntax:\n *\n * math.map(x, callback)\n *\n * Examples:\n *\n * math.map([1, 2, 3], function(value) {\n * return value * value\n * }) // returns [1, 4, 9]\n *\n * See also:\n *\n * filter, forEach, sort\n *\n * @param {Matrix | Array} x The matrix to iterate on.\n * @param {Function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the matrix being traversed.\n * @return {Matrix | array} Transformed map of x\n */\n return typed(name, {\n 'Array, function': _map,\n 'Matrix, function': function MatrixFunction(x, callback) {\n return x.map(callback);\n }\n });\n});\n/**\n * Map for a multi dimensional array\n * @param {Array} array\n * @param {Function} callback\n * @return {Array}\n * @private\n */\n\nfunction _map(array, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n\n var recurse = function recurse(value, index) {\n if (Array.isArray(value)) {\n return value.map(function (child, i) {\n // we create a copy of the index array and append the new index value\n return recurse(child, index.concat(i));\n });\n } else {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n return callback(value);\n } else if (args === 2) {\n return callback(value, index);\n } else {\n // 3 or -1\n return callback(value, index, array);\n }\n }\n };\n\n return recurse(array, []);\n}","import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number'];\nexport var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number\n } = _ref;\n\n /**\n * Create a new matrix or array of the difference between elements of the given array\n * The optional dim parameter lets you specify the dimension to evaluate the difference of\n * If no dimension parameter is passed it is assumed as dimension 0\n *\n * Dimension is zero-based in javascript and one-based in the parser and can be a number or bignumber\n * Arrays must be 'rectangular' meaning arrays like [1, 2]\n * If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays\n *\n * Syntax:\n *\n * math.diff(arr)\n * math.diff(arr, dim)\n *\n * Examples:\n *\n * const arr = [1, 2, 4, 7, 0]\n * math.diff(arr) // returns [1, 2, 3, -7] (no dimension passed so 0 is assumed)\n * math.diff(math.matrix(arr)) // returns math.matrix([1, 2, 3, -7])\n *\n * const arr = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [9, 8, 7, 6, 4]]\n * math.diff(arr) // returns [[0, 0, 0, 0, 0], [8, 6, 4, 2, -1]]\n * math.diff(arr, 0) // returns [[0, 0, 0, 0, 0], [8, 6, 4, 2, -1]]\n * math.diff(arr, 1) // returns [[1, 1, 1, 1], [1, 1, 1, 1], [-1, -1, -1, -2]]\n * math.diff(arr, math.bignumber(1)) // returns [[1, 1, 1, 1], [1, 1, 1, 1], [-1, -1, -1, -2]]\n *\n * math.diff(arr, 2) // throws RangeError as arr is 2 dimensional not 3\n * math.diff(arr, -1) // throws RangeError as negative dimensions are not allowed\n *\n * // These will all produce the same result\n * math.diff([[1, 2], [3, 4]])\n * math.diff([math.matrix([1, 2]), math.matrix([3, 4])])\n * math.diff([[1, 2], math.matrix([3, 4])])\n * math.diff([math.matrix([1, 2]), [3, 4]])\n * // They do not produce the same result as math.diff(math.matrix([[1, 2], [3, 4]])) as this returns a matrix\n *\n * See Also:\n *\n * sum\n * subtract\n * partitionSelect\n *\n * @param {Array | Matrix} arr An array or matrix\n * @param {number} dim Dimension\n * @return {Array | Matrix} Difference between array elements in given dimension\n */\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(arr) {\n // No dimension specified => assume dimension 0\n if (isMatrix(arr)) {\n return matrix(_diff(arr.toArray()));\n } else {\n return _diff(arr);\n }\n },\n 'Array | Matrix, number': function ArrayMatrixNumber(arr, dim) {\n if (!isInteger(dim)) throw new RangeError('Dimension must be a whole number');\n\n if (isMatrix(arr)) {\n return matrix(_recursive(arr.toArray(), dim));\n } else {\n return _recursive(arr, dim);\n }\n },\n 'Array | Matrix, BigNumber': function ArrayMatrixBigNumber(arr, dim) {\n return this(arr, number(dim));\n }\n });\n /**\n * Recursively find the correct dimension in the array/matrix\n * Then Apply _diff to that dimension\n *\n * @param {Array} arr The array\n * @param {number} dim Dimension\n * @return {Array} resulting array\n */\n\n function _recursive(arr, dim) {\n if (isMatrix(arr)) {\n arr = arr.toArray(); // Makes sure arrays like [ matrix([0, 1]), matrix([1, 0]) ] are processed properly\n }\n\n if (!Array.isArray(arr)) {\n throw RangeError('Array/Matrix does not have that many dimensions');\n }\n\n if (dim > 0) {\n var result = [];\n arr.forEach(element => {\n result.push(_recursive(element, dim - 1));\n });\n return result;\n } else if (dim === 0) {\n return _diff(arr);\n } else {\n throw RangeError('Cannot have negative dimension');\n }\n }\n /**\n * Difference between elements in the array\n *\n * @param {Array} arr An array\n * @return {Array} resulting array\n */\n\n\n function _diff(arr) {\n var result = [];\n var size = arr.length;\n\n if (size < 2) {\n return arr;\n }\n\n for (var i = 1; i < size; i++) {\n result.push(_ElementDiff(arr[i - 1], arr[i]));\n }\n\n return result;\n }\n /**\n * Difference between 2 objects\n *\n * @param {Object} obj1 First object\n * @param {Object} obj2 Second object\n * @return {Array} resulting array\n */\n\n\n function _ElementDiff(obj1, obj2) {\n // Convert matrices to arrays\n if (isMatrix(obj1)) obj1 = obj1.toArray();\n if (isMatrix(obj2)) obj2 = obj2.toArray();\n var obj1IsArray = Array.isArray(obj1);\n var obj2IsArray = Array.isArray(obj2);\n\n if (obj1IsArray && obj2IsArray) {\n return _ArrayDiff(obj1, obj2);\n }\n\n if (!obj1IsArray && !obj2IsArray) {\n return subtract(obj2, obj1); // Difference is (second - first) NOT (first - second)\n }\n\n throw TypeError('Cannot calculate difference between 1 array and 1 non-array');\n }\n /**\n * Difference of elements in 2 arrays\n *\n * @param {Array} arr1 Array 1\n * @param {Array} arr2 Array 2\n * @return {Array} resulting array\n */\n\n\n function _ArrayDiff(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n throw RangeError('Not all sub-arrays have the same length');\n }\n\n var result = [];\n var size = arr1.length;\n\n for (var i = 0; i < size; i++) {\n result.push(_ElementDiff(arr1[i], arr2[i]));\n }\n\n return result;\n }\n});","import { isBigNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { resize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ones';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createOnes = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n\n /**\n * Create a matrix filled with ones. The created matrix can have one or\n * multiple dimensions.\n *\n * Syntax:\n *\n * math.ones(m)\n * math.ones(m, format)\n * math.ones(m, n)\n * math.ones(m, n, format)\n * math.ones([m, n])\n * math.ones([m, n], format)\n * math.ones([m, n, p, ...])\n * math.ones([m, n, p, ...], format)\n *\n * Examples:\n *\n * math.ones(3) // returns [1, 1, 1]\n * math.ones(3, 2) // returns [[1, 1], [1, 1], [1, 1]]\n * math.ones(3, 2, 'dense') // returns Dense Matrix [[1, 1], [1, 1], [1, 1]]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.ones(math.size(A)) // returns [[1, 1, 1], [1, 1, 1]]\n *\n * See also:\n *\n * zeros, identity, size, range\n *\n * @param {...number | Array} size The size of each dimension of the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Array | Matrix | number} A matrix filled with ones\n */\n return typed('ones', {\n '': function _() {\n return config.matrix === 'Array' ? _ones([]) : _ones([], 'default');\n },\n // math.ones(m, n, p, ..., format)\n // TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this\n '...number | BigNumber | string': function numberBigNumberString(size) {\n var last = size[size.length - 1];\n\n if (typeof last === 'string') {\n var format = size.pop();\n return _ones(size, format);\n } else if (config.matrix === 'Array') {\n return _ones(size);\n } else {\n return _ones(size, 'default');\n }\n },\n Array: _ones,\n Matrix: function Matrix(size) {\n var format = size.storage();\n return _ones(size.valueOf(), format);\n },\n 'Array | Matrix, string': function ArrayMatrixString(size, format) {\n return _ones(size.valueOf(), format);\n }\n });\n /**\n * Create an Array or Matrix with ones\n * @param {Array} size\n * @param {string} [format='default']\n * @return {Array | Matrix}\n * @private\n */\n\n function _ones(size, format) {\n var hasBigNumbers = _normalize(size);\n\n var defaultValue = hasBigNumbers ? new BigNumber(1) : 1;\n\n _validate(size);\n\n if (format) {\n // return a matrix\n var m = matrix(format);\n\n if (size.length > 0) {\n return m.resize(size, defaultValue);\n }\n\n return m;\n } else {\n // return an Array\n var arr = [];\n\n if (size.length > 0) {\n return resize(arr, size, defaultValue);\n }\n\n return arr;\n }\n } // replace BigNumbers with numbers, returns true if size contained BigNumbers\n\n\n function _normalize(size) {\n var hasBigNumbers = false;\n size.forEach(function (value, index, arr) {\n if (isBigNumber(value)) {\n hasBigNumbers = true;\n arr[index] = value.toNumber();\n }\n });\n return hasBigNumbers;\n } // validate arguments\n\n\n function _validate(size) {\n size.forEach(function (value) {\n if (typeof value !== 'number' || !isInteger(value) || value < 0) {\n throw new Error('Parameters in function ones must be positive integers');\n }\n });\n }\n});","export function noBignumber() {\n throw new Error('No \"bignumber\" implementation available');\n}\nexport function noFraction() {\n throw new Error('No \"fraction\" implementation available');\n}\nexport function noMatrix() {\n throw new Error('No \"matrix\" implementation available');\n}\nexport function noIndex() {\n throw new Error('No \"index\" implementation available');\n}\nexport function noSubset() {\n throw new Error('No \"matrix\" implementation available');\n}","import { factory } from '../../utils/factory.js';\nimport { noBignumber, noMatrix } from '../../utils/noop.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq'];\nexport var createRange = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq\n } = _ref;\n\n /**\n * Create an array from a range.\n * By default, the range end is excluded. This can be customized by providing\n * an extra parameter `includeEnd`.\n *\n * Syntax:\n *\n * math.range(str [, includeEnd]) // Create a range from a string,\n * // where the string contains the\n * // start, optional step, and end,\n * // separated by a colon.\n * math.range(start, end [, includeEnd]) // Create a range with start and\n * // end and a step size of 1.\n * math.range(start, end, step [, includeEnd]) // Create a range with start, step,\n * // and end.\n *\n * Where:\n *\n * - `str: string`\n * A string 'start:end' or 'start:step:end'\n * - `start: {number | BigNumber}`\n * Start of the range\n * - `end: number | BigNumber`\n * End of the range, excluded by default, included when parameter includeEnd=true\n * - `step: number | BigNumber`\n * Step size. Default value is 1.\n * - `includeEnd: boolean`\n * Option to specify whether to include the end or not. False by default.\n *\n * Examples:\n *\n * math.range(2, 6) // [2, 3, 4, 5]\n * math.range(2, -3, -1) // [2, 1, 0, -1, -2]\n * math.range('2:1:6') // [2, 3, 4, 5]\n * math.range(2, 6, true) // [2, 3, 4, 5, 6]\n *\n * See also:\n *\n * ones, zeros, size, subset\n *\n * @param {*} args Parameters describing the ranges `start`, `end`, and optional `step`.\n * @return {Array | Matrix} range\n */\n return typed(name, {\n // TODO: simplify signatures when typed-function supports default values and optional arguments\n // TODO: a number or boolean should not be converted to string here\n string: _strRange,\n 'string, boolean': _strRange,\n 'number, number': function numberNumber(start, end) {\n return _out(_rangeEx(start, end, 1));\n },\n 'number, number, number': function numberNumberNumber(start, end, step) {\n return _out(_rangeEx(start, end, step));\n },\n 'number, number, boolean': function numberNumberBoolean(start, end, includeEnd) {\n return includeEnd ? _out(_rangeInc(start, end, 1)) : _out(_rangeEx(start, end, 1));\n },\n 'number, number, number, boolean': function numberNumberNumberBoolean(start, end, step, includeEnd) {\n return includeEnd ? _out(_rangeInc(start, end, step)) : _out(_rangeEx(start, end, step));\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(start, end) {\n var BigNumber = start.constructor;\n return _out(_bigRangeEx(start, end, new BigNumber(1)));\n },\n 'BigNumber, BigNumber, BigNumber': function BigNumberBigNumberBigNumber(start, end, step) {\n return _out(_bigRangeEx(start, end, step));\n },\n 'BigNumber, BigNumber, boolean': function BigNumberBigNumberBoolean(start, end, includeEnd) {\n var BigNumber = start.constructor;\n return includeEnd ? _out(_bigRangeInc(start, end, new BigNumber(1))) : _out(_bigRangeEx(start, end, new BigNumber(1)));\n },\n 'BigNumber, BigNumber, BigNumber, boolean': function BigNumberBigNumberBigNumberBoolean(start, end, step, includeEnd) {\n return includeEnd ? _out(_bigRangeInc(start, end, step)) : _out(_bigRangeEx(start, end, step));\n }\n });\n\n function _out(arr) {\n if (config.matrix === 'Matrix') {\n return matrix ? matrix(arr) : noMatrix();\n }\n\n return arr;\n }\n\n function _strRange(str, includeEnd) {\n var r = _parse(str);\n\n if (!r) {\n throw new SyntaxError('String \"' + str + '\" is no valid range');\n }\n\n var fn;\n\n if (config.number === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n\n fn = includeEnd ? _bigRangeInc : _bigRangeEx;\n return _out(fn(bignumber(r.start), bignumber(r.end), bignumber(r.step)));\n } else {\n fn = includeEnd ? _rangeInc : _rangeEx;\n return _out(fn(r.start, r.end, r.step));\n }\n }\n /**\n * Create a range with numbers. End is excluded\n * @param {number} start\n * @param {number} end\n * @param {number} step\n * @returns {Array} range\n * @private\n */\n\n\n function _rangeEx(start, end, step) {\n var array = [];\n var x = start;\n\n if (step > 0) {\n while (smaller(x, end)) {\n array.push(x);\n x += step;\n }\n } else if (step < 0) {\n while (larger(x, end)) {\n array.push(x);\n x += step;\n }\n }\n\n return array;\n }\n /**\n * Create a range with numbers. End is included\n * @param {number} start\n * @param {number} end\n * @param {number} step\n * @returns {Array} range\n * @private\n */\n\n\n function _rangeInc(start, end, step) {\n var array = [];\n var x = start;\n\n if (step > 0) {\n while (smallerEq(x, end)) {\n array.push(x);\n x += step;\n }\n } else if (step < 0) {\n while (largerEq(x, end)) {\n array.push(x);\n x += step;\n }\n }\n\n return array;\n }\n /**\n * Create a range with big numbers. End is excluded\n * @param {BigNumber} start\n * @param {BigNumber} end\n * @param {BigNumber} step\n * @returns {Array} range\n * @private\n */\n\n\n function _bigRangeEx(start, end, step) {\n var zero = bignumber(0);\n var array = [];\n var x = start;\n\n if (step.gt(zero)) {\n while (smaller(x, end)) {\n array.push(x);\n x = x.plus(step);\n }\n } else if (step.lt(zero)) {\n while (larger(x, end)) {\n array.push(x);\n x = x.plus(step);\n }\n }\n\n return array;\n }\n /**\n * Create a range with big numbers. End is included\n * @param {BigNumber} start\n * @param {BigNumber} end\n * @param {BigNumber} step\n * @returns {Array} range\n * @private\n */\n\n\n function _bigRangeInc(start, end, step) {\n var zero = bignumber(0);\n var array = [];\n var x = start;\n\n if (step.gt(zero)) {\n while (smallerEq(x, end)) {\n array.push(x);\n x = x.plus(step);\n }\n } else if (step.lt(zero)) {\n while (largerEq(x, end)) {\n array.push(x);\n x = x.plus(step);\n }\n }\n\n return array;\n }\n /**\n * Parse a string into a range,\n * The string contains the start, optional step, and end, separated by a colon.\n * If the string does not contain a valid range, null is returned.\n * For example str='0:2:11'.\n * @param {string} str\n * @return {{start: number, end: number, step: number} | null} range Object containing properties start, end, step\n * @private\n */\n\n\n function _parse(str) {\n var args = str.split(':'); // number\n\n var nums = args.map(function (arg) {\n // use Number and not parseFloat as Number returns NaN on invalid garbage in the string\n return Number(arg);\n });\n var invalid = nums.some(function (num) {\n return isNaN(num);\n });\n\n if (invalid) {\n return null;\n }\n\n switch (nums.length) {\n case 2:\n return {\n start: nums[0],\n end: nums[1],\n step: 1\n };\n\n case 3:\n return {\n start: nums[0],\n end: nums[2],\n step: nums[1]\n };\n\n default:\n return null;\n }\n }\n});","import { reshape as arrayReshape } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'reshape';\nvar dependencies = ['typed', 'isInteger', 'matrix'];\nexport var createReshape = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n\n /**\n * Reshape a multi dimensional array to fit the specified dimensions\n *\n * Syntax:\n *\n * math.reshape(x, sizes)\n *\n * Examples:\n *\n * math.reshape([1, 2, 3, 4, 5, 6], [2, 3])\n * // returns Array [[1, 2, 3], [4, 5, 6]]\n *\n * math.reshape([[1, 2], [3, 4]], [1, 4])\n * // returns Array [[1, 2, 3, 4]]\n *\n * math.reshape([[1, 2], [3, 4]], [4])\n * // returns Array [1, 2, 3, 4]\n *\n * const x = math.matrix([1, 2, 3, 4, 5, 6, 7, 8])\n * math.reshape(x, [2, 2, 2])\n * // returns Matrix [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]\n *\n * math.reshape([1, 2, 3, 4], [-1, 2])\n * // returns Matrix [[1, 2], [3, 4]]\n *\n * See also:\n *\n * size, squeeze, resize\n *\n * @param {Array | Matrix | *} x Matrix to be reshaped\n * @param {number[]} sizes One dimensional array with integral sizes for\n * each dimension. One -1 is allowed as wildcard,\n * which calculates this dimension automatically.\n *\n * @return {* | Array | Matrix} A reshaped clone of matrix `x`\n *\n * @throws {TypeError} If `sizes` does not contain solely integers\n * @throws {DimensionError} If the product of the new dimension sizes does\n * not equal that of the old ones\n */\n return typed(name, {\n 'Matrix, Array': function MatrixArray(x, sizes) {\n return x.reshape(sizes);\n },\n 'Array, Array': function ArrayArray(x, sizes) {\n sizes.forEach(function (size) {\n if (!isInteger(size)) {\n throw new TypeError('Invalid size for dimension: ' + size);\n }\n });\n return arrayReshape(x, sizes);\n }\n });\n});","import { isBigNumber, isMatrix } from '../../utils/is.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nimport { isInteger } from '../../utils/number.js';\nimport { format } from '../../utils/string.js';\nimport { clone } from '../../utils/object.js';\nimport { resize as arrayResize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'resize';\nvar dependencies = ['config', 'matrix'];\nexport var createResize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n matrix\n } = _ref;\n\n /**\n * Resize a matrix\n *\n * Syntax:\n *\n * math.resize(x, size)\n * math.resize(x, size, defaultValue)\n *\n * Examples:\n *\n * math.resize([1, 2, 3, 4, 5], [3]) // returns Array [1, 2, 3]\n * math.resize([1, 2, 3], [5], 0) // returns Array [1, 2, 3, 0, 0]\n * math.resize(2, [2, 3], 0) // returns Matrix [[2, 0, 0], [0, 0, 0]]\n * math.resize(\"hello\", [8], \"!\") // returns string 'hello!!!'\n *\n * See also:\n *\n * size, squeeze, subset, reshape\n *\n * @param {Array | Matrix | *} x Matrix to be resized\n * @param {Array | Matrix} size One dimensional array with numbers\n * @param {number | string} [defaultValue=0] Zero by default, except in\n * case of a string, in that case\n * defaultValue = ' '\n * @return {* | Array | Matrix} A resized clone of matrix `x`\n */\n // TODO: rework resize to a typed-function\n return function resize(x, size, defaultValue) {\n if (arguments.length !== 2 && arguments.length !== 3) {\n throw new ArgumentsError('resize', arguments.length, 2, 3);\n }\n\n if (isMatrix(size)) {\n size = size.valueOf(); // get Array\n }\n\n if (isBigNumber(size[0])) {\n // convert bignumbers to numbers\n size = size.map(function (value) {\n return !isBigNumber(value) ? value : value.toNumber();\n });\n } // check x is a Matrix\n\n\n if (isMatrix(x)) {\n // use optimized matrix implementation, return copy\n return x.resize(size, defaultValue, true);\n }\n\n if (typeof x === 'string') {\n // resize string\n return _resizeString(x, size, defaultValue);\n } // check result should be a matrix\n\n\n var asMatrix = Array.isArray(x) ? false : config.matrix !== 'Array';\n\n if (size.length === 0) {\n // output a scalar\n while (Array.isArray(x)) {\n x = x[0];\n }\n\n return clone(x);\n } else {\n // output an array/matrix\n if (!Array.isArray(x)) {\n x = [x];\n }\n\n x = clone(x);\n var res = arrayResize(x, size, defaultValue);\n return asMatrix ? matrix(res) : res;\n }\n };\n /**\n * Resize a string\n * @param {string} str\n * @param {number[]} size\n * @param {string} [defaultChar=' ']\n * @private\n */\n\n function _resizeString(str, size, defaultChar) {\n if (defaultChar !== undefined) {\n if (typeof defaultChar !== 'string' || defaultChar.length !== 1) {\n throw new TypeError('Single character expected as defaultValue');\n }\n } else {\n defaultChar = ' ';\n }\n\n if (size.length !== 1) {\n throw new DimensionError(size.length, 1);\n }\n\n var len = size[0];\n\n if (typeof len !== 'number' || !isInteger(len)) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(size) + ')');\n }\n\n if (str.length > len) {\n return str.substring(0, len);\n } else if (str.length < len) {\n var res = str;\n\n for (var i = 0, ii = len - str.length; i < ii; i++) {\n res += defaultChar;\n }\n\n return res;\n } else {\n return str;\n }\n }\n});","import { factory } from '../../utils/factory.js';\nimport { arraySize } from '../../utils/array.js';\nvar name = 'rotate';\nvar dependencies = ['typed', 'multiply', 'rotationMatrix'];\nexport var createRotate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n multiply,\n rotationMatrix\n } = _ref;\n\n /**\n * Rotate a vector of size 1x2 counter-clockwise by a given angle\n * Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis\n *\n * Syntax:\n *\n * math.rotate(w, theta)\n * math.rotate(w, theta, v)\n *\n * Examples:\n *\n * math.rotate([11, 12], math.pi / 2) // returns matrix([-12, 11])\n * math.rotate(matrix([11, 12]), math.pi / 2) // returns matrix([-12, 11])\n *\n * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])\n * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])\n *\n * math.rotate([1, 0], math.complex(1 + i)) // returns matrix([cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)])\n *\n * See also:\n *\n * matrix, rotationMatrix\n *\n * @param {Array | Matrix} w Vector to rotate\n * @param {number | BigNumber | Complex | Unit} theta Rotation angle\n * @param {Array | Matrix} [v] Rotation axis\n * @return {Array | Matrix} Multiplication of the rotation matrix and w\n */\n return typed(name, {\n 'Array , number | BigNumber | Complex | Unit': function ArrayNumberBigNumberComplexUnit(w, theta) {\n _validateSize(w, 2);\n\n var matrixRes = multiply(rotationMatrix(theta), w);\n return matrixRes.toArray();\n },\n 'Matrix , number | BigNumber | Complex | Unit': function MatrixNumberBigNumberComplexUnit(w, theta) {\n _validateSize(w, 2);\n\n return multiply(rotationMatrix(theta), w);\n },\n 'Array, number | BigNumber | Complex | Unit, Array | Matrix': function ArrayNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {\n _validateSize(w, 3);\n\n var matrixRes = multiply(rotationMatrix(theta, v), w);\n return matrixRes;\n },\n 'Matrix, number | BigNumber | Complex | Unit, Array | Matrix': function MatrixNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {\n _validateSize(w, 3);\n\n return multiply(rotationMatrix(theta, v), w);\n }\n });\n\n function _validateSize(v, expectedSize) {\n var actualSize = Array.isArray(v) ? arraySize(v) : v.size();\n\n if (actualSize.length > 2) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n\n if (actualSize.length === 2 && actualSize[1] !== 1) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n\n if (actualSize[0] !== expectedSize) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n }\n});","import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'rotationMatrix';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'addScalar', 'unaryMinus', 'norm', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix', 'cos', 'sin'];\nexport var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n addScalar,\n unaryMinus,\n norm,\n BigNumber,\n matrix,\n DenseMatrix,\n SparseMatrix,\n cos,\n sin\n } = _ref;\n\n /**\n * Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).\n * Create a 2-dimensional counter-clockwise rotation matrix (3x3) by a given angle (expressed in radians) around a given axis (1x3).\n *\n * Syntax:\n *\n * math.rotationMatrix(theta)\n * math.rotationMatrix(theta, format)\n * math.rotationMatrix(theta, [v])\n * math.rotationMatrix(theta, [v], format)\n *\n * Examples:\n *\n * math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]\n * math.rotationMatrix(math.bignumber(1)) // returns [[bignumber(cos(1)), bignumber(-sin(1))], [bignumber(sin(1)), bignumber(cos(1))]]\n * math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]\n * math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]\n *\n * math.rotationMatrix(math.pi / 2, [0, 1, 0]) // returns [[0, 0, 1], [0, 1, 0], [-1, 0, 0]]\n * math.rotationMatrix(math.pi / 2, matrix([0, 1, 0])) // returns matrix([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])\n *\n *\n * See also:\n *\n * matrix, cos, sin\n *\n *\n * @param {number | BigNumber | Complex | Unit} theta Rotation angle\n * @param {Array | Matrix} [v] Rotation axis\n * @param {string} [format] Result Matrix storage format\n * @return {Array | Matrix} Rotation matrix\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Matrix' ? matrix([]) : [];\n },\n string: function string(format) {\n return matrix(format);\n },\n 'number | BigNumber | Complex | Unit': function numberBigNumberComplexUnit(theta) {\n return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber | Complex | Unit, string': function numberBigNumberComplexUnitString(theta, format) {\n return _rotationMatrix2x2(theta, format);\n },\n 'number | BigNumber | Complex | Unit, Array': function numberBigNumberComplexUnitArray(theta, v) {\n var matrixV = matrix(v);\n\n _validateVector(matrixV);\n\n return _rotationMatrix3x3(theta, matrixV, undefined);\n },\n 'number | BigNumber | Complex | Unit, Matrix': function numberBigNumberComplexUnitMatrix(theta, v) {\n _validateVector(v);\n\n var storageType = v.storage() || (config.matrix === 'Matrix' ? 'dense' : undefined);\n return _rotationMatrix3x3(theta, v, storageType);\n },\n 'number | BigNumber | Complex | Unit, Array, string': function numberBigNumberComplexUnitArrayString(theta, v, format) {\n var matrixV = matrix(v);\n\n _validateVector(matrixV);\n\n return _rotationMatrix3x3(theta, matrixV, format);\n },\n 'number | BigNumber | Complex | Unit, Matrix, string': function numberBigNumberComplexUnitMatrixString(theta, v, format) {\n _validateVector(v);\n\n return _rotationMatrix3x3(theta, v, format);\n }\n });\n /**\n * Returns 2x2 matrix of 2D rotation of angle theta\n *\n * @param {number | BigNumber | Complex | Unit} theta The rotation angle\n * @param {string} format The result Matrix storage format\n * @returns {Matrix}\n * @private\n */\n\n function _rotationMatrix2x2(theta, format) {\n var Big = isBigNumber(theta);\n var minusOne = Big ? new BigNumber(-1) : -1;\n var cosTheta = cos(theta);\n var sinTheta = sin(theta);\n var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];\n return _convertToFormat(data, format);\n }\n\n function _validateVector(v) {\n var size = v.size();\n\n if (size.length < 1 || size[0] !== 3) {\n throw new RangeError('Vector must be of dimensions 1x3');\n }\n }\n\n function _mul(array) {\n return array.reduce((p, curr) => multiplyScalar(p, curr));\n }\n\n function _convertToFormat(data, format) {\n if (format) {\n if (format === 'sparse') {\n return new SparseMatrix(data);\n }\n\n if (format === 'dense') {\n return new DenseMatrix(data);\n }\n\n throw new TypeError(\"Unknown matrix type \\\"\".concat(format, \"\\\"\"));\n }\n\n return data;\n }\n /**\n * Returns a 3x3 matrix of rotation of angle theta around vector v\n *\n * @param {number | BigNumber | Complex | Unit} theta The rotation angle\n * @param {Matrix} v The rotation axis vector\n * @param {string} format The storage format of the resulting matrix\n * @returns {Matrix}\n * @private\n */\n\n\n function _rotationMatrix3x3(theta, v, format) {\n var normV = norm(v);\n\n if (normV === 0) {\n throw new RangeError('Rotation around zero vector');\n }\n\n var Big = isBigNumber(theta) ? BigNumber : null;\n var one = Big ? new Big(1) : 1;\n var minusOne = Big ? new Big(-1) : -1;\n var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;\n var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;\n var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;\n var c = cos(theta);\n var oneMinusC = addScalar(one, unaryMinus(c));\n var s = sin(theta);\n var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));\n var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));\n var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));\n var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));\n var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));\n var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));\n var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));\n var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));\n var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));\n var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];\n return _convertToFormat(data, format);\n }\n});","import { factory } from '../../utils/factory.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\nexport var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n\n /**\n * Return a row from a Matrix.\n *\n * Syntax:\n *\n * math.row(value, index)\n *\n * Example:\n *\n * // get a row\n * const d = [[1, 2], [3, 4]]\n * math.row(d, 1) // returns [[3, 4]]\n *\n * See also:\n *\n * column\n *\n * @param {Array | Matrix } value An array or matrix\n * @param {number} row The index of the row\n * @return {Array | Matrix} The retrieved row\n */\n return typed(name, {\n 'Matrix, number': _row,\n 'Array, number': function ArrayNumber(value, row) {\n return _row(matrix(clone(value)), row).valueOf();\n }\n });\n /**\n * Retrieve a row of a matrix\n * @param {Matrix } value A matrix\n * @param {number} row The index of the row\n * @return {Matrix} The retrieved row\n */\n\n function _row(value, row) {\n // check dimensions\n if (value.size().length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n\n validateIndex(row, value.size()[0]);\n var columnRange = range(0, value.size()[1]);\n var index = new Index(row, columnRange);\n return value.subset(index);\n }\n});","import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { noMatrix } from '../../utils/noop.js';\nvar name = 'size';\nvar dependencies = ['typed', 'config', '?matrix'];\nexport var createSize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix\n } = _ref;\n\n /**\n * Calculate the size of a matrix or scalar.\n *\n * Syntax:\n *\n * math.size(x)\n *\n * Examples:\n *\n * math.size(2.3) // returns []\n * math.size('hello world') // returns [11]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.size(A) // returns [2, 3]\n * math.size(math.range(1,6)) // returns [5]\n *\n * See also:\n *\n * count, resize, squeeze, subset\n *\n * @param {boolean | number | Complex | Unit | string | Array | Matrix} x A matrix\n * @return {Array | Matrix} A vector with size of `x`.\n */\n return typed(name, {\n Matrix: function Matrix(x) {\n return x.create(x.size());\n },\n Array: arraySize,\n string: function string(x) {\n return config.matrix === 'Array' ? [x.length] : matrix([x.length]);\n },\n 'number | Complex | BigNumber | Unit | boolean | null': function numberComplexBigNumberUnitBooleanNull(x) {\n // scalar\n return config.matrix === 'Array' ? [] : matrix ? matrix([]) : noMatrix();\n }\n });\n});","import { clone } from '../../utils/object.js';\nimport { squeeze as arraySqueeze } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'squeeze';\nvar dependencies = ['typed', 'matrix'];\nexport var createSqueeze = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n\n /**\n * Squeeze a matrix, remove inner and outer singleton dimensions from a matrix.\n *\n * Syntax:\n *\n * math.squeeze(x)\n *\n * Examples:\n *\n * math.squeeze([3]) // returns 3\n * math.squeeze([[3]]) // returns 3\n *\n * const A = math.zeros(3, 1) // returns [[0], [0], [0]] (size 3x1)\n * math.squeeze(A) // returns [0, 0, 0] (size 3)\n *\n * const B = math.zeros(1, 3) // returns [[0, 0, 0]] (size 1x3)\n * math.squeeze(B) // returns [0, 0, 0] (size 3)\n *\n * // only inner and outer dimensions are removed\n * const C = math.zeros(2, 1, 3) // returns [[[0, 0, 0]], [[0, 0, 0]]] (size 2x1x3)\n * math.squeeze(C) // returns [[[0, 0, 0]], [[0, 0, 0]]] (size 2x1x3)\n *\n * See also:\n *\n * subset\n *\n * @param {Matrix | Array} x Matrix to be squeezed\n * @return {Matrix | Array} Squeezed matrix\n */\n return typed(name, {\n Array: function Array(x) {\n return arraySqueeze(clone(x));\n },\n Matrix: function Matrix(x) {\n var res = arraySqueeze(x.toArray()); // FIXME: return the same type of matrix as the input\n\n return Array.isArray(res) ? matrix(res) : res;\n },\n any: function any(x) {\n // scalar\n return clone(x);\n }\n });\n});","import { isIndex } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix'];\nexport var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n\n /**\n * Get or set a subset of a matrix or string.\n *\n * Syntax:\n * math.subset(value, index) // retrieve a subset\n * math.subset(value, index, replacement [, defaultValue]) // replace a subset\n *\n * Examples:\n *\n * // get a subset\n * const d = [[1, 2], [3, 4]]\n * math.subset(d, math.index(1, 0)) // returns 3\n * math.subset(d, math.index([0, 1], 1)) // returns [[2], [4]]\n *\n * // replace a subset\n * const e = []\n * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]]\n * const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 6], [0, 7]]\n *\n * See also:\n *\n * size, resize, squeeze, index\n *\n * @param {Array | Matrix | string} matrix An array, matrix, or string\n * @param {Index} index An index containing ranges for each\n * dimension\n * @param {*} [replacement] An array, matrix, or scalar.\n * If provided, the subset is replaced with replacement.\n * If not provided, the subset is returned\n * @param {*} [defaultValue=undefined] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * math.matrix elements will be left undefined.\n * @return {Array | Matrix | string} Either the retrieved subset or the updated matrix.\n */\n return typed(name, {\n // get subset\n 'Array, Index': function ArrayIndex(value, index) {\n var m = matrix(value);\n var subset = m.subset(index); // returns a Matrix\n\n return index.isScalar() ? subset : subset.valueOf(); // return an Array (like the input)\n },\n 'Matrix, Index': function MatrixIndex(value, index) {\n return value.subset(index);\n },\n 'Object, Index': _getObjectProperty,\n 'string, Index': _getSubstring,\n // set subset\n 'Array, Index, any': function ArrayIndexAny(value, index, replacement) {\n return matrix(clone(value)).subset(index, replacement, undefined).valueOf();\n },\n 'Array, Index, any, any': function ArrayIndexAnyAny(value, index, replacement, defaultValue) {\n return matrix(clone(value)).subset(index, replacement, defaultValue).valueOf();\n },\n 'Matrix, Index, any': function MatrixIndexAny(value, index, replacement) {\n return value.clone().subset(index, replacement);\n },\n 'Matrix, Index, any, any': function MatrixIndexAnyAny(value, index, replacement, defaultValue) {\n return value.clone().subset(index, replacement, defaultValue);\n },\n 'string, Index, string': _setSubstring,\n 'string, Index, string, string': _setSubstring,\n 'Object, Index, any': _setObjectProperty\n });\n});\n/**\n * Retrieve a subset of a string\n * @param {string} str string from which to get a substring\n * @param {Index} index An index containing ranges for each dimension\n * @returns {string} substring\n * @private\n */\n\nfunction _getSubstring(str, index) {\n if (!isIndex(index)) {\n // TODO: better error message\n throw new TypeError('Index expected');\n }\n\n if (index.size().length !== 1) {\n throw new DimensionError(index.size().length, 1);\n } // validate whether the range is out of range\n\n\n var strLen = str.length;\n validateIndex(index.min()[0], strLen);\n validateIndex(index.max()[0], strLen);\n var range = index.dimension(0);\n var substr = '';\n range.forEach(function (v) {\n substr += str.charAt(v);\n });\n return substr;\n}\n/**\n * Replace a substring in a string\n * @param {string} str string to be replaced\n * @param {Index} index An index containing ranges for each dimension\n * @param {string} replacement Replacement string\n * @param {string} [defaultValue] Default value to be uses when resizing\n * the string. is ' ' by default\n * @returns {string} result\n * @private\n */\n\n\nfunction _setSubstring(str, index, replacement, defaultValue) {\n if (!index || index.isIndex !== true) {\n // TODO: better error message\n throw new TypeError('Index expected');\n }\n\n if (index.size().length !== 1) {\n throw new DimensionError(index.size().length, 1);\n }\n\n if (defaultValue !== undefined) {\n if (typeof defaultValue !== 'string' || defaultValue.length !== 1) {\n throw new TypeError('Single character expected as defaultValue');\n }\n } else {\n defaultValue = ' ';\n }\n\n var range = index.dimension(0);\n var len = range.size()[0];\n\n if (len !== replacement.length) {\n throw new DimensionError(range.size()[0], replacement.length);\n } // validate whether the range is out of range\n\n\n var strLen = str.length;\n validateIndex(index.min()[0]);\n validateIndex(index.max()[0]); // copy the string into an array with characters\n\n var chars = [];\n\n for (var i = 0; i < strLen; i++) {\n chars[i] = str.charAt(i);\n }\n\n range.forEach(function (v, i) {\n chars[v] = replacement.charAt(i[0]);\n }); // initialize undefined characters with a space\n\n if (chars.length > strLen) {\n for (var _i = strLen - 1, _len = chars.length; _i < _len; _i++) {\n if (!chars[_i]) {\n chars[_i] = defaultValue;\n }\n }\n }\n\n return chars.join('');\n}\n/**\n * Retrieve a property from an object\n * @param {Object} object\n * @param {Index} index\n * @return {*} Returns the value of the property\n * @private\n */\n\n\nfunction _getObjectProperty(object, index) {\n if (index.size().length !== 1) {\n throw new DimensionError(index.size(), 1);\n }\n\n var key = index.dimension(0);\n\n if (typeof key !== 'string') {\n throw new TypeError('String expected as index to retrieve an object property');\n }\n\n return getSafeProperty(object, key);\n}\n/**\n * Set a property on an object\n * @param {Object} object\n * @param {Index} index\n * @param {*} replacement\n * @return {*} Returns the updated object\n * @private\n */\n\n\nfunction _setObjectProperty(object, index, replacement) {\n if (index.size().length !== 1) {\n throw new DimensionError(index.size(), 1);\n }\n\n var key = index.dimension(0);\n\n if (typeof key !== 'string') {\n throw new TypeError('String expected as index to retrieve an object property');\n } // clone the object, and apply the property to the clone\n\n\n var updated = clone(object);\n setSafeProperty(updated, key, replacement);\n return updated;\n}","import { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'transpose';\nvar dependencies = ['typed', 'matrix'];\nexport var createTranspose = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n\n /**\n * Transpose a matrix. All values of the matrix are reflected over its\n * main diagonal. Only applicable to two dimensional matrices containing\n * a vector (i.e. having size `[1,n]` or `[n,1]`). One dimensional\n * vectors and scalars return the input unchanged.\n *\n * Syntax:\n *\n * math.transpose(x)\n *\n * Examples:\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.transpose(A) // returns [[1, 4], [2, 5], [3, 6]]\n *\n * See also:\n *\n * diag, inv, subset, squeeze\n *\n * @param {Array | Matrix} x Matrix to be transposed\n * @return {Array | Matrix} The transposed matrix\n */\n return typed('transpose', {\n Array: function Array(x) {\n // use dense matrix implementation\n return this(matrix(x)).valueOf();\n },\n Matrix: function Matrix(x) {\n // matrix size\n var size = x.size(); // result\n\n var c; // process dimensions\n\n switch (size.length) {\n case 1:\n // vector\n c = x.clone();\n break;\n\n case 2:\n {\n // rows and columns\n var rows = size[0];\n var columns = size[1]; // check columns\n\n if (columns === 0) {\n // throw exception\n throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + format(size) + ')');\n } // process storage format\n\n\n switch (x.storage()) {\n case 'dense':\n c = _denseTranspose(x, rows, columns);\n break;\n\n case 'sparse':\n c = _sparseTranspose(x, rows, columns);\n break;\n }\n }\n break;\n\n default:\n // multi dimensional\n throw new RangeError('Matrix must be a vector or two dimensional (size: ' + format(this._size) + ')');\n }\n\n return c;\n },\n // scalars\n any: function any(x) {\n return clone(x);\n }\n });\n\n function _denseTranspose(m, rows, columns) {\n // matrix array\n var data = m._data; // transposed matrix data\n\n var transposed = [];\n var transposedRow; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // initialize row\n transposedRow = transposed[j] = []; // loop rows\n\n for (var i = 0; i < rows; i++) {\n // set data\n transposedRow[i] = clone(data[i][j]);\n }\n } // return matrix\n\n\n return m.createDenseMatrix({\n data: transposed,\n size: [columns, rows],\n datatype: m._datatype\n });\n }\n\n function _sparseTranspose(m, rows, columns) {\n // matrix arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // result matrices\n\n var cvalues = values ? [] : undefined;\n var cindex = [];\n var cptr = []; // row counts\n\n var w = [];\n\n for (var x = 0; x < rows; x++) {\n w[x] = 0;\n } // vars\n\n\n var p, l, j; // loop values in matrix\n\n for (p = 0, l = index.length; p < l; p++) {\n // number of values in row\n w[index[p]]++;\n } // cumulative sum\n\n\n var sum = 0; // initialize cptr with the cummulative sum of row counts\n\n for (var i = 0; i < rows; i++) {\n // update cptr\n cptr.push(sum); // update sum\n\n sum += w[i]; // update w\n\n w[i] = cptr[i];\n } // update cptr\n\n\n cptr.push(sum); // loop columns\n\n for (j = 0; j < columns; j++) {\n // values & index in column\n for (var k0 = ptr[j], k1 = ptr[j + 1], k = k0; k < k1; k++) {\n // C values & index\n var q = w[index[k]]++; // C[j, i] = A[i, j]\n\n cindex[q] = j; // check we need to process values (pattern matrix)\n\n if (values) {\n cvalues[q] = clone(values[k]);\n }\n }\n } // return matrix\n\n\n return m.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [columns, rows],\n datatype: m._datatype\n });\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'ctranspose';\nvar dependencies = ['typed', 'transpose', 'conj'];\nexport var createCtranspose = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n transpose,\n conj\n } = _ref;\n\n /**\n * Transpose and complex conjugate a matrix. All values of the matrix are\n * reflected over its main diagonal and then the complex conjugate is\n * taken. This is equivalent to complex conjugation for scalars and\n * vectors.\n *\n * Syntax:\n *\n * math.ctranspose(x)\n *\n * Examples:\n *\n * const A = [[1, 2, 3], [4, 5, math.complex(6,7)]]\n * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:7}]]\n *\n * See also:\n *\n * transpose, diag, inv, subset, squeeze\n *\n * @param {Array | Matrix} x Matrix to be ctransposed\n * @return {Array | Matrix} The ctransposed matrix\n */\n return typed(name, {\n any: function any(x) {\n return conj(transpose(x));\n }\n });\n});","import { isBigNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { resize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'zeros';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n\n /**\n * Create a matrix filled with zeros. The created matrix can have one or\n * multiple dimensions.\n *\n * Syntax:\n *\n * math.zeros(m)\n * math.zeros(m, format)\n * math.zeros(m, n)\n * math.zeros(m, n, format)\n * math.zeros([m, n])\n * math.zeros([m, n], format)\n *\n * Examples:\n *\n * math.zeros(3) // returns [0, 0, 0]\n * math.zeros(3, 2) // returns [[0, 0], [0, 0], [0, 0]]\n * math.zeros(3, 'dense') // returns [0, 0, 0]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.zeros(math.size(A)) // returns [[0, 0, 0], [0, 0, 0]]\n *\n * See also:\n *\n * ones, identity, size, range\n *\n * @param {...number | Array} size The size of each dimension of the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Array | Matrix} A matrix filled with zeros\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Array' ? _zeros([]) : _zeros([], 'default');\n },\n // math.zeros(m, n, p, ..., format)\n // TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this\n '...number | BigNumber | string': function numberBigNumberString(size) {\n var last = size[size.length - 1];\n\n if (typeof last === 'string') {\n var format = size.pop();\n return _zeros(size, format);\n } else if (config.matrix === 'Array') {\n return _zeros(size);\n } else {\n return _zeros(size, 'default');\n }\n },\n Array: _zeros,\n Matrix: function Matrix(size) {\n var format = size.storage();\n return _zeros(size.valueOf(), format);\n },\n 'Array | Matrix, string': function ArrayMatrixString(size, format) {\n return _zeros(size.valueOf(), format);\n }\n });\n /**\n * Create an Array or Matrix with zeros\n * @param {Array} size\n * @param {string} [format='default']\n * @return {Array | Matrix}\n * @private\n */\n\n function _zeros(size, format) {\n var hasBigNumbers = _normalize(size);\n\n var defaultValue = hasBigNumbers ? new BigNumber(0) : 0;\n\n _validate(size);\n\n if (format) {\n // return a matrix\n var m = matrix(format);\n\n if (size.length > 0) {\n return m.resize(size, defaultValue);\n }\n\n return m;\n } else {\n // return an Array\n var arr = [];\n\n if (size.length > 0) {\n return resize(arr, size, defaultValue);\n }\n\n return arr;\n }\n } // replace BigNumbers with numbers, returns true if size contained BigNumbers\n\n\n function _normalize(size) {\n var hasBigNumbers = false;\n size.forEach(function (value, index, arr) {\n if (isBigNumber(value)) {\n hasBigNumbers = true;\n arr[index] = value.toNumber();\n }\n });\n return hasBigNumbers;\n } // validate arguments\n\n\n function _validate(size) {\n size.forEach(function (value) {\n if (typeof value !== 'number' || !isInteger(value) || value < 0) {\n throw new Error('Parameters in function zeros must be positive integers');\n }\n });\n }\n}); // TODO: zeros contains almost the same code as ones. Reuse this?","/* eslint-disable no-loss-of-precision */\nimport { deepMap } from '../../utils/collection.js';\nimport { sign } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'erf';\nvar dependencies = ['typed'];\nexport var createErf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the erf function of a value using a rational Chebyshev\n * approximations for different intervals of x.\n *\n * This is a translation of W. J. Cody's Fortran implementation from 1987\n * ( https://www.netlib.org/specfun/erf ). See the AMS publication\n * \"Rational Chebyshev Approximations for the Error Function\" by W. J. Cody\n * for an explanation of this process.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.erf(x)\n *\n * Examples:\n *\n * math.erf(0.2) // returns 0.22270258921047847\n * math.erf(-0.5) // returns -0.5204998778130465\n * math.erf(4) // returns 0.9999999845827421\n *\n * @param {number | Array | Matrix} x A real number\n * @return {number | Array | Matrix} The erf of `x`\n */\n return typed('name', {\n number: function number(x) {\n var y = Math.abs(x);\n\n if (y >= MAX_NUM) {\n return sign(x);\n }\n\n if (y <= THRESH) {\n return sign(x) * erf1(y);\n }\n\n if (y <= 4.0) {\n return sign(x) * (1 - erfc2(y));\n }\n\n return sign(x) * (1 - erfc3(y));\n },\n 'Array | Matrix': function ArrayMatrix(n) {\n return deepMap(n, this);\n } // TODO: For complex numbers, use the approximation for the Faddeeva function\n // from \"More Efficient Computation of the Complex Error Function\" (AMS)\n\n });\n /**\n * Approximates the error function erf() for x <= 0.46875 using this function:\n * n\n * erf(x) = x * sum (p_j * x^(2j)) / (q_j * x^(2j))\n * j=0\n */\n\n function erf1(y) {\n var ysq = y * y;\n var xnum = P[0][4] * ysq;\n var xden = ysq;\n var i;\n\n for (i = 0; i < 3; i += 1) {\n xnum = (xnum + P[0][i]) * ysq;\n xden = (xden + Q[0][i]) * ysq;\n }\n\n return y * (xnum + P[0][3]) / (xden + Q[0][3]);\n }\n /**\n * Approximates the complement of the error function erfc() for\n * 0.46875 <= x <= 4.0 using this function:\n * n\n * erfc(x) = e^(-x^2) * sum (p_j * x^j) / (q_j * x^j)\n * j=0\n */\n\n\n function erfc2(y) {\n var xnum = P[1][8] * y;\n var xden = y;\n var i;\n\n for (i = 0; i < 7; i += 1) {\n xnum = (xnum + P[1][i]) * y;\n xden = (xden + Q[1][i]) * y;\n }\n\n var result = (xnum + P[1][7]) / (xden + Q[1][7]);\n var ysq = parseInt(y * 16) / 16;\n var del = (y - ysq) * (y + ysq);\n return Math.exp(-ysq * ysq) * Math.exp(-del) * result;\n }\n /**\n * Approximates the complement of the error function erfc() for x > 4.0 using\n * this function:\n *\n * erfc(x) = (e^(-x^2) / x) * [ 1/sqrt(pi) +\n * n\n * 1/(x^2) * sum (p_j * x^(-2j)) / (q_j * x^(-2j)) ]\n * j=0\n */\n\n\n function erfc3(y) {\n var ysq = 1 / (y * y);\n var xnum = P[2][5] * ysq;\n var xden = ysq;\n var i;\n\n for (i = 0; i < 4; i += 1) {\n xnum = (xnum + P[2][i]) * ysq;\n xden = (xden + Q[2][i]) * ysq;\n }\n\n var result = ysq * (xnum + P[2][4]) / (xden + Q[2][4]);\n result = (SQRPI - result) / y;\n ysq = parseInt(y * 16) / 16;\n var del = (y - ysq) * (y + ysq);\n return Math.exp(-ysq * ysq) * Math.exp(-del) * result;\n }\n});\n/**\n * Upper bound for the first approximation interval, 0 <= x <= THRESH\n * @constant\n */\n\nvar THRESH = 0.46875;\n/**\n * Constant used by W. J. Cody's Fortran77 implementation to denote sqrt(pi)\n * @constant\n */\n\nvar SQRPI = 5.6418958354775628695e-1;\n/**\n * Coefficients for each term of the numerator sum (p_j) for each approximation\n * interval (see W. J. Cody's paper for more details)\n * @constant\n */\n\nvar P = [[3.16112374387056560e00, 1.13864154151050156e02, 3.77485237685302021e02, 3.20937758913846947e03, 1.85777706184603153e-1], [5.64188496988670089e-1, 8.88314979438837594e00, 6.61191906371416295e01, 2.98635138197400131e02, 8.81952221241769090e02, 1.71204761263407058e03, 2.05107837782607147e03, 1.23033935479799725e03, 2.15311535474403846e-8], [3.05326634961232344e-1, 3.60344899949804439e-1, 1.25781726111229246e-1, 1.60837851487422766e-2, 6.58749161529837803e-4, 1.63153871373020978e-2]];\n/**\n * Coefficients for each term of the denominator sum (q_j) for each approximation\n * interval (see W. J. Cody's paper for more details)\n * @constant\n */\n\nvar Q = [[2.36012909523441209e01, 2.44024637934444173e02, 1.28261652607737228e03, 2.84423683343917062e03], [1.57449261107098347e01, 1.17693950891312499e02, 5.37181101862009858e02, 1.62138957456669019e03, 3.29079923573345963e03, 4.36261909014324716e03, 3.43936767414372164e03, 1.23033935480374942e03], [2.56852019228982242e00, 1.87295284992346047e00, 5.27905102951428412e-1, 6.05183413124413191e-2, 2.33520497626869185e-3]];\n/**\n * Maximum/minimum safe numbers to input to erf() (in ES6+, this number is\n * Number.[MAX|MIN]_SAFE_INTEGER). erf() for all numbers beyond this limit will\n * return 1\n */\n\nvar MAX_NUM = Math.pow(2, 53);","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'mode';\nvar dependencies = ['typed', 'isNaN', 'isNumeric'];\nexport var createMode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNaN,\n isNumeric\n } = _ref;\n\n /**\n * Computes the mode of a set of numbers or a list with values(numbers or characters).\n * If there are more than one modes, it returns a list of those values.\n *\n * Syntax:\n *\n * math.mode(a, b, c, ...)\n * math.mode(A)\n *\n * Examples:\n *\n * math.mode(2, 1, 4, 3, 1) // returns [1]\n * math.mode([1, 2.7, 3.2, 4, 2.7]) // returns [2.7]\n * math.mode(1, 4, 6, 1, 6) // returns [1, 6]\n * math.mode('a','a','b','c') // returns [\"a\"]\n * math.mode(1, 1.5, 'abc') // returns [1, 1.5, \"abc\"]\n *\n * See also:\n *\n * median,\n * mean\n *\n * @param {... *} args A single matrix\n * @return {*} The mode of all values\n */\n return typed(name, {\n 'Array | Matrix': _mode,\n '...': function _(args) {\n return _mode(args);\n }\n });\n /**\n * Calculates the mode in an 1-dimensional array\n * @param {Array} values\n * @return {Array} mode\n * @private\n */\n\n function _mode(values) {\n values = flatten(values.valueOf());\n var num = values.length;\n\n if (num === 0) {\n throw new Error('Cannot calculate mode of an empty array');\n }\n\n var count = {};\n var mode = [];\n var max = 0;\n\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n\n if (isNumeric(value) && isNaN(value)) {\n throw new Error('Cannot calculate mode of an array containing NaN values');\n }\n\n if (!(value in count)) {\n count[value] = 0;\n }\n\n count[value]++;\n\n if (count[value] === max) {\n mode.push(value);\n } else if (count[value] > max) {\n max = count[value];\n mode = [value];\n }\n }\n\n return mode;\n }\n});","import { typeOf } from '../../../utils/is.js';\n/**\n * Improve error messages for statistics functions. Errors are typically\n * thrown in an internally used function like larger, causing the error\n * not to mention the function (like max) which is actually used by the user.\n *\n * @param {Error} err\n * @param {String} fnName\n * @param {*} [value]\n * @return {Error}\n */\n\nexport function improveErrorMessage(err, fnName, value) {\n // TODO: add information with the index (also needs transform in expression parser)\n var details;\n\n if (String(err).indexOf('Unexpected type') !== -1) {\n details = arguments.length > 2 ? ' (type: ' + typeOf(value) + ', value: ' + JSON.stringify(value) + ')' : ' (type: ' + err.data.actual + ')';\n return new TypeError('Cannot calculate ' + fnName + ', unexpected type of argument' + details);\n }\n\n if (String(err).indexOf('complex numbers') !== -1) {\n details = arguments.length > 2 ? ' (type: ' + typeOf(value) + ', value: ' + JSON.stringify(value) + ')' : '';\n return new TypeError('Cannot calculate ' + fnName + ', no ordering relation is defined for complex numbers' + details);\n }\n\n return err;\n}","import { deepForEach } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'prod';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'numeric'];\nexport var createProd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n numeric\n } = _ref;\n\n /**\n * Compute the product of a matrix or a list with values.\n * In case of a (multi dimensional) array or matrix, the sum of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.prod(a, b, c, ...)\n * math.prod(A)\n *\n * Examples:\n *\n * math.multiply(2, 3) // returns 6\n * math.prod(2, 3) // returns 6\n * math.prod(2, 3, 4) // returns 24\n * math.prod([2, 3, 4]) // returns 24\n * math.prod([[2, 5], [4, 3]]) // returns 120\n *\n * See also:\n *\n * mean, median, min, max, sum, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The product of all values\n */\n return typed(name, {\n // prod([a, b, c, d, ...])\n 'Array | Matrix': _prod,\n // prod([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(array, dim) {\n // TODO: implement prod(A, dim)\n throw new Error('prod(A, dim) is not yet supported'); // return reduce(arguments[0], arguments[1], math.prod)\n },\n // prod(a, b, c, d, ...)\n '...': function _(args) {\n return _prod(args);\n }\n });\n /**\n * Recursively calculate the product of an n-dimensional array\n * @param {Array} array\n * @return {number} prod\n * @private\n */\n\n function _prod(array) {\n var prod;\n deepForEach(array, function (value) {\n try {\n prod = prod === undefined ? value : multiplyScalar(prod, value);\n } catch (err) {\n throw improveErrorMessage(err, 'prod', value);\n }\n }); // make sure returning numeric value: parse a string into a numeric value\n\n if (typeof prod === 'string') {\n prod = numeric(prod, config.number);\n }\n\n if (prod === undefined) {\n throw new Error('Cannot calculate prod of an empty array');\n }\n\n return prod;\n }\n});","import { format as formatString } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'format';\nvar dependencies = ['typed'];\nexport var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Format a value of any type into a string.\n *\n * Syntax:\n *\n * math.format(value)\n * math.format(value, options)\n * math.format(value, precision)\n * math.format(value, callback)\n *\n * Where:\n *\n * - `value: *`\n * The value to be formatted\n * - `options: Object`\n * An object with formatting options. Available options:\n * - `notation: string`\n * Number notation. Choose from:\n * - 'fixed'\n * Always use regular number notation.\n * For example '123.40' and '14000000'\n * - 'exponential'\n * Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * - 'engineering'\n * Always use engineering notation: always have exponential notation,\n * and select the exponent to be a multiple of 3.\n * For example '123.4e+0' and '14.0e+6'\n * - 'auto' (default)\n * Regular number notation for numbers having an absolute value between\n * `lower` and `upper` bounds, and uses exponential notation elsewhere.\n * Lower bound is included, upper bound is excluded.\n * For example '123.4' and '1.4e7'.\n * - 'bin', 'oct, or 'hex'\n * Format the number using binary, octal, or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * - `wordSize: number`\n * The word size in bits to use for formatting in binary, octal, or\n * hexadecimal notation. To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option is defined the value\n * is formatted as a signed twos complement integer of the given word\n * size and the size suffix is appended to the output.\n * For example format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * - `precision: number`\n * Limit the number of digits of the formatted value.\n * For regular numbers, must be a number between 0 and 16.\n * For bignumbers, the maximum depends on the configured precision,\n * see function `config()`.\n * In case of notations 'exponential', 'engineering', and 'auto', `precision`\n * defines the total number of significant digits returned.\n * In case of notation 'fixed', `precision` defines the number of\n * significant digits after the decimal point.\n * `precision` is undefined by default.\n * - `lowerExp: number`\n * Exponent determining the lower boundary for formatting a value with\n * an exponent when `notation='auto`. Default value is `-3`.\n * - `upperExp: number`\n * Exponent determining the upper boundary for formatting a value with\n * an exponent when `notation='auto`. Default value is `5`.\n * - `fraction: string`. Available values: 'ratio' (default) or 'decimal'.\n * For example `format(fraction(1, 3))` will output '1/3' when 'ratio' is\n * configured, and will output `0.(3)` when 'decimal' is configured.\n * - `callback: function`\n * A custom formatting function, invoked for all numeric elements in `value`,\n * for example all elements of a matrix, or the real and imaginary\n * parts of a complex number. This callback can be used to override the\n * built-in numeric notation with any type of formatting. Function `callback`\n * is called with `value` as parameter and must return a string.\n *\n * When `value` is an Object:\n *\n * - When the object contains a property `format` being a function, this function\n * is invoked as `value.format(options)` and the result is returned.\n * - When the object has its own `toString` method, this method is invoked\n * and the result is returned.\n * - In other cases the function will loop over all object properties and\n * return JSON object notation like '{\"a\": 2, \"b\": 3}'.\n *\n * When value is a function:\n *\n * - When the function has a property `syntax`, it returns this\n * syntax description.\n * - In other cases, a string `'function'` is returned.\n *\n * Examples:\n *\n * math.format(6.4) // returns '6.4'\n * math.format(1240000) // returns '1.24e6'\n * math.format(1/3) // returns '0.3333333333333333'\n * math.format(1/3, 3) // returns '0.333'\n * math.format(21385, 2) // returns '21000'\n * math.format(12e8, {notation: 'fixed'}) // returns '1200000000'\n * math.format(2.3, {notation: 'fixed', precision: 4}) // returns '2.3000'\n * math.format(52.8, {notation: 'exponential'}) // returns '5.28e+1'\n * math.format(12400,{notation: 'engineering'}) // returns '12.400e+3'\n * math.format(2000, {lowerExp: -2, upperExp: 2}) // returns '2e+3'\n *\n * function formatCurrency(value) {\n * // return currency notation with two digits:\n * return '$' + value.toFixed(2)\n *\n * // you could also use math.format inside the callback:\n * // return '$' + math.format(value, {notation: 'fixed', precision: 2})\n * }\n * math.format([2.1, 3, 0.016], formatCurrency} // returns '[$2.10, $3.00, $0.02]'\n *\n * See also:\n *\n * print\n *\n * @param {*} value Value to be stringified\n * @param {Object | Function | number} [options] Formatting options\n * @return {string} The formatted value\n */\n return typed(name, {\n any: formatString,\n 'any, Object | function | number': formatString\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'bin';\nvar dependencies = ['typed', 'format'];\n/**\n * Format a number as binary.\n *\n * Syntax:\n *\n * math.bin(value)\n *\n * Examples:\n *\n * //the following outputs \"0b10\"\n * math.bin(2)\n *\n * See also:\n *\n * oct\n * hex\n *\n * @param {number} value Value to be stringified\n * @param {number} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\n\nexport var createBin = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function numberBigNumber(n) {\n return format(n, {\n notation: 'bin'\n });\n },\n 'number | BigNumber, number': function numberBigNumberNumber(n, wordSize) {\n return format(n, {\n notation: 'bin',\n wordSize: wordSize\n });\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'oct';\nvar dependencies = ['typed', 'format'];\n/**\n * Format a number as octal.\n *\n * Syntax:\n *\n * math.oct(value)\n *\n * Examples:\n *\n * //the following outputs \"0o70\"\n * math.oct(56)\n *\n * See also:\n *\n * bin\n * hex\n *\n * @param {number} value Value to be stringified\n * @param {number} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\n\nexport var createOct = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function numberBigNumber(n) {\n return format(n, {\n notation: 'oct'\n });\n },\n 'number | BigNumber, number': function numberBigNumberNumber(n, wordSize) {\n return format(n, {\n notation: 'oct',\n wordSize: wordSize\n });\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'hex';\nvar dependencies = ['typed', 'format'];\n/**\n * Format a number as hexadecimal.\n *\n * Syntax:\n *\n * math.hex(value)\n *\n * Examples:\n *\n * //the following outputs \"0xF0\"\n * math.hex(240)\n *\n * See also:\n *\n * oct\n * bin\n *\n * @param {number} value Value to be stringified\n * @param {number} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\n\nexport var createHex = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function numberBigNumber(n) {\n return format(n, {\n notation: 'hex'\n });\n },\n 'number | BigNumber, number': function numberBigNumberNumber(n, wordSize) {\n return format(n, {\n notation: 'hex',\n wordSize: wordSize\n });\n }\n });\n});","import { format } from '../../utils/string.js';\nimport { isString } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'print';\nvar dependencies = ['typed'];\nexport var createPrint = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Interpolate values into a string template.\n *\n * Syntax:\n *\n * math.print(template, values)\n * math.print(template, values, precision)\n * math.print(template, values, options)\n *\n * Example usage:\n *\n * // the following outputs: 'Lucy is 5 years old'\n * math.print('Lucy is $age years old', {age: 5})\n *\n * // the following outputs: 'The value of pi is 3.141592654'\n * math.print('The value of pi is $pi', {pi: math.pi}, 10)\n *\n * // the following outputs: 'hello Mary! The date is 2013-03-23'\n * math.print('Hello $user.name! The date is $date', {\n * user: {\n * name: 'Mary',\n * },\n * date: new Date(2013, 2, 23).toISOString().substring(0, 10)\n * })\n *\n * // the following outputs: 'My favorite fruits are apples and bananas !'\n * math.print('My favorite fruits are $0 and $1 !', [\n * 'apples',\n * 'bananas'\n * ])\n *\n * See also:\n *\n * format\n *\n * @param {string} template A string containing variable placeholders.\n * @param {Object | Array | Matrix} values An object or array containing variables\n * which will be filled in in the template.\n * @param {number | Object} [options] Formatting options,\n * or the number of digits to format numbers.\n * See function math.format for a description\n * of all options.\n * @return {string} Interpolated string\n */\n return typed(name, {\n // note: Matrix will be converted automatically to an Array\n 'string, Object | Array': _print,\n 'string, Object | Array, number | Object': _print\n });\n});\n/**\n * Interpolate values into a string template.\n * @param {string} template\n * @param {Object} values\n * @param {number | Object} [options]\n * @returns {string} Interpolated string\n * @private\n */\n\nfunction _print(template, values, options) {\n return template.replace(/\\$([\\w.]+)/g, function (original, key) {\n var keys = key.split('.');\n var value = values[keys.shift()];\n\n while (keys.length && value !== undefined) {\n var k = keys.shift();\n value = k ? value[k] : value + '.';\n }\n\n if (value !== undefined) {\n if (!isString(value)) {\n return format(value, options);\n } else {\n return value;\n }\n }\n\n return original;\n });\n}","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'to';\nvar dependencies = ['typed', 'matrix'];\nexport var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Change the unit of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.to(x, unit)\n *\n * Examples:\n *\n * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm\n * math.to(math.unit('2 inch'), math.unit(null, 'cm')) // returns Unit 5.08 cm\n * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits\n *\n * See also:\n *\n * unit\n *\n * @param {Unit | Array | Matrix} x The unit to be converted.\n * @param {Unit | Array | Matrix} unit New unit. Can be a string like \"cm\"\n * or a unit without value.\n * @return {Unit | Array | Matrix} value with changed, fixed unit.\n */\n\n return typed(name, {\n 'Unit, Unit | string': function UnitUnitString(x, unit) {\n return x.to(unit);\n },\n 'Matrix, Matrix': function MatrixMatrix(x, y) {\n // SparseMatrix does not support Units\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'Matrix, any': function MatrixAny(x, y) {\n // SparseMatrix does not support Units\n return algorithm14(x, y, this, false);\n },\n 'any, Matrix': function anyMatrix(x, y) {\n // SparseMatrix does not support Units\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isPrime';\nvar dependencies = ['typed'];\nexport var createIsPrime = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Test whether a value is prime: has no divisors other than itself and one.\n * The function supports type `number`, `bignumber`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isPrime(x)\n *\n * Examples:\n *\n * math.isPrime(3) // returns true\n * math.isPrime(-2) // returns false\n * math.isPrime(0) // returns false\n * math.isPrime(-0) // returns false\n * math.isPrime(0.5) // returns false\n * math.isPrime('2') // returns true\n * math.isPrime([2, 17, 100]) // returns [true, true, false]\n *\n * See also:\n *\n * isNumeric, isZero, isNegative, isInteger\n *\n * @param {number | BigNumber | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: function number(x) {\n if (x * 0 !== 0) {\n return false;\n }\n\n if (x <= 3) {\n return x > 1;\n }\n\n if (x % 2 === 0 || x % 3 === 0) {\n return false;\n }\n\n for (var i = 5; i * i <= x; i += 6) {\n if (x % i === 0 || x % (i + 2) === 0) {\n return false;\n }\n }\n\n return true;\n },\n BigNumber: function BigNumber(n) {\n if (n.toNumber() * 0 !== 0) {\n return false;\n }\n\n if (n.lte(3)) return n.gt(1);\n if (n.mod(2).eq(0) || n.mod(3).eq(0)) return false;\n\n if (n.lt(Math.pow(2, 32))) {\n var x = n.toNumber();\n\n for (var i = 5; i * i <= x; i += 6) {\n if (x % i === 0 || x % (i + 2) === 0) {\n return false;\n }\n }\n\n return true;\n }\n\n function modPow(base, exponent, modulus) {\n // exponent can be huge, use non-recursive variant\n var accumulator = 1;\n\n while (!exponent.eq(0)) {\n if (exponent.mod(2).eq(0)) {\n exponent = exponent.div(2);\n base = base.mul(base).mod(modulus);\n } else {\n exponent = exponent.sub(1);\n accumulator = base.mul(accumulator).mod(modulus);\n }\n }\n\n return accumulator;\n } // https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test#Deterministic_variants\n\n\n var Decimal = n.constructor.clone({\n precision: n.toFixed(0).length * 2\n });\n n = new Decimal(n);\n var r = 0;\n var d = n.sub(1);\n\n while (d.mod(2).eq(0)) {\n d = d.div(2);\n r += 1;\n }\n\n var bases = null; // https://en.wikipedia.org/wiki/Miller–Rabin_primality_test#Testing_against_small_sets_of_bases\n\n if (n.lt('3317044064679887385961981')) {\n bases = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41].filter(x => x < n);\n } else {\n var max = Math.min(n.toNumber() - 2, Math.floor(2 * Math.pow(n.toFixed(0).length * Math.log(10), 2)));\n bases = [];\n\n for (var _i = 2; _i <= max; _i += 1) {\n bases.push(max);\n }\n }\n\n for (var _i2 = 0; _i2 < bases.length; _i2 += 1) {\n var a = bases[_i2];\n var adn = modPow(n.sub(n).add(a), d, n);\n\n if (!adn.eq(1)) {\n for (var _i3 = 0, _x = adn; !_x.eq(n.sub(1)); _i3 += 1, _x = _x.mul(_x).mod(n)) {\n if (_i3 === r - 1) {\n return false;\n }\n }\n }\n }\n\n return true;\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { noBignumber, noFraction } from '../../utils/noop.js';\nvar name = 'numeric';\nvar dependencies = ['number', '?bignumber', '?fraction'];\nexport var createNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n number: _number,\n bignumber,\n fraction\n } = _ref;\n var validInputTypes = {\n string: true,\n number: true,\n BigNumber: true,\n Fraction: true\n }; // Load the conversion functions for each output type\n\n var validOutputTypes = {\n number: x => _number(x),\n BigNumber: bignumber ? x => bignumber(x) : noBignumber,\n Fraction: fraction ? x => fraction(x) : noFraction\n };\n /**\n * Convert a numeric input to a specific numeric type: number, BigNumber, or Fraction.\n *\n * Syntax:\n *\n * math.numeric(x)\n *\n * Examples:\n *\n * math.numeric('4') // returns number 4\n * math.numeric('4', 'number') // returns number 4\n * math.numeric('4', 'BigNumber') // returns BigNumber 4\n * math.numeric('4', 'Fraction') // returns Fraction 4\n * math.numeric(4, 'Fraction') // returns Fraction 4\n * math.numeric(math.fraction(2, 5), 'number') // returns number 0.4\n *\n * See also:\n *\n * number, fraction, bignumber, string, format\n *\n * @param {string | number | BigNumber | Fraction } value\n * A numeric value or a string containing a numeric value\n * @param {string} outputType\n * Desired numeric output type.\n * Available values: 'number', 'BigNumber', or 'Fraction'\n * @return {number | BigNumber | Fraction}\n * Returns an instance of the numeric in the requested type\n */\n\n return function numeric(value, outputType) {\n var inputType = typeOf(value);\n\n if (!(inputType in validInputTypes)) {\n throw new TypeError('Cannot convert ' + value + ' of type \"' + inputType + '\"; valid input types are ' + Object.keys(validInputTypes).join(', '));\n }\n\n if (!(outputType in validOutputTypes)) {\n throw new TypeError('Cannot convert ' + value + ' to type \"' + outputType + '\"; valid output types are ' + Object.keys(validOutputTypes).join(', '));\n }\n\n if (outputType === inputType) {\n return value;\n } else {\n return validOutputTypes[outputType](value);\n }\n };\n});","import { factory } from '../../utils/factory.js';\nimport { typeOf } from '../../utils/is.js';\nvar name = 'divideScalar';\nvar dependencies = ['typed', 'numeric'];\nexport var createDivideScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric\n } = _ref;\n\n /**\n * Divide two scalar values, `x / y`.\n * This function is meant for internal use: it is used by the public functions\n * `divide` and `inv`.\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | Fraction | Complex | Unit} x Numerator\n * @param {number | BigNumber | Fraction | Complex} y Denominator\n * @return {number | BigNumber | Fraction | Complex | Unit} Quotient, `x / y`\n * @private\n */\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return x / y;\n },\n 'Complex, Complex': function ComplexComplex(x, y) {\n return x.div(y);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.div(y);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.div(y);\n },\n 'Unit, number | Fraction | BigNumber': function UnitNumberFractionBigNumber(x, y) {\n var res = x.clone(); // TODO: move the divide function to Unit.js, it uses internals of Unit\n\n var one = numeric(1, typeOf(y));\n res.value = this(res.value === null ? res._normalize(one) : res.value, y);\n return res;\n },\n 'number | Fraction | BigNumber, Unit': function numberFractionBigNumberUnit(x, y) {\n var res = y.clone();\n res = res.pow(-1); // TODO: move the divide function to Unit.js, it uses internals of Unit\n\n var one = numeric(1, typeOf(x));\n res.value = this(x, y.value === null ? y._normalize(one) : y.value);\n return res;\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n return x.divide(y);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { arraySize as size } from '../../utils/array.js';\nimport { powNumber } from '../../plain/number/index.js';\nvar name = 'pow';\nvar dependencies = ['typed', 'config', 'identity', 'multiply', 'matrix', 'fraction', 'number', 'Complex'];\nexport var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n identity,\n multiply,\n matrix,\n number,\n fraction,\n Complex\n } = _ref;\n\n /**\n * Calculates the power of x to y, `x ^ y`.\n * Matrix exponentiation is supported for square matrices `x`, and positive\n * integer exponents `y`.\n *\n * For cubic roots of negative numbers, the function returns the principal\n * root by default. In order to let the function return the real root,\n * math.js can be configured with `math.config({predictable: true})`.\n * To retrieve all cubic roots of a value, use `math.cbrt(x, true)`.\n *\n * Syntax:\n *\n * math.pow(x, y)\n *\n * Examples:\n *\n * math.pow(2, 3) // returns number 8\n *\n * const a = math.complex(2, 3)\n * math.pow(a, 2) // returns Complex -5 + 12i\n *\n * const b = [[1, 2], [4, 3]]\n * math.pow(b, 2) // returns Array [[9, 8], [16, 17]]\n *\n * See also:\n *\n * multiply, sqrt, cbrt, nthRoot\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x The base\n * @param {number | BigNumber | Complex} y The exponent\n * @return {number | BigNumber | Complex | Array | Matrix} The value of `x` to the power `y`\n */\n return typed(name, {\n 'number, number': _pow,\n 'Complex, Complex': function ComplexComplex(x, y) {\n return x.pow(y);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n if (y.isInteger() || x >= 0 || config.predictable) {\n return x.pow(y);\n } else {\n return new Complex(x.toNumber(), 0).pow(y.toNumber(), 0);\n }\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n var result = x.pow(y);\n\n if (result != null) {\n return result;\n }\n\n if (config.predictable) {\n throw new Error('Result of pow is non-rational and cannot be expressed as a fraction');\n } else {\n return _pow(x.valueOf(), y.valueOf());\n }\n },\n 'Array, number': _powArray,\n 'Array, BigNumber': function ArrayBigNumber(x, y) {\n return _powArray(x, y.toNumber());\n },\n 'Matrix, number': _powMatrix,\n 'Matrix, BigNumber': function MatrixBigNumber(x, y) {\n return _powMatrix(x, y.toNumber());\n },\n 'Unit, number | BigNumber': function UnitNumberBigNumber(x, y) {\n return x.pow(y);\n }\n });\n /**\n * Calculates the power of x to y, x^y, for two numbers.\n * @param {number} x\n * @param {number} y\n * @return {number | Complex} res\n * @private\n */\n\n function _pow(x, y) {\n // Alternatively could define a 'realmode' config option or something, but\n // 'predictable' will work for now\n if (config.predictable && !isInteger(y) && x < 0) {\n // Check to see if y can be represented as a fraction\n try {\n var yFrac = fraction(y);\n var yNum = number(yFrac);\n\n if (y === yNum || Math.abs((y - yNum) / y) < 1e-14) {\n if (yFrac.d % 2 === 1) {\n return (yFrac.n % 2 === 0 ? 1 : -1) * Math.pow(-x, y);\n }\n }\n } catch (ex) {// fraction() throws an error if y is Infinity, etc.\n } // Unable to express y as a fraction, so continue on\n\n } // **for predictable mode** x^Infinity === NaN if x < -1\n // N.B. this behavour is different from `Math.pow` which gives\n // (-2)^Infinity === Infinity\n\n\n if (config.predictable && (x < -1 && y === Infinity || x > -1 && x < 0 && y === -Infinity)) {\n return NaN;\n }\n\n if (isInteger(y) || x >= 0 || config.predictable) {\n return powNumber(x, y);\n } else {\n // TODO: the following infinity checks are duplicated from powNumber. Deduplicate this somehow\n // x^Infinity === 0 if -1 < x < 1\n // A real number 0 is returned instead of complex(0)\n if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {\n return 0;\n }\n\n return new Complex(x, 0).pow(y, 0);\n }\n }\n /**\n * Calculate the power of a 2d array\n * @param {Array} x must be a 2 dimensional, square matrix\n * @param {number} y a positive, integer value\n * @returns {Array}\n * @private\n */\n\n\n function _powArray(x, y) {\n if (!isInteger(y) || y < 0) {\n throw new TypeError('For A^b, b must be a positive integer (value is ' + y + ')');\n } // verify that A is a 2 dimensional square matrix\n\n\n var s = size(x);\n\n if (s.length !== 2) {\n throw new Error('For A^b, A must be 2 dimensional (A has ' + s.length + ' dimensions)');\n }\n\n if (s[0] !== s[1]) {\n throw new Error('For A^b, A must be square (size is ' + s[0] + 'x' + s[1] + ')');\n }\n\n var res = identity(s[0]).valueOf();\n var px = x;\n\n while (y >= 1) {\n if ((y & 1) === 1) {\n res = multiply(px, res);\n }\n\n y >>= 1;\n px = multiply(px, px);\n }\n\n return res;\n }\n /**\n * Calculate the power of a 2d matrix\n * @param {Matrix} x must be a 2 dimensional, square matrix\n * @param {number} y a positive, integer value\n * @returns {Matrix}\n * @private\n */\n\n\n function _powMatrix(x, y) {\n return matrix(_powArray(x.valueOf(), y));\n }\n});","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { isInteger } from '../../utils/number.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { roundNumber } from '../../plain/number/index.js';\nvar NO_INT = 'Number of decimals in function round must be an integer';\nvar name = 'round';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];\nexport var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n BigNumber,\n DenseMatrix\n } = _ref;\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Round a value towards the nearest integer.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.round(x)\n * math.round(x, n)\n *\n * Examples:\n *\n * math.round(3.22) // returns number 3\n * math.round(3.82) // returns number 4\n * math.round(-4.2) // returns number -4\n * math.round(-4.7) // returns number -5\n * math.round(3.22, 1) // returns number 3.2\n * math.round(3.88, 1) // returns number 3.9\n * math.round(-4.21, 1) // returns number -4.2\n * math.round(-4.71, 1) // returns number -4.7\n * math.round(math.pi, 3) // returns number 3.142\n * math.round(123.45678, 2) // returns number 123.46\n *\n * const c = math.complex(3.2, -2.7)\n * math.round(c) // returns Complex 3 - 3i\n *\n * math.round([3.2, 3.8, -4.7]) // returns Array [3, 4, -5]\n *\n * See also:\n *\n * ceil, fix, floor\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n\n return typed(name, _objectSpread(_objectSpread({}, roundNumberSignatures), {}, {\n Complex: function Complex(x) {\n return x.round();\n },\n 'Complex, number': function ComplexNumber(x, n) {\n if (n % 1) {\n throw new TypeError(NO_INT);\n }\n\n return x.round(n);\n },\n 'Complex, BigNumber': function ComplexBigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n\n var _n = n.toNumber();\n\n return x.round(_n);\n },\n 'number, BigNumber': function numberBigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n\n return new BigNumber(x).toDecimalPlaces(n.toNumber());\n },\n BigNumber: function BigNumber(x) {\n return x.toDecimalPlaces(0);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n\n return x.toDecimalPlaces(n.toNumber());\n },\n Fraction: function Fraction(x) {\n return x.round();\n },\n 'Fraction, number': function FractionNumber(x, n) {\n if (n % 1) {\n throw new TypeError(NO_INT);\n }\n\n return x.round(n);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since round(0) = 0\n return deepMap(x, this, true);\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | Complex | BigNumber, SparseMatrix': function numberComplexBigNumberSparseMatrix(x, y) {\n // check scalar is zero\n if (equalScalar(x, 0)) {\n // do not execute algorithm, result will be a zero matrix\n return zeros(y.size(), y.storage());\n }\n\n return algorithm12(y, x, this, true);\n },\n 'number | Complex | BigNumber, DenseMatrix': function numberComplexBigNumberDenseMatrix(x, y) {\n // check scalar is zero\n if (equalScalar(x, 0)) {\n // do not execute algorithm, result will be a zero matrix\n return zeros(y.size(), y.storage());\n }\n\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n }));\n});\nvar roundNumberSignatures = {\n number: roundNumber,\n 'number, number': function numberNumber(x, n) {\n if (!isInteger(n)) {\n throw new TypeError(NO_INT);\n }\n\n if (n < 0 || n > 15) {\n throw new Error('Number of decimals in function round must be in the range of 0-15');\n }\n\n return roundNumber(x, n);\n }\n};\nexport var createRoundNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, roundNumberSignatures);\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { logNumber } from '../../plain/number/index.js';\nvar name = 'log';\nvar dependencies = ['config', 'typed', 'divideScalar', 'Complex'];\nexport var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n Complex\n } = _ref;\n\n /**\n * Calculate the logarithm of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log(x)\n * math.log(x, base)\n *\n * Examples:\n *\n * math.log(3.5) // returns 1.252762968495368\n * math.exp(math.log(2.4)) // returns 2.4\n *\n * math.pow(10, 4) // returns 10000\n * math.log(10000, 10) // returns 4\n * math.log(10000) / math.log(10) // returns 4\n *\n * math.log(1024, 2) // returns 10\n * math.pow(2, 10) // returns 1024\n *\n * See also:\n *\n * exp, log2, log10, log1p\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @param {number | BigNumber | Complex} [base=e]\n * Optional base for the logarithm. If not provided, the natural\n * logarithm of `x` is calculated.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return logNumber(x);\n } else {\n // negative value -> complex value computation\n return new Complex(x, 0).log();\n }\n },\n Complex: function Complex(x) {\n return x.log();\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.ln();\n } else {\n // downgrade to number, return Complex valued result\n return new Complex(x.toNumber(), 0).log();\n }\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n },\n 'any, any': function anyAny(x, base) {\n // calculate logarithm for a specified base, log(x, base)\n return divideScalar(this(x), this(base));\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log1p as _log1p } from '../../utils/number.js';\nvar name = 'log1p';\nvar dependencies = ['typed', 'config', 'divideScalar', 'log', 'Complex'];\nexport var createLog1p = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n log,\n Complex\n } = _ref;\n\n /**\n * Calculate the logarithm of a `value+1`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log1p(x)\n * math.log1p(x, base)\n *\n * Examples:\n *\n * math.log1p(2.5) // returns 1.252762968495368\n * math.exp(math.log1p(1.4)) // returns 2.4\n *\n * math.pow(10, 4) // returns 10000\n * math.log1p(9999, 10) // returns 4\n * math.log1p(9999) / math.log(10) // returns 4\n *\n * See also:\n *\n * exp, log, log2, log10\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm of `x+1`.\n * @param {number | BigNumber | Complex} [base=e]\n * Optional base for the logarithm. If not provided, the natural\n * logarithm of `x+1` is calculated.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the logarithm of `x+1`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 || config.predictable) {\n return _log1p(x);\n } else {\n // negative value -> complex value computation\n return _log1pComplex(new Complex(x, 0));\n }\n },\n Complex: _log1pComplex,\n BigNumber: function BigNumber(x) {\n var y = x.plus(1);\n\n if (!y.isNegative() || config.predictable) {\n return y.ln();\n } else {\n // downgrade to number, return Complex valued result\n return _log1pComplex(new Complex(x.toNumber(), 0));\n }\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n },\n 'any, any': function anyAny(x, base) {\n // calculate logarithm for a specified base, log1p(x, base)\n return divideScalar(this(x), log(base));\n }\n });\n /**\n * Calculate the natural logarithm of a complex number + 1\n * @param {Complex} x\n * @returns {Complex}\n * @private\n */\n\n function _log1pComplex(x) {\n var xRe1p = x.re + 1;\n return new Complex(Math.log(Math.sqrt(xRe1p * xRe1p + x.im * x.im)), Math.atan2(x.im, xRe1p));\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'nthRoots';\nvar dependencies = ['config', 'typed', 'divideScalar', 'Complex'];\nexport var createNthRoots = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n Complex\n } = _ref;\n\n /**\n * Each function here returns a real multiple of i as a Complex value.\n * @param {number} val\n * @return {Complex} val, i*val, -val or -i*val for index 0, 1, 2, 3\n */\n // This is used to fix float artifacts for zero-valued components.\n var _calculateExactResult = [function realPos(val) {\n return new Complex(val, 0);\n }, function imagPos(val) {\n return new Complex(0, val);\n }, function realNeg(val) {\n return new Complex(-val, 0);\n }, function imagNeg(val) {\n return new Complex(0, -val);\n }];\n /**\n * Calculate the nth root of a Complex Number a using De Movire's Theorem.\n * @param {Complex} a\n * @param {number} root\n * @return {Array} array of n Complex Roots\n */\n\n function _nthComplexRoots(a, root) {\n if (root < 0) throw new Error('Root must be greater than zero');\n if (root === 0) throw new Error('Root must be non-zero');\n if (root % 1 !== 0) throw new Error('Root must be an integer');\n if (a === 0 || a.abs() === 0) return [new Complex(0, 0)];\n var aIsNumeric = typeof a === 'number';\n var offset; // determine the offset (argument of a)/(pi/2)\n\n if (aIsNumeric || a.re === 0 || a.im === 0) {\n if (aIsNumeric) {\n offset = 2 * +(a < 0); // numeric value on the real axis\n } else if (a.im === 0) {\n offset = 2 * +(a.re < 0); // complex value on the real axis\n } else {\n offset = 2 * +(a.im < 0) + 1; // complex value on the imaginary axis\n }\n }\n\n var arg = a.arg();\n var abs = a.abs();\n var roots = [];\n var r = Math.pow(abs, 1 / root);\n\n for (var k = 0; k < root; k++) {\n var halfPiFactor = (offset + 4 * k) / root;\n /**\n * If (offset + 4*k)/root is an integral multiple of pi/2\n * then we can produce a more exact result.\n */\n\n if (halfPiFactor === Math.round(halfPiFactor)) {\n roots.push(_calculateExactResult[halfPiFactor % 4](r));\n continue;\n }\n\n roots.push(new Complex({\n r: r,\n phi: (arg + 2 * Math.PI * k) / root\n }));\n }\n\n return roots;\n }\n /**\n * Calculate the nth roots of a value.\n * An nth root of a positive real number A,\n * is a positive real solution of the equation \"x^root = A\".\n * This function returns an array of complex values.\n *\n * Syntax:\n *\n * math.nthRoots(x)\n * math.nthRoots(x, root)\n *\n * Examples:\n *\n * math.nthRoots(1)\n * // returns [\n * // {re: 1, im: 0},\n * // {re: -1, im: 0}\n * // ]\n * nthRoots(1, 3)\n * // returns [\n * // { re: 1, im: 0 },\n * // { re: -0.4999999999999998, im: 0.8660254037844387 },\n * // { re: -0.5000000000000004, im: -0.8660254037844385 }\n * ]\n *\n * See also:\n *\n * nthRoot, pow, sqrt\n *\n * @param {number | BigNumber | Fraction | Complex} x Number to be rounded\n * @return {number | BigNumber | Fraction | Complex} Rounded value\n */\n\n\n return typed(name, {\n Complex: function Complex(x) {\n return _nthComplexRoots(x, 2);\n },\n 'Complex, number': _nthComplexRoots\n });\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'dotPow';\nvar dependencies = ['typed', 'equalScalar', 'matrix', 'pow', 'DenseMatrix'];\nexport var createDotPow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar,\n matrix,\n pow,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Calculates the power of x to y element wise.\n *\n * Syntax:\n *\n * math.dotPow(x, y)\n *\n * Examples:\n *\n * math.dotPow(2, 3) // returns number 8\n *\n * const a = [[1, 2], [4, 3]]\n * math.dotPow(a, 2) // returns Array [[1, 4], [16, 9]]\n * math.pow(a, 2) // returns Array [[9, 8], [16, 17]]\n *\n * See also:\n *\n * pow, sqrt, multiply\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x The base\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} y The exponent\n * @return {number | BigNumber | Complex | Unit | Array | Matrix} The value of `x` to the power `y`\n */\n\n return typed(name, {\n 'any, any': pow,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, pow, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, pow, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, pow, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, pow);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'dotDivide';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'divideScalar', 'DenseMatrix'];\nexport var createDotDivide = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n divideScalar,\n DenseMatrix\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Divide two matrices element wise. The function accepts both matrices and\n * scalar values.\n *\n * Syntax:\n *\n * math.dotDivide(x, y)\n *\n * Examples:\n *\n * math.dotDivide(2, 4) // returns 0.5\n *\n * a = [[9, 5], [6, 1]]\n * b = [[3, 2], [5, 2]]\n *\n * math.dotDivide(a, b) // returns [[3, 2.5], [1.2, 0.5]]\n * math.divide(a, b) // returns [[1.75, 0.75], [-1.75, 2.25]]\n *\n * See also:\n *\n * divide, multiply, dotMultiply\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Numerator\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Denominator\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Quotient, `x ./ y`\n */\n\n return typed(name, {\n 'any, any': divideScalar,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, divideScalar, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, divideScalar, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, divideScalar, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, divideScalar);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, divideScalar, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, divideScalar, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, divideScalar, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, divideScalar, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, divideScalar, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, divideScalar, true).valueOf();\n }\n });\n});","import { isArray, isMatrix, isDenseMatrix, isSparseMatrix } from '../../../../utils/is.js';\nimport { arraySize } from '../../../../utils/array.js';\nimport { format } from '../../../../utils/string.js';\nexport function createSolveValidation(_ref) {\n var {\n DenseMatrix\n } = _ref;\n\n /**\n * Validates matrix and column vector b for backward/forward substitution algorithms.\n *\n * @param {Matrix} m An N x N matrix\n * @param {Array | Matrix} b A column vector\n * @param {Boolean} copy Return a copy of vector b\n *\n * @return {DenseMatrix} Dense column vector b\n */\n return function solveValidation(m, b, copy) {\n var mSize = m.size();\n\n if (mSize.length !== 2) {\n throw new RangeError('Matrix must be two dimensional (size: ' + format(mSize) + ')');\n }\n\n var rows = mSize[0];\n var columns = mSize[1];\n\n if (rows !== columns) {\n throw new RangeError('Matrix must be square (size: ' + format(mSize) + ')');\n }\n\n var data = [];\n\n if (isMatrix(b)) {\n var bSize = b.size();\n var bdata = b._data; // 1-dim vector\n\n if (bSize.length === 1) {\n if (bSize[0] !== rows) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n\n for (var i = 0; i < rows; i++) {\n data[i] = [bdata[i]];\n }\n\n return new DenseMatrix({\n data: data,\n size: [rows, 1],\n datatype: b._datatype\n });\n } // 2-dim column\n\n\n if (bSize.length === 2) {\n if (bSize[0] !== rows || bSize[1] !== 1) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n\n if (isDenseMatrix(b)) {\n if (copy) {\n data = [];\n\n for (var _i = 0; _i < rows; _i++) {\n data[_i] = [bdata[_i][0]];\n }\n\n return new DenseMatrix({\n data: data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n\n return b;\n }\n\n if (isSparseMatrix(b)) {\n for (var _i2 = 0; _i2 < rows; _i2++) {\n data[_i2] = [0];\n }\n\n var values = b._values;\n var index = b._index;\n var ptr = b._ptr;\n\n for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) {\n var _i3 = index[k];\n data[_i3][0] = values[k];\n }\n\n return new DenseMatrix({\n data: data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n }\n\n throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');\n }\n\n if (isArray(b)) {\n var bsize = arraySize(b);\n\n if (bsize.length === 1) {\n if (bsize[0] !== rows) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n\n for (var _i4 = 0; _i4 < rows; _i4++) {\n data[_i4] = [b[_i4]];\n }\n\n return new DenseMatrix({\n data: data,\n size: [rows, 1]\n });\n }\n\n if (bsize.length === 2) {\n if (bsize[0] !== rows || bsize[1] !== 1) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n\n for (var _i5 = 0; _i5 < rows; _i5++) {\n data[_i5] = [b[_i5][0]];\n }\n\n return new DenseMatrix({\n data: data,\n size: [rows, 1]\n });\n }\n\n throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');\n }\n };\n}","import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'lsolve';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];\nexport var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtract,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n /**\n * Finds one solution of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix. Throws an error if there's no solution.\n *\n * `L * x = b`\n *\n * Syntax:\n *\n * math.lsolve(L, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = lsolve(a, b) // [[-5.5], [20]]\n *\n * See also:\n *\n * lsolveAll, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} L A N x N matrix or array (L)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix | Array} A column vector with the linear system solution (x)\n */\n\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {\n return _sparseForwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {\n return _denseForwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {\n var m = matrix(a);\n\n var r = _denseForwardSubstitution(m, b);\n\n return r.valueOf();\n }\n });\n\n function _denseForwardSubstitution(m, b) {\n // validate matrix and vector, return copy of column vector b\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1]; // result\n\n var x = [];\n var mdata = m._data; // loop columns\n\n for (var j = 0; j < columns; j++) {\n var bj = bdata[j][0] || 0;\n var xj = void 0;\n\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n var vjj = mdata[j][j];\n\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n\n xj = divideScalar(bj, vjj); // loop rows\n\n for (var i = j + 1; i < rows; i++) {\n bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];\n }\n } else {\n // degenerate row, we can choose any value\n xj = 0;\n }\n\n x[j] = [xj];\n }\n\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n\n function _sparseForwardSubstitution(m, b) {\n // validate matrix and vector, return copy of column vector b\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // result\n\n var x = []; // loop columns\n\n for (var j = 0; j < columns; j++) {\n var bj = bdata[j][0] || 0;\n\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n var vjj = 0; // matrix values & indices (column j)\n\n var jValues = [];\n var jIndices = []; // first and last index in the column\n\n var firstIndex = ptr[j];\n var lastIndex = ptr[j + 1]; // values in column, find value at [j, j]\n\n for (var k = firstIndex; k < lastIndex; k++) {\n var i = index[k]; // check row (rows are not sorted!)\n\n if (i === j) {\n vjj = values[k];\n } else if (i > j) {\n // store lower triangular\n jValues.push(values[k]);\n jIndices.push(i);\n }\n } // at this point we must have a value in vjj\n\n\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n\n var xj = divideScalar(bj, vjj);\n\n for (var _k = 0, l = jIndices.length; _k < l; _k++) {\n var _i = jIndices[_k];\n bdata[_i] = [subtract(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];\n }\n\n x[j] = [xj];\n } else {\n // degenerate row, we can choose any value\n x[j] = [0];\n }\n }\n\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'usolve';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];\nexport var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtract,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n /**\n * Finds one solution of a linear equation system by backward substitution. Matrix must be an upper triangular matrix. Throws an error if there's no solution.\n *\n * `U * x = b`\n *\n * Syntax:\n *\n * math.usolve(U, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = usolve(a, b) // [[8], [9]]\n *\n * See also:\n *\n * usolveAll, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} U A N x N matrix or array (U)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix | Array} A column vector with the linear system solution (x)\n */\n\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {\n return _sparseBackwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {\n return _denseBackwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {\n var m = matrix(a);\n\n var r = _denseBackwardSubstitution(m, b);\n\n return r.valueOf();\n }\n });\n\n function _denseBackwardSubstitution(m, b) {\n // make b into a column vector\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1]; // result\n\n var x = [];\n var mdata = m._data; // loop columns backwards\n\n for (var j = columns - 1; j >= 0; j--) {\n // b[j]\n var bj = bdata[j][0] || 0; // x[j]\n\n var xj = void 0;\n\n if (!equalScalar(bj, 0)) {\n // value at [j, j]\n var vjj = mdata[j][j];\n\n if (equalScalar(vjj, 0)) {\n // system cannot be solved\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n\n xj = divideScalar(bj, vjj); // loop rows\n\n for (var i = j - 1; i >= 0; i--) {\n // update copy of b\n bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];\n }\n } else {\n // zero value at j\n xj = 0;\n } // update x\n\n\n x[j] = [xj];\n }\n\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n\n function _sparseBackwardSubstitution(m, b) {\n // make b into a column vector\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // result\n\n var x = []; // loop columns backwards\n\n for (var j = columns - 1; j >= 0; j--) {\n var bj = bdata[j][0] || 0;\n\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n var vjj = 0; // upper triangular matrix values & index (column j)\n\n var jValues = [];\n var jIndices = []; // first & last indeces in column\n\n var firstIndex = ptr[j];\n var lastIndex = ptr[j + 1]; // values in column, find value at [j, j], loop backwards\n\n for (var k = lastIndex - 1; k >= firstIndex; k--) {\n var i = index[k]; // check row (rows are not sorted!)\n\n if (i === j) {\n vjj = values[k];\n } else if (i < j) {\n // store upper triangular\n jValues.push(values[k]);\n jIndices.push(i);\n }\n } // at this point we must have a value in vjj\n\n\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n\n var xj = divideScalar(bj, vjj);\n\n for (var _k = 0, _lastIndex = jIndices.length; _k < _lastIndex; _k++) {\n var _i = jIndices[_k];\n bdata[_i] = [subtract(bdata[_i][0], multiplyScalar(xj, jValues[_k]))];\n }\n\n x[j] = [xj];\n } else {\n // degenerate row, we can choose any value\n x[j] = [0];\n }\n }\n\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'lsolveAll';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];\nexport var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtract,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n /**\n * Finds all solutions of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix.\n *\n * `L * x = b`\n *\n * Syntax:\n *\n * math.lsolveAll(L, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = lsolveAll(a, b) // [ [[-5.5], [20]] ]\n *\n * See also:\n *\n * lsolve, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} L A N x N matrix or array (L)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system\n */\n\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {\n return _sparseForwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {\n return _denseForwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {\n var m = matrix(a);\n\n var R = _denseForwardSubstitution(m, b);\n\n return R.map(r => r.valueOf());\n }\n });\n\n function _denseForwardSubstitution(m, b_) {\n // the algorithm is derived from\n // https://www.overleaf.com/read/csvgqdxggyjv\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var M = m._data;\n var rows = m._size[0];\n var columns = m._size[1]; // loop columns\n\n for (var i = 0; i < columns; i++) {\n var L = B.length; // loop right-hand sides\n\n for (var k = 0; k < L; k++) {\n var b = B[k];\n\n if (!equalScalar(M[i][i], 0)) {\n // non-singular row\n b[i] = divideScalar(b[i], M[i][i]);\n\n for (var j = i + 1; j < columns; j++) {\n // b[j] -= b[i] * M[j,i]\n b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n var bNew = [...b];\n bNew[i] = 1;\n\n for (var _j = i + 1; _j < columns; _j++) {\n bNew[_j] = subtract(bNew[_j], M[_j][i]);\n }\n\n B.push(bNew);\n }\n }\n }\n\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n\n function _sparseForwardSubstitution(m, b_) {\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // loop columns\n\n for (var i = 0; i < columns; i++) {\n var L = B.length; // loop right-hand sides\n\n for (var k = 0; k < L; k++) {\n var b = B[k]; // values & indices (column i)\n\n var iValues = [];\n var iIndices = []; // first & last indeces in column\n\n var firstIndex = ptr[i];\n var lastIndex = ptr[i + 1]; // find the value at [i, i]\n\n var Mii = 0;\n\n for (var j = firstIndex; j < lastIndex; j++) {\n var J = index[j]; // check row\n\n if (J === i) {\n Mii = values[j];\n } else if (J > i) {\n // store lower triangular\n iValues.push(values[j]);\n iIndices.push(J);\n }\n }\n\n if (!equalScalar(Mii, 0)) {\n // non-singular row\n b[i] = divideScalar(b[i], Mii);\n\n for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {\n var _J = iIndices[_j2];\n b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n var bNew = [...b];\n bNew[i] = 1;\n\n for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {\n var _J2 = iIndices[_j3];\n bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);\n }\n\n B.push(bNew);\n }\n }\n }\n\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'usolveAll';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];\nexport var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtract,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n /**\n * Finds all solutions of a linear equation system by backward substitution. Matrix must be an upper triangular matrix.\n *\n * `U * x = b`\n *\n * Syntax:\n *\n * math.usolveAll(U, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = usolveAll(a, b) // [ [[8], [9]] ]\n *\n * See also:\n *\n * usolve, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} U A N x N matrix or array (U)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system\n */\n\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {\n return _sparseBackwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {\n return _denseBackwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {\n var m = matrix(a);\n\n var R = _denseBackwardSubstitution(m, b);\n\n return R.map(r => r.valueOf());\n }\n });\n\n function _denseBackwardSubstitution(m, b_) {\n // the algorithm is derived from\n // https://www.overleaf.com/read/csvgqdxggyjv\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var M = m._data;\n var rows = m._size[0];\n var columns = m._size[1]; // loop columns backwards\n\n for (var i = columns - 1; i >= 0; i--) {\n var L = B.length; // loop right-hand sides\n\n for (var k = 0; k < L; k++) {\n var b = B[k];\n\n if (!equalScalar(M[i][i], 0)) {\n // non-singular row\n b[i] = divideScalar(b[i], M[i][i]);\n\n for (var j = i - 1; j >= 0; j--) {\n // b[j] -= b[i] * M[j,i]\n b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n var bNew = [...b];\n bNew[i] = 1;\n\n for (var _j = i - 1; _j >= 0; _j--) {\n bNew[_j] = subtract(bNew[_j], M[_j][i]);\n }\n\n B.push(bNew);\n }\n }\n }\n\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n\n function _sparseBackwardSubstitution(m, b_) {\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // loop columns backwards\n\n for (var i = columns - 1; i >= 0; i--) {\n var L = B.length; // loop right-hand sides\n\n for (var k = 0; k < L; k++) {\n var b = B[k]; // values & indices (column i)\n\n var iValues = [];\n var iIndices = []; // first & last indeces in column\n\n var firstIndex = ptr[i];\n var lastIndex = ptr[i + 1]; // find the value at [i, i]\n\n var Mii = 0;\n\n for (var j = lastIndex - 1; j >= firstIndex; j--) {\n var J = index[j]; // check row\n\n if (J === i) {\n Mii = values[j];\n } else if (J < i) {\n // store upper triangular\n iValues.push(values[j]);\n iIndices.push(J);\n }\n }\n\n if (!equalScalar(Mii, 0)) {\n // non-singular row\n b[i] = divideScalar(b[i], Mii); // loop upper triangular\n\n for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {\n var _J = iIndices[_j2];\n b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n var bNew = [...b];\n bNew[i] = 1; // loop upper triangular\n\n for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {\n var _J2 = iIndices[_j3];\n bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);\n }\n\n B.push(bNew);\n }\n }\n }\n\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'algorithm08';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createAlgorithm08 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0\n * └ 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function algorithm08(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype; // sparse matrix arrays\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype; // validate dimensions\n\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n } // check rows & columns\n\n\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n } // sparse matrix cannot be a Pattern matrix\n\n\n if (!avalues || !bvalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrices');\n } // rows & columns\n\n\n var rows = asize[0];\n var columns = asize[1]; // datatype\n\n var dt; // equal signature to use\n\n var eq = equalScalar; // zero value\n\n var zero = 0; // callback signature to use\n\n var cf = callback; // process data types\n\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt; // find signature that matches (dt, dt)\n\n eq = typed.find(equalScalar, [dt, dt]); // convert 0 to the same datatype\n\n zero = typed.convert(0, dt); // callback\n\n cf = typed.find(callback, [dt, dt]);\n } // result arrays\n\n\n var cvalues = [];\n var cindex = [];\n var cptr = []; // workspace\n\n var x = []; // marks indicating we have a value in x for a given column\n\n var w = []; // vars\n\n var k, k0, k1, i; // loop columns\n\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length; // columns mark\n\n var mark = j + 1; // loop values in a\n\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k]; // mark workspace\n\n w[i] = mark; // set value\n\n x[i] = avalues[k]; // add index\n\n cindex.push(i);\n } // loop values in b\n\n\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k]; // check value exists in workspace\n\n if (w[i] === mark) {\n // evaluate callback\n x[i] = cf(x[i], bvalues[k]);\n }\n } // initialize first index in j\n\n\n k = cptr[j]; // loop index in j\n\n while (k < cindex.length) {\n // row\n i = cindex[k]; // value @ i\n\n var v = x[i]; // check for zero value\n\n if (!eq(v, zero)) {\n // push value\n cvalues.push(v); // increment pointer\n\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n } // update cptr\n\n\n cptr[columns] = cindex.length; // return sparse matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});","import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm08 } from '../../type/matrix/utils/algorithm08.js';\nimport { factory } from '../../utils/factory.js';\nimport { leftShiftNumber } from '../../plain/number/index.js';\nimport { leftShiftBigNumber } from '../../utils/bignumber/bitwise.js';\nvar name = 'leftShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createLeftShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm08 = createAlgorithm08({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Bitwise left logical shift of a value x by y number of bits, `x << y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.leftShift(x, y)\n *\n * Examples:\n *\n * math.leftShift(1, 2) // returns number 4\n *\n * math.leftShift([1, 2, 3], 4) // returns Array [16, 32, 64]\n *\n * See also:\n *\n * leftShift, bitNot, bitOr, bitXor, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | Array | Matrix} x Value to be shifted\n * @param {number | BigNumber} y Amount of shifts\n * @return {number | BigNumber | Array | Matrix} `x` shifted left `y` times\n */\n\n return typed(name, {\n 'number, number': leftShiftNumber,\n 'BigNumber, BigNumber': leftShiftBigNumber,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm08(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm01(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n\n return algorithm10(y, x, this, true);\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return this(matrix(x), y).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y)).valueOf();\n }\n });\n});","import { rightArithShiftBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm08 } from '../../type/matrix/utils/algorithm08.js';\nimport { factory } from '../../utils/factory.js';\nimport { rightArithShiftNumber } from '../../plain/number/index.js';\nvar name = 'rightArithShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createRightArithShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm08 = createAlgorithm08({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Bitwise right arithmetic shift of a value x by y number of bits, `x >> y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.rightArithShift(x, y)\n *\n * Examples:\n *\n * math.rightArithShift(4, 2) // returns number 1\n *\n * math.rightArithShift([16, -32, 64], 4) // returns Array [1, -2, 3]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, bitXor, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | Array | Matrix} x Value to be shifted\n * @param {number | BigNumber} y Amount of shifts\n * @return {number | BigNumber | Array | Matrix} `x` sign-filled shifted right `y` times\n */\n\n return typed(name, {\n 'number, number': rightArithShiftNumber,\n 'BigNumber, BigNumber': rightArithShiftBigNumber,\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm08(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm01(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n\n return algorithm10(y, x, this, true);\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return this(matrix(x), y).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y)).valueOf();\n }\n });\n});","import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm08 } from '../../type/matrix/utils/algorithm08.js';\nimport { factory } from '../../utils/factory.js';\nimport { rightLogShiftNumber } from '../../plain/number/index.js';\nvar name = 'rightLogShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createRightLogShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm08 = createAlgorithm08({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Bitwise right logical shift of value x by y number of bits, `x >>> y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.rightLogShift(x, y)\n *\n * Examples:\n *\n * math.rightLogShift(4, 2) // returns number 1\n *\n * math.rightLogShift([16, -32, 64], 4) // returns Array [1, 2, 3]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, bitXor, leftShift, rightLogShift\n *\n * @param {number | Array | Matrix} x Value to be shifted\n * @param {number} y Amount of shifts\n * @return {number | Array | Matrix} `x` zero-filled shifted right `y` times\n */\n\n return typed(name, {\n 'number, number': rightLogShiftNumber,\n // 'BigNumber, BigNumber': ..., // TODO: implement BigNumber support for rightLogShift\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm08(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm01(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n\n return algorithm10(y, x, this, true);\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n // use matrix implementation\n return this(matrix(x), y).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y)).valueOf();\n }\n });\n});","import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm06 } from '../../type/matrix/utils/algorithm06.js';\nimport { factory } from '../../utils/factory.js';\nimport { andNumber } from '../../plain/number/index.js';\nvar name = 'and';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'not'];\nexport var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm06 = createAlgorithm06({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Logical `and`. Test whether two values are both defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.and(x, y)\n *\n * Examples:\n *\n * math.and(2, 4) // returns true\n *\n * a = [2, 0, 0]\n * b = [3, 7, 0]\n * c = 0\n *\n * math.and(a, b) // returns [true, false, false]\n * math.and(a, c) // returns [false, false, false]\n *\n * See also:\n *\n * not, or, xor\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when both inputs are defined with a nonzero/nonempty value.\n */\n\n return typed(name, {\n 'number, number': andNumber,\n 'Complex, Complex': function ComplexComplex(x, y) {\n return (x.re !== 0 || x.im !== 0) && (y.re !== 0 || y.im !== 0);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n return this(x.value || 0, y.value || 0);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm06(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm02(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n // check scalar\n if (not(y)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n // check scalar\n if (not(y)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n // check scalar\n if (not(x)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n\n return algorithm11(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n // check scalar\n if (not(x)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return this(matrix(x), y).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y)).valueOf();\n }\n });\n});","import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm05 } from '../../type/matrix/utils/algorithm05.js';\nvar name = 'compare';\nvar dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];\nexport var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n equalScalar,\n matrix,\n BigNumber,\n Fraction,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm05 = createAlgorithm05({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.\n *\n * x and y are considered equal when the relative difference between x and y\n * is smaller than the configured epsilon. The function cannot be used to\n * compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.compare(x, y)\n *\n * Examples:\n *\n * math.compare(6, 1) // returns 1\n * math.compare(2, 3) // returns -1\n * math.compare(7, 7) // returns 0\n * math.compare('10', '2') // returns 1\n * math.compare('1000', '1e3') // returns 0\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('40 mm')\n * math.compare(a, b) // returns 1\n *\n * math.compare(2, [1, 2, 3]) // returns [1, 0, -1]\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, larger, largerEq, compareNatural, compareText\n *\n * @param {number | BigNumber | Fraction | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | Fraction | Unit | string | Array | Matrix} y Second value to compare\n * @return {number | BigNumber | Fraction | Array | Matrix} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n\n return typed(name, {\n 'boolean, boolean': function booleanBoolean(x, y) {\n return x === y ? 0 : x > y ? 1 : -1;\n },\n 'number, number': function numberNumber(x, y) {\n return nearlyEqual(x, y, config.epsilon) ? 0 : x > y ? 1 : -1;\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return bigNearlyEqual(x, y, config.epsilon) ? new BigNumber(0) : new BigNumber(x.cmp(y));\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return new Fraction(x.compare(y));\n },\n 'Complex, Complex': function ComplexComplex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n\n return this(x.value, y.value);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm05(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});\nexport var createCompareNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return nearlyEqual(x, y, config.epsilon) ? 0 : x > y ? 1 : -1;\n }\n });\n});","import naturalSort from 'javascript-natural-sort';\nimport { isDenseMatrix, isSparseMatrix, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compareNatural';\nvar dependencies = ['typed', 'compare'];\nexport var createCompareNatural = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compare\n } = _ref;\n var compareBooleans = compare.signatures['boolean,boolean'];\n /**\n * Compare two values of any type in a deterministic, natural way.\n *\n * For numeric values, the function works the same as `math.compare`.\n * For types of values that can't be compared mathematically,\n * the function compares in a natural way.\n *\n * For numeric values, x and y are considered equal when the relative\n * difference between x and y is smaller than the configured epsilon.\n * The function cannot be used to compare values smaller than\n * approximately 2.22e-16.\n *\n * For Complex numbers, first the real parts are compared. If equal,\n * the imaginary parts are compared.\n *\n * Strings are compared with a natural sorting algorithm, which\n * orders strings in a \"logic\" way following some heuristics.\n * This differs from the function `compare`, which converts the string\n * into a numeric value and compares that. The function `compareText`\n * on the other hand compares text lexically.\n *\n * Arrays and Matrices are compared value by value until there is an\n * unequal pair of values encountered. Objects are compared by sorted\n * keys until the keys or their values are unequal.\n *\n * Syntax:\n *\n * math.compareNatural(x, y)\n *\n * Examples:\n *\n * math.compareNatural(6, 1) // returns 1\n * math.compareNatural(2, 3) // returns -1\n * math.compareNatural(7, 7) // returns 0\n *\n * math.compareNatural('10', '2') // returns 1\n * math.compareText('10', '2') // returns -1\n * math.compare('10', '2') // returns 1\n *\n * math.compareNatural('Answer: 10', 'Answer: 2') // returns 1\n * math.compareText('Answer: 10', 'Answer: 2') // returns -1\n * math.compare('Answer: 10', 'Answer: 2')\n * // Error: Cannot convert \"Answer: 10\" to a number\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('40 mm')\n * math.compareNatural(a, b) // returns 1\n *\n * const c = math.complex('2 + 3i')\n * const d = math.complex('2 + 4i')\n * math.compareNatural(c, d) // returns -1\n *\n * math.compareNatural([1, 2, 4], [1, 2, 3]) // returns 1\n * math.compareNatural([1, 2, 3], [1, 2]) // returns 1\n * math.compareNatural([1, 5], [1, 2, 3]) // returns 1\n * math.compareNatural([1, 2], [1, 2]) // returns 0\n *\n * math.compareNatural({a: 2}, {a: 4}) // returns -1\n *\n * See also:\n *\n * compare, compareText\n *\n * @param {*} x First value to compare\n * @param {*} y Second value to compare\n * @return {number} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n\n return typed(name, {\n 'any, any': function anyAny(x, y) {\n var typeX = typeOf(x);\n var typeY = typeOf(y);\n var c; // numeric types\n\n if ((typeX === 'number' || typeX === 'BigNumber' || typeX === 'Fraction') && (typeY === 'number' || typeY === 'BigNumber' || typeY === 'Fraction')) {\n c = compare(x, y);\n\n if (c.toString() !== '0') {\n // c can be number, BigNumber, or Fraction\n return c > 0 ? 1 : -1; // return a number\n } else {\n return naturalSort(typeX, typeY);\n }\n } // matrix types\n\n\n if (typeX === 'Array' || typeX === 'Matrix' || typeY === 'Array' || typeY === 'Matrix') {\n c = compareMatricesAndArrays(this, x, y);\n\n if (c !== 0) {\n return c;\n } else {\n return naturalSort(typeX, typeY);\n }\n } // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'\n\n\n if (typeX !== typeY) {\n return naturalSort(typeX, typeY);\n }\n\n if (typeX === 'Complex') {\n return compareComplexNumbers(x, y);\n }\n\n if (typeX === 'Unit') {\n if (x.equalBase(y)) {\n return this(x.value, y.value);\n } // compare by units\n\n\n return compareArrays(this, x.formatUnits(), y.formatUnits());\n }\n\n if (typeX === 'boolean') {\n return compareBooleans(x, y);\n }\n\n if (typeX === 'string') {\n return naturalSort(x, y);\n }\n\n if (typeX === 'Object') {\n return compareObjects(this, x, y);\n }\n\n if (typeX === 'null') {\n return 0;\n }\n\n if (typeX === 'undefined') {\n return 0;\n } // this should not occur...\n\n\n throw new TypeError('Unsupported type of value \"' + typeX + '\"');\n }\n });\n /**\n * Compare mixed matrix/array types, by converting to same-shaped array.\n * This comparator is non-deterministic regarding input types.\n * @param {Array | SparseMatrix | DenseMatrix | *} x\n * @param {Array | SparseMatrix | DenseMatrix | *} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n\n function compareMatricesAndArrays(compareNatural, x, y) {\n if (isSparseMatrix(x) && isSparseMatrix(y)) {\n return compareArrays(compareNatural, x.toJSON().values, y.toJSON().values);\n }\n\n if (isSparseMatrix(x)) {\n // note: convert to array is expensive\n return compareMatricesAndArrays(compareNatural, x.toArray(), y);\n }\n\n if (isSparseMatrix(y)) {\n // note: convert to array is expensive\n return compareMatricesAndArrays(compareNatural, x, y.toArray());\n } // convert DenseArray into Array\n\n\n if (isDenseMatrix(x)) {\n return compareMatricesAndArrays(compareNatural, x.toJSON().data, y);\n }\n\n if (isDenseMatrix(y)) {\n return compareMatricesAndArrays(compareNatural, x, y.toJSON().data);\n } // convert scalars to array\n\n\n if (!Array.isArray(x)) {\n return compareMatricesAndArrays(compareNatural, [x], y);\n }\n\n if (!Array.isArray(y)) {\n return compareMatricesAndArrays(compareNatural, x, [y]);\n }\n\n return compareArrays(compareNatural, x, y);\n }\n /**\n * Compare two Arrays\n *\n * - First, compares value by value\n * - Next, if all corresponding values are equal,\n * look at the length: longest array will be considered largest\n *\n * @param {Array} x\n * @param {Array} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n\n\n function compareArrays(compareNatural, x, y) {\n // compare each value\n for (var i = 0, ii = Math.min(x.length, y.length); i < ii; i++) {\n var v = compareNatural(x[i], y[i]);\n\n if (v !== 0) {\n return v;\n }\n } // compare the size of the arrays\n\n\n if (x.length > y.length) {\n return 1;\n }\n\n if (x.length < y.length) {\n return -1;\n } // both Arrays have equal size and content\n\n\n return 0;\n }\n /**\n * Compare two objects\n *\n * - First, compare sorted property names\n * - Next, compare the property values\n *\n * @param {Object} x\n * @param {Object} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n\n\n function compareObjects(compareNatural, x, y) {\n var keysX = Object.keys(x);\n var keysY = Object.keys(y); // compare keys\n\n keysX.sort(naturalSort);\n keysY.sort(naturalSort);\n var c = compareArrays(compareNatural, keysX, keysY);\n\n if (c !== 0) {\n return c;\n } // compare values\n\n\n for (var i = 0; i < keysX.length; i++) {\n var v = compareNatural(x[keysX[i]], y[keysY[i]]);\n\n if (v !== 0) {\n return v;\n }\n }\n\n return 0;\n }\n});\n/**\n * Compare two complex numbers, `x` and `y`:\n *\n * - First, compare the real values of `x` and `y`\n * - If equal, compare the imaginary values of `x` and `y`\n *\n * @params {Complex} x\n * @params {Complex} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n\nfunction compareComplexNumbers(x, y) {\n if (x.re > y.re) {\n return 1;\n }\n\n if (x.re < y.re) {\n return -1;\n }\n\n if (x.im > y.im) {\n return 1;\n }\n\n if (x.im < y.im) {\n return -1;\n }\n\n return 0;\n}","import { compareText as _compareText } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nvar name = 'compareText';\nvar dependencies = ['typed', 'matrix'];\nexport var createCompareText = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Compare two strings lexically. Comparison is case sensitive.\n * Returns 1 when x > y, -1 when x < y, and 0 when x == y.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.compareText(x, y)\n *\n * Examples:\n *\n * math.compareText('B', 'A') // returns 1\n * math.compareText('2', '10') // returns 1\n * math.compare('2', '10') // returns -1\n * math.compareNatural('2', '10') // returns -1\n *\n * math.compareText('B', ['A', 'B', 'C']) // returns [1, 0, -1]\n *\n * See also:\n *\n * equal, equalText, compare, compareNatural\n *\n * @param {string | Array | DenseMatrix} x First string to compare\n * @param {string | Array | DenseMatrix} y Second string to compare\n * @return {number | Array | DenseMatrix} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n\n return typed(name, {\n 'any, any': _compareText,\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, _compareText);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, _compareText, false);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, _compareText, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, _compareText, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, _compareText, true).valueOf();\n }\n });\n});\nexport var createCompareTextNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, {\n 'any, any': _compareText\n });\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'equal';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];\nexport var createEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Test whether two values are equal.\n *\n * The function tests whether the relative difference between x and y is\n * smaller than the configured epsilon. The function cannot be used to\n * compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * In case of complex numbers, x.re must equal y.re, and x.im must equal y.im.\n *\n * Values `null` and `undefined` are compared strictly, thus `null` is only\n * equal to `null` and nothing else, and `undefined` is only equal to\n * `undefined` and nothing else. Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.equal(x, y)\n *\n * Examples:\n *\n * math.equal(2 + 2, 3) // returns false\n * math.equal(2 + 2, 4) // returns true\n *\n * const a = math.unit('50 cm')\n * const b = math.unit('5 m')\n * math.equal(a, b) // returns true\n *\n * const c = [2, 5, 1]\n * const d = [2, 7, 1]\n *\n * math.equal(c, d) // returns [true, false, true]\n * math.deepEqual(c, d) // returns false\n *\n * math.equal(\"1000\", \"1e3\") // returns true\n * math.equal(0, null) // returns false\n *\n * See also:\n *\n * unequal, smaller, smallerEq, larger, largerEq, compare, deepEqual, equalText\n *\n * @param {number | BigNumber | boolean | Complex | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | boolean | Complex | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the compared values are equal, else returns false\n */\n\n return typed(name, {\n 'any, any': function anyAny(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y === null;\n }\n\n if (y === null) {\n return x === null;\n }\n\n if (x === undefined) {\n return y === undefined;\n }\n\n if (y === undefined) {\n return x === undefined;\n }\n\n return equalScalar(x, y);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, equalScalar);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, equalScalar, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, equalScalar, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, equalScalar);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, equalScalar, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, equalScalar, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, equalScalar, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, equalScalar, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, equalScalar, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, equalScalar, true).valueOf();\n }\n });\n});\nexport var createEqualNumber = factory(name, ['typed', 'equalScalar'], _ref2 => {\n var {\n typed,\n equalScalar\n } = _ref2;\n return typed(name, {\n 'any, any': function anyAny(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y === null;\n }\n\n if (y === null) {\n return x === null;\n }\n\n if (x === undefined) {\n return y === undefined;\n }\n\n if (y === undefined) {\n return x === undefined;\n }\n\n return equalScalar(x, y);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'equalText';\nvar dependencies = ['typed', 'compareText', 'isZero'];\nexport var createEqualText = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compareText,\n isZero\n } = _ref;\n\n /**\n * Check equality of two strings. Comparison is case sensitive.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.equalText(x, y)\n *\n * Examples:\n *\n * math.equalText('Hello', 'Hello') // returns true\n * math.equalText('a', 'A') // returns false\n * math.equal('2e3', '2000') // returns true\n * math.equalText('2e3', '2000') // returns false\n *\n * math.equalText('B', ['A', 'B', 'C']) // returns [false, true, false]\n *\n * See also:\n *\n * equal, compareText, compare, compareNatural\n *\n * @param {string | Array | DenseMatrix} x First string to compare\n * @param {string | Array | DenseMatrix} y Second string to compare\n * @return {number | Array | DenseMatrix} Returns true if the values are equal, and false if not.\n */\n return typed(name, {\n 'any, any': function anyAny(x, y) {\n return isZero(compareText(x, y));\n }\n });\n});","import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nvar name = 'smaller';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];\nexport var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Test whether value x is smaller than y.\n *\n * The function returns true when x is smaller than y and the relative\n * difference between x and y is smaller than the configured epsilon. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.smaller(x, y)\n *\n * Examples:\n *\n * math.smaller(2, 3) // returns true\n * math.smaller(5, 2 * 2) // returns false\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('2 inch')\n * math.smaller(a, b) // returns true\n *\n * See also:\n *\n * equal, unequal, smallerEq, smaller, smallerEq, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false\n */\n\n return typed(name, {\n 'boolean, boolean': function booleanBoolean(x, y) {\n return x < y;\n },\n 'number, number': function numberNumber(x, y) {\n return x < y && !nearlyEqual(x, y, config.epsilon);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.lt(y) && !bigNearlyEqual(x, y, config.epsilon);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.compare(y) === -1;\n },\n 'Complex, Complex': function ComplexComplex(x, y) {\n throw new TypeError('No ordering relation is defined for complex numbers');\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n\n return this(x.value, y.value);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});\nexport var createSmallerNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return x < y && !nearlyEqual(x, y, config.epsilon);\n }\n });\n});","import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nvar name = 'smallerEq';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];\nexport var createSmallerEq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Test whether value x is smaller or equal to y.\n *\n * The function returns true when x is smaller than y or the relative\n * difference between x and y is smaller than the configured epsilon. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.smallerEq(x, y)\n *\n * Examples:\n *\n * math.smaller(1 + 2, 3) // returns false\n * math.smallerEq(1 + 2, 3) // returns true\n *\n * See also:\n *\n * equal, unequal, smaller, larger, largerEq, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false\n */\n\n return typed(name, {\n 'boolean, boolean': function booleanBoolean(x, y) {\n return x <= y;\n },\n 'number, number': function numberNumber(x, y) {\n return x <= y || nearlyEqual(x, y, config.epsilon);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.lte(y) || bigNearlyEqual(x, y, config.epsilon);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.compare(y) !== 1;\n },\n 'Complex, Complex': function ComplexComplex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n\n return this(x.value, y.value);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});\nexport var createSmallerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return x <= y || nearlyEqual(x, y, config.epsilon);\n }\n });\n});","import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nvar name = 'larger';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];\nexport var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Test whether value x is larger than y.\n *\n * The function returns true when x is larger than y and the relative\n * difference between x and y is larger than the configured epsilon. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.larger(x, y)\n *\n * Examples:\n *\n * math.larger(2, 3) // returns false\n * math.larger(5, 2 + 2) // returns true\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('2 inch')\n * math.larger(a, b) // returns false\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, largerEq, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is larger than y, else returns false\n */\n\n return typed(name, {\n 'boolean, boolean': function booleanBoolean(x, y) {\n return x > y;\n },\n 'number, number': function numberNumber(x, y) {\n return x > y && !nearlyEqual(x, y, config.epsilon);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.gt(y) && !bigNearlyEqual(x, y, config.epsilon);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.compare(y) === 1;\n },\n 'Complex, Complex': function ComplexComplex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n\n return this(x.value, y.value);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});\nexport var createLargerNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return x > y && !nearlyEqual(x, y, config.epsilon);\n }\n });\n});","import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nvar name = 'largerEq';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];\nexport var createLargerEq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Test whether value x is larger or equal to y.\n *\n * The function returns true when x is larger than y or the relative\n * difference between x and y is smaller than the configured epsilon. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.largerEq(x, y)\n *\n * Examples:\n *\n * math.larger(2, 1 + 1) // returns false\n * math.largerEq(2, 1 + 1) // returns true\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, larger, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is larger or equal to y, else returns false\n */\n\n return typed(name, {\n 'boolean, boolean': function booleanBoolean(x, y) {\n return x >= y;\n },\n 'number, number': function numberNumber(x, y) {\n return x >= y || nearlyEqual(x, y, config.epsilon);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {\n return x.gte(y) || bigNearlyEqual(x, y, config.epsilon);\n },\n 'Fraction, Fraction': function FractionFraction(x, y) {\n return x.compare(y) !== -1;\n },\n 'Complex, Complex': function ComplexComplex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n },\n 'Unit, Unit': function UnitUnit(x, y) {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n\n return this(x.value, y.value);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, this);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, this, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, this, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, this, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});\nexport var createLargerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function numberNumber(x, y) {\n return x >= y || nearlyEqual(x, y, config.epsilon);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'deepEqual';\nvar dependencies = ['typed', 'equal'];\nexport var createDeepEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equal\n } = _ref;\n\n /**\n * Test element wise whether two matrices are equal.\n * The function accepts both matrices and scalar values.\n *\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.deepEqual(x, y)\n *\n * Examples:\n *\n * math.deepEqual(2, 4) // returns false\n *\n * a = [2, 5, 1]\n * b = [2, 7, 1]\n *\n * math.deepEqual(a, b) // returns false\n * math.equal(a, b) // returns [true, false, true]\n *\n * See also:\n *\n * equal, unequal\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First matrix to compare\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second matrix to compare\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix}\n * Returns true when the input matrices have the same size and each of their elements is equal.\n */\n return typed(name, {\n 'any, any': function anyAny(x, y) {\n return _deepEqual(x.valueOf(), y.valueOf());\n }\n });\n /**\n * Test whether two arrays have the same size and all elements are equal\n * @param {Array | *} x\n * @param {Array | *} y\n * @return {boolean} Returns true if both arrays are deep equal\n */\n\n function _deepEqual(x, y) {\n if (Array.isArray(x)) {\n if (Array.isArray(y)) {\n var len = x.length;\n\n if (len !== y.length) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (!_deepEqual(x[i], y[i])) {\n return false;\n }\n }\n\n return true;\n } else {\n return false;\n }\n } else {\n if (Array.isArray(y)) {\n return false;\n } else {\n return equal(x, y);\n }\n }\n }\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nvar name = 'unequal';\nvar dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix'];\nexport var createUnequal = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n equalScalar,\n matrix,\n DenseMatrix\n } = _ref;\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm07 = createAlgorithm07({\n typed,\n DenseMatrix\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Test whether two values are unequal.\n *\n * The function tests whether the relative difference between x and y is\n * larger than the configured epsilon. The function cannot be used to compare\n * values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * In case of complex numbers, x.re must unequal y.re, or x.im must unequal y.im.\n * Strings are compared by their numerical value.\n *\n * Values `null` and `undefined` are compared strictly, thus `null` is unequal\n * with everything except `null`, and `undefined` is unequal with everything\n * except `undefined`.\n *\n * Syntax:\n *\n * math.unequal(x, y)\n *\n * Examples:\n *\n * math.unequal(2 + 2, 3) // returns true\n * math.unequal(2 + 2, 4) // returns false\n *\n * const a = math.unit('50 cm')\n * const b = math.unit('5 m')\n * math.unequal(a, b) // returns false\n *\n * const c = [2, 5, 1]\n * const d = [2, 7, 1]\n *\n * math.unequal(c, d) // returns [false, true, false]\n * math.deepEqual(c, d) // returns false\n *\n * math.unequal(0, null) // returns true\n * See also:\n *\n * equal, deepEqual, smaller, smallerEq, larger, largerEq, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit | string | Array | Matrix | undefined} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit | string | Array | Matrix | undefined} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the compared values are unequal, else returns false\n */\n\n return typed('unequal', {\n 'any, any': function anyAny(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y !== null;\n }\n\n if (y === null) {\n return x !== null;\n }\n\n if (x === undefined) {\n return y !== undefined;\n }\n\n if (y === undefined) {\n return x !== undefined;\n }\n\n return _unequal(x, y);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm07(x, y, _unequal);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm03(y, x, _unequal, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, _unequal, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, _unequal);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm12(x, y, _unequal, false);\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, _unequal, false);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm12(y, x, _unequal, true);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, _unequal, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, _unequal, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, _unequal, true).valueOf();\n }\n });\n\n function _unequal(x, y) {\n return !equalScalar(x, y);\n }\n});\nexport var createUnequalNumber = factory(name, ['typed', 'equalScalar'], _ref2 => {\n var {\n typed,\n equalScalar\n } = _ref2;\n return typed(name, {\n 'any, any': function anyAny(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y !== null;\n }\n\n if (y === null) {\n return x !== null;\n }\n\n if (x === undefined) {\n return y !== undefined;\n }\n\n if (y === undefined) {\n return x !== undefined;\n }\n\n return !equalScalar(x, y);\n }\n });\n});","import { isMatrix } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'partitionSelect';\nvar dependencies = ['typed', 'isNumeric', 'isNaN', 'compare'];\nexport var createPartitionSelect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNumeric,\n isNaN,\n compare\n } = _ref;\n var asc = compare;\n\n var desc = (a, b) => -compare(a, b);\n /**\n * Partition-based selection of an array or 1D matrix.\n * Will find the kth smallest value, and mutates the input array.\n * Uses Quickselect.\n *\n * Syntax:\n *\n * math.partitionSelect(x, k)\n * math.partitionSelect(x, k, compare)\n *\n * Examples:\n *\n * math.partitionSelect([5, 10, 1], 2) // returns 10\n * math.partitionSelect(['C', 'B', 'A', 'D'], 1) // returns 'B'\n *\n * function sortByLength (a, b) {\n * return a.length - b.length\n * }\n * math.partitionSelect(['Langdon', 'Tom', 'Sara'], 2, sortByLength) // returns 'Langdon'\n *\n * See also:\n *\n * sort\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to sort\n * @param {Number} k The kth smallest value to be retrieved zero-based index\n * @param {Function | 'asc' | 'desc'} [compare='asc']\n * An optional comparator function. The function is called as\n * `compare(a, b)`, and must return 1 when a > b, -1 when a < b,\n * and 0 when a == b.\n * @return {*} Returns the kth lowest value.\n */\n\n\n return typed(name, {\n 'Array | Matrix, number': function ArrayMatrixNumber(x, k) {\n return _partitionSelect(x, k, asc);\n },\n 'Array | Matrix, number, string': function ArrayMatrixNumberString(x, k, compare) {\n if (compare === 'asc') {\n return _partitionSelect(x, k, asc);\n } else if (compare === 'desc') {\n return _partitionSelect(x, k, desc);\n } else {\n throw new Error('Compare string must be \"asc\" or \"desc\"');\n }\n },\n 'Array | Matrix, number, function': _partitionSelect\n });\n\n function _partitionSelect(x, k, compare) {\n if (!isInteger(k) || k < 0) {\n throw new Error('k must be a non-negative integer');\n }\n\n if (isMatrix(x)) {\n var size = x.size();\n\n if (size.length > 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n\n return quickSelect(x.valueOf(), k, compare);\n }\n\n if (Array.isArray(x)) {\n return quickSelect(x, k, compare);\n }\n }\n /**\n * Quickselect algorithm.\n * Code adapted from:\n * https://blog.teamleadnet.com/2012/07/quick-select-algorithm-find-kth-element.html\n *\n * @param {Array} arr\n * @param {Number} k\n * @param {Function} compare\n * @private\n */\n\n\n function quickSelect(arr, k, compare) {\n if (k >= arr.length) {\n throw new Error('k out of bounds');\n } // check for NaN values since these can cause an infinite while loop\n\n\n for (var i = 0; i < arr.length; i++) {\n if (isNumeric(arr[i]) && isNaN(arr[i])) {\n return arr[i]; // return NaN\n }\n }\n\n var from = 0;\n var to = arr.length - 1; // if from == to we reached the kth element\n\n while (from < to) {\n var r = from;\n var w = to;\n var pivot = arr[Math.floor(Math.random() * (to - from + 1)) + from]; // stop if the reader and writer meets\n\n while (r < w) {\n // arr[r] >= pivot\n if (compare(arr[r], pivot) >= 0) {\n // put the large values at the end\n var tmp = arr[w];\n arr[w] = arr[r];\n arr[r] = tmp;\n --w;\n } else {\n // the value is smaller than the pivot, skip\n ++r;\n }\n } // if we stepped up (r++) we need to step one down (arr[r] > pivot)\n\n\n if (compare(arr[r], pivot) > 0) {\n --r;\n } // the r pointer is on the end of the first k elements\n\n\n if (k <= r) {\n to = r;\n } else {\n from = r + 1;\n }\n }\n\n return arr[k];\n }\n});","import { arraySize as size } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'sort';\nvar dependencies = ['typed', 'matrix', 'compare', 'compareNatural'];\nexport var createSort = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n compare,\n compareNatural\n } = _ref;\n var compareAsc = compare;\n\n var compareDesc = (a, b) => -compare(a, b);\n /**\n * Sort the items in a matrix.\n *\n * Syntax:\n *\n * math.sort(x)\n * math.sort(x, compare)\n *\n * Examples:\n *\n * math.sort([5, 10, 1]) // returns [1, 5, 10]\n * math.sort(['C', 'B', 'A', 'D'], math.compareNatural)\n * // returns ['A', 'B', 'C', 'D']\n *\n * function sortByLength (a, b) {\n * return a.length - b.length\n * }\n * math.sort(['Langdon', 'Tom', 'Sara'], sortByLength)\n * // returns ['Tom', 'Sara', 'Langdon']\n *\n * See also:\n *\n * filter, forEach, map, compare, compareNatural\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to sort\n * @param {Function | 'asc' | 'desc' | 'natural'} [compare='asc']\n * An optional _comparator function or name. The function is called as\n * `compare(a, b)`, and must return 1 when a > b, -1 when a < b,\n * and 0 when a == b.\n * @return {Matrix | Array} Returns the sorted matrix.\n */\n\n\n return typed(name, {\n Array: function Array(x) {\n _arrayIsVector(x);\n\n return x.sort(compareAsc);\n },\n Matrix: function Matrix(x) {\n _matrixIsVector(x);\n\n return matrix(x.toArray().sort(compareAsc), x.storage());\n },\n 'Array, function': function ArrayFunction(x, _comparator) {\n _arrayIsVector(x);\n\n return x.sort(_comparator);\n },\n 'Matrix, function': function MatrixFunction(x, _comparator) {\n _matrixIsVector(x);\n\n return matrix(x.toArray().sort(_comparator), x.storage());\n },\n 'Array, string': function ArrayString(x, order) {\n _arrayIsVector(x);\n\n return x.sort(_comparator(order));\n },\n 'Matrix, string': function MatrixString(x, order) {\n _matrixIsVector(x);\n\n return matrix(x.toArray().sort(_comparator(order)), x.storage());\n }\n });\n /**\n * Get the comparator for given order ('asc', 'desc', 'natural')\n * @param {'asc' | 'desc' | 'natural'} order\n * @return {Function} Returns a _comparator function\n */\n\n function _comparator(order) {\n if (order === 'asc') {\n return compareAsc;\n } else if (order === 'desc') {\n return compareDesc;\n } else if (order === 'natural') {\n return compareNatural;\n } else {\n throw new Error('String \"asc\", \"desc\", or \"natural\" expected');\n }\n }\n /**\n * Validate whether an array is one dimensional\n * Throws an error when this is not the case\n * @param {Array} array\n * @private\n */\n\n\n function _arrayIsVector(array) {\n if (size(array).length !== 1) {\n throw new Error('One dimensional array expected');\n }\n }\n /**\n * Validate whether a matrix is one dimensional\n * Throws an error when this is not the case\n * @param {Matrix} matrix\n * @private\n */\n\n\n function _matrixIsVector(matrix) {\n if (matrix.size().length !== 1) {\n throw new Error('One dimensional matrix expected');\n }\n }\n});","import { deepForEach, reduce, containsCollections } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMax = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n\n /**\n * Compute the maximum value of a matrix or a list with values.\n * In case of a multi dimensional array, the maximum of the flattened array\n * will be calculated. When `dim` is provided, the maximum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.max(a, b, c, ...)\n * math.max(A)\n * math.max(A, dim)\n *\n * Examples:\n *\n * math.max(2, 1, 4, 3) // returns 4\n * math.max([2, 1, 4, 3]) // returns 4\n *\n * // maximum over a specified dimension (zero-based)\n * math.max([[2, 5], [4, 3], [1, 7]], 0) // returns [4, 7]\n * math.max([[2, 5], [4, 3]], [1, 7], 1) // returns [5, 4, 7]\n *\n * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1\n * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5\n *\n * See also:\n *\n * mean, median, min, prod, std, sum, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The maximum value\n */\n return typed(name, {\n // max([a, b, c, d, ...])\n 'Array | Matrix': _max,\n // max([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(array, dim) {\n return reduce(array, dim.valueOf(), _largest);\n },\n // max(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function max');\n }\n\n return _max(args);\n }\n });\n /**\n * Return the largest of two values\n * @param {*} x\n * @param {*} y\n * @returns {*} Returns x when x is largest, or y when y is largest\n * @private\n */\n\n function _largest(x, y) {\n try {\n return larger(x, y) ? x : y;\n } catch (err) {\n throw improveErrorMessage(err, 'max', y);\n }\n }\n /**\n * Recursively calculate the maximum value in an n-dimensional array\n * @param {Array} array\n * @return {number} max\n * @private\n */\n\n\n function _max(array) {\n var res;\n deepForEach(array, function (value) {\n try {\n if (isNaN(value) && typeof value === 'number') {\n res = NaN;\n } else if (res === undefined || larger(value, res)) {\n res = value;\n }\n } catch (err) {\n throw improveErrorMessage(err, 'max', value);\n }\n });\n\n if (res === undefined) {\n throw new Error('Cannot calculate max of an empty array');\n } // make sure returning numeric value: parse a string into a numeric value\n\n\n if (typeof res === 'string') {\n res = numeric(res, config.number);\n }\n\n return res;\n }\n});","import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n\n /**\n * Compute the minimum value of a matrix or a list of values.\n * In case of a multi dimensional array, the minimum of the flattened array\n * will be calculated. When `dim` is provided, the minimum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.min(a, b, c, ...)\n * math.min(A)\n * math.min(A, dim)\n *\n * Examples:\n *\n * math.min(2, 1, 4, 3) // returns 1\n * math.min([2, 1, 4, 3]) // returns 1\n *\n * // minimum over a specified dimension (zero-based)\n * math.min([[2, 5], [4, 3], [1, 7]], 0) // returns [1, 3]\n * math.min([[2, 5], [4, 3], [1, 7]], 1) // returns [2, 3, 1]\n *\n * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1\n * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5\n *\n * See also:\n *\n * mean, median, max, prod, std, sum, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The minimum value\n */\n return typed(name, {\n // min([a, b, c, d, ...])\n 'Array | Matrix': _min,\n // min([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(array, dim) {\n return reduce(array, dim.valueOf(), _smallest);\n },\n // min(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function min');\n }\n\n return _min(args);\n }\n });\n /**\n * Return the smallest of two values\n * @param {*} x\n * @param {*} y\n * @returns {*} Returns x when x is smallest, or y when y is smallest\n * @private\n */\n\n function _smallest(x, y) {\n try {\n return smaller(x, y) ? x : y;\n } catch (err) {\n throw improveErrorMessage(err, 'min', y);\n }\n }\n /**\n * Recursively calculate the minimum value in an n-dimensional array\n * @param {Array} array\n * @return {number} min\n * @private\n */\n\n\n function _min(array) {\n var min;\n deepForEach(array, function (value) {\n try {\n if (isNaN(value) && typeof value === 'number') {\n min = NaN;\n } else if (min === undefined || smaller(value, min)) {\n min = value;\n }\n } catch (err) {\n throw improveErrorMessage(err, 'min', value);\n }\n });\n\n if (min === undefined) {\n throw new Error('Cannot calculate min of an empty array');\n } // make sure returning numeric value: parse a string into a numeric value\n\n\n if (typeof min === 'string') {\n min = numeric(min, config.number);\n }\n\n return min;\n }\n});","import { isArray, isMatrix, isString, typeOf } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ImmutableDenseMatrix';\nvar dependencies = ['smaller', 'DenseMatrix'];\nexport var createImmutableDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n smaller,\n DenseMatrix\n } = _ref;\n\n function ImmutableDenseMatrix(data, datatype) {\n if (!(this instanceof ImmutableDenseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n\n if (isMatrix(data) || isArray(data)) {\n // use DenseMatrix implementation\n var matrix = new DenseMatrix(data, datatype); // internal structures\n\n this._data = matrix._data;\n this._size = matrix._size;\n this._datatype = matrix._datatype;\n this._min = null;\n this._max = null;\n } else if (data && isArray(data.data) && isArray(data.size)) {\n // initialize fields from JSON representation\n this._data = data.data;\n this._size = data.size;\n this._datatype = data.datatype;\n this._min = typeof data.min !== 'undefined' ? data.min : null;\n this._max = typeof data.max !== 'undefined' ? data.max : null;\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._data = [];\n this._size = [0];\n this._datatype = datatype;\n this._min = null;\n this._max = null;\n }\n }\n\n ImmutableDenseMatrix.prototype = new DenseMatrix();\n /**\n * Attach type information\n */\n\n ImmutableDenseMatrix.prototype.type = 'ImmutableDenseMatrix';\n ImmutableDenseMatrix.prototype.isImmutableDenseMatrix = true;\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @param {Index} index\n * @param {Array | ImmutableDenseMatrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n\n ImmutableDenseMatrix.prototype.subset = function (index) {\n switch (arguments.length) {\n case 1:\n {\n // use base implementation\n var m = DenseMatrix.prototype.subset.call(this, index); // check result is a matrix\n\n if (isMatrix(m)) {\n // return immutable matrix\n return new ImmutableDenseMatrix({\n data: m._data,\n size: m._size,\n datatype: m._datatype\n });\n }\n\n return m;\n }\n // intentional fall through\n\n case 2:\n case 3:\n throw new Error('Cannot invoke set subset on an Immutable Matrix instance');\n\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n /**\n * Replace a single element in the matrix.\n * @param {Number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {ImmutableDenseMatrix} self\n */\n\n\n ImmutableDenseMatrix.prototype.set = function () {\n throw new Error('Cannot invoke set on an Immutable Matrix instance');\n };\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @param {Number[]} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n\n\n ImmutableDenseMatrix.prototype.resize = function () {\n throw new Error('Cannot invoke resize on an Immutable Matrix instance');\n };\n /**\n * Disallows reshaping in favor of immutability.\n *\n * @throws {Error} Operation not allowed\n */\n\n\n ImmutableDenseMatrix.prototype.reshape = function () {\n throw new Error('Cannot invoke reshape on an Immutable Matrix instance');\n };\n /**\n * Create a clone of the matrix\n * @return {ImmutableDenseMatrix} clone\n */\n\n\n ImmutableDenseMatrix.prototype.clone = function () {\n return new ImmutableDenseMatrix({\n data: clone(this._data),\n size: clone(this._size),\n datatype: this._datatype\n });\n };\n /**\n * Get a JSON representation of the matrix\n * @returns {Object}\n */\n\n\n ImmutableDenseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'ImmutableDenseMatrix',\n data: this._data,\n size: this._size,\n datatype: this._datatype\n };\n };\n /**\n * Generate a matrix from a JSON object\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ImmutableDenseMatrix\", data: [], size: []}`,\n * where mathjs is optional\n * @returns {ImmutableDenseMatrix}\n */\n\n\n ImmutableDenseMatrix.fromJSON = function (json) {\n return new ImmutableDenseMatrix(json);\n };\n /**\n * Swap rows i and j in Matrix.\n *\n * @param {Number} i Matrix row index 1\n * @param {Number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n\n\n ImmutableDenseMatrix.prototype.swapRows = function () {\n throw new Error('Cannot invoke swapRows on an Immutable Matrix instance');\n };\n /**\n * Calculate the minimum value in the set\n * @return {Number | undefined} min\n */\n\n\n ImmutableDenseMatrix.prototype.min = function () {\n // check min has been calculated before\n if (this._min === null) {\n // minimum\n var m = null; // compute min\n\n this.forEach(function (v) {\n if (m === null || smaller(v, m)) {\n m = v;\n }\n });\n this._min = m !== null ? m : undefined;\n }\n\n return this._min;\n };\n /**\n * Calculate the maximum value in the set\n * @return {Number | undefined} max\n */\n\n\n ImmutableDenseMatrix.prototype.max = function () {\n // check max has been calculated before\n if (this._max === null) {\n // maximum\n var m = null; // compute max\n\n this.forEach(function (v) {\n if (m === null || smaller(m, v)) {\n m = v;\n }\n });\n this._max = m !== null ? m : undefined;\n }\n\n return this._max;\n };\n\n return ImmutableDenseMatrix;\n}, {\n isClass: true\n});","import { isMatrix, isRange } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Index';\nvar dependencies = ['ImmutableDenseMatrix'];\nexport var createIndexClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ImmutableDenseMatrix\n } = _ref;\n\n /**\n * Create an index. An Index can store ranges and sets for multiple dimensions.\n * Matrix.get, Matrix.set, and math.subset accept an Index as input.\n *\n * Usage:\n * const index = new Index(range1, range2, matrix1, array1, ...)\n *\n * Where each parameter can be any of:\n * A number\n * A string (containing a name of an object property)\n * An instance of Range\n * An Array with the Set values\n * A Matrix with the Set values\n *\n * The parameters start, end, and step must be integer numbers.\n *\n * @class Index\n * @Constructor Index\n * @param {...*} ranges\n */\n function Index(ranges) {\n if (!(this instanceof Index)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this._dimensions = [];\n this._isScalar = true;\n\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i];\n\n if (isRange(arg)) {\n this._dimensions.push(arg);\n\n this._isScalar = false;\n } else if (Array.isArray(arg) || isMatrix(arg)) {\n // create matrix\n var m = _createImmutableMatrix(arg.valueOf());\n\n this._dimensions.push(m); // size\n\n\n var size = m.size(); // scalar\n\n if (size.length !== 1 || size[0] !== 1) {\n this._isScalar = false;\n }\n } else if (typeof arg === 'number') {\n this._dimensions.push(_createImmutableMatrix([arg]));\n } else if (typeof arg === 'string') {\n // object property (arguments.count should be 1)\n this._dimensions.push(arg);\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n } // TODO: implement support for wildcard '*'\n\n }\n }\n /**\n * Attach type information\n */\n\n\n Index.prototype.type = 'Index';\n Index.prototype.isIndex = true;\n\n function _createImmutableMatrix(arg) {\n // loop array elements\n for (var i = 0, l = arg.length; i < l; i++) {\n if (typeof arg[i] !== 'number' || !isInteger(arg[i])) {\n throw new TypeError('Index parameters must be positive integer numbers');\n }\n } // create matrix\n\n\n return new ImmutableDenseMatrix(arg);\n }\n /**\n * Create a clone of the index\n * @memberof Index\n * @return {Index} clone\n */\n\n\n Index.prototype.clone = function () {\n var index = new Index();\n index._dimensions = clone(this._dimensions);\n index._isScalar = this._isScalar;\n return index;\n };\n /**\n * Create an index from an array with ranges/numbers\n * @memberof Index\n * @param {Array.} ranges\n * @return {Index} index\n * @private\n */\n\n\n Index.create = function (ranges) {\n var index = new Index();\n Index.apply(index, ranges);\n return index;\n };\n /**\n * Retrieve the size of the index, the number of elements for each dimension.\n * @memberof Index\n * @returns {number[]} size\n */\n\n\n Index.prototype.size = function () {\n var size = [];\n\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var d = this._dimensions[i];\n size[i] = typeof d === 'string' ? 1 : d.size()[0];\n }\n\n return size;\n };\n /**\n * Get the maximum value for each of the indexes ranges.\n * @memberof Index\n * @returns {number[]} max\n */\n\n\n Index.prototype.max = function () {\n var values = [];\n\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var range = this._dimensions[i];\n values[i] = typeof range === 'string' ? range : range.max();\n }\n\n return values;\n };\n /**\n * Get the minimum value for each of the indexes ranges.\n * @memberof Index\n * @returns {number[]} min\n */\n\n\n Index.prototype.min = function () {\n var values = [];\n\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var range = this._dimensions[i];\n values[i] = typeof range === 'string' ? range : range.min();\n }\n\n return values;\n };\n /**\n * Loop over each of the ranges of the index\n * @memberof Index\n * @param {Function} callback Called for each range with a Range as first\n * argument, the dimension as second, and the\n * index object as third.\n */\n\n\n Index.prototype.forEach = function (callback) {\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n callback(this._dimensions[i], i, this);\n }\n };\n /**\n * Retrieve the dimension for the given index\n * @memberof Index\n * @param {Number} dim Number of the dimension\n * @returns {Range | null} range\n */\n\n\n Index.prototype.dimension = function (dim) {\n return this._dimensions[dim] || null;\n };\n /**\n * Test whether this index contains an object property\n * @returns {boolean} Returns true if the index is an object property\n */\n\n\n Index.prototype.isObjectProperty = function () {\n return this._dimensions.length === 1 && typeof this._dimensions[0] === 'string';\n };\n /**\n * Returns the object property name when the Index holds a single object property,\n * else returns null\n * @returns {string | null}\n */\n\n\n Index.prototype.getObjectProperty = function () {\n return this.isObjectProperty() ? this._dimensions[0] : null;\n };\n /**\n * Test whether this index contains only a single value.\n *\n * This is the case when the index is created with only scalar values as ranges,\n * not for ranges resolving into a single value.\n * @memberof Index\n * @return {boolean} isScalar\n */\n\n\n Index.prototype.isScalar = function () {\n return this._isScalar;\n };\n /**\n * Expand the Index into an array.\n * For example new Index([0,3], [2,7]) returns [[0,1,2], [2,3,4,5,6]]\n * @memberof Index\n * @returns {Array} array\n */\n\n\n Index.prototype.toArray = function () {\n var array = [];\n\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var dimension = this._dimensions[i];\n array.push(typeof dimension === 'string' ? dimension : dimension.toArray());\n }\n\n return array;\n };\n /**\n * Get the primitive value of the Index, a two dimensional array.\n * Equivalent to Index.toArray().\n * @memberof Index\n * @returns {Array} array\n */\n\n\n Index.prototype.valueOf = Index.prototype.toArray;\n /**\n * Get the string representation of the index, for example '[2:6]' or '[0:2:10, 4:7, [1,2,3]]'\n * @memberof Index\n * @returns {String} str\n */\n\n Index.prototype.toString = function () {\n var strings = [];\n\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var dimension = this._dimensions[i];\n\n if (typeof dimension === 'string') {\n strings.push(JSON.stringify(dimension));\n } else {\n strings.push(dimension.toString());\n }\n }\n\n return '[' + strings.join(', ') + ']';\n };\n /**\n * Get a JSON representation of the Index\n * @memberof Index\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Index\", \"ranges\": [{\"mathjs\": \"Range\", start: 0, end: 10, step:1}, ...]}`\n */\n\n\n Index.prototype.toJSON = function () {\n return {\n mathjs: 'Index',\n dimensions: this._dimensions\n };\n };\n /**\n * Instantiate an Index from a JSON object\n * @memberof Index\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Index\", \"dimensions\": [{\"mathjs\": \"Range\", start: 0, end: 10, step:1}, ...]}`\n * @return {Index}\n */\n\n\n Index.fromJSON = function (json) {\n return Index.create(json.dimensions);\n };\n\n return Index;\n}, {\n isClass: true\n});","import { factory } from '../../utils/factory.js';\nvar name = 'FibonacciHeap';\nvar dependencies = ['smaller', 'larger'];\nexport var createFibonacciHeapClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n smaller,\n larger\n } = _ref;\n var oneOverLogPhi = 1.0 / Math.log((1.0 + Math.sqrt(5.0)) / 2.0);\n /**\n * Fibonacci Heap implementation, used interally for Matrix math.\n * @class FibonacciHeap\n * @constructor FibonacciHeap\n */\n\n function FibonacciHeap() {\n if (!(this instanceof FibonacciHeap)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // initialize fields\n\n\n this._minimum = null;\n this._size = 0;\n }\n /**\n * Attach type information\n */\n\n\n FibonacciHeap.prototype.type = 'FibonacciHeap';\n FibonacciHeap.prototype.isFibonacciHeap = true;\n /**\n * Inserts a new data element into the heap. No heap consolidation is\n * performed at this time, the new node is simply inserted into the root\n * list of this heap. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n\n FibonacciHeap.prototype.insert = function (key, value) {\n // create node\n var node = {\n key: key,\n value: value,\n degree: 0\n }; // check we have a node in the minimum\n\n if (this._minimum) {\n // minimum node\n var minimum = this._minimum; // update left & right of node\n\n node.left = minimum;\n node.right = minimum.right;\n minimum.right = node;\n node.right.left = node; // update minimum node in heap if needed\n\n if (smaller(key, minimum.key)) {\n // node has a smaller key, use it as minimum\n this._minimum = node;\n }\n } else {\n // set left & right\n node.left = node;\n node.right = node; // this is the first node\n\n this._minimum = node;\n } // increment number of nodes in heap\n\n\n this._size++; // return node\n\n return node;\n };\n /**\n * Returns the number of nodes in heap. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n\n\n FibonacciHeap.prototype.size = function () {\n return this._size;\n };\n /**\n * Removes all elements from this heap.\n * @memberof FibonacciHeap\n */\n\n\n FibonacciHeap.prototype.clear = function () {\n this._minimum = null;\n this._size = 0;\n };\n /**\n * Returns true if the heap is empty, otherwise false.\n * @memberof FibonacciHeap\n */\n\n\n FibonacciHeap.prototype.isEmpty = function () {\n return this._size === 0;\n };\n /**\n * Extracts the node with minimum key from heap. Amortized running\n * time: O(log n).\n * @memberof FibonacciHeap\n */\n\n\n FibonacciHeap.prototype.extractMinimum = function () {\n // node to remove\n var node = this._minimum; // check we have a minimum\n\n if (node === null) {\n return node;\n } // current minimum\n\n\n var minimum = this._minimum; // get number of children\n\n var numberOfChildren = node.degree; // pointer to the first child\n\n var x = node.child; // for each child of node do...\n\n while (numberOfChildren > 0) {\n // store node in right side\n var tempRight = x.right; // remove x from child list\n\n x.left.right = x.right;\n x.right.left = x.left; // add x to root list of heap\n\n x.left = minimum;\n x.right = minimum.right;\n minimum.right = x;\n x.right.left = x; // set Parent[x] to null\n\n x.parent = null;\n x = tempRight;\n numberOfChildren--;\n } // remove node from root list of heap\n\n\n node.left.right = node.right;\n node.right.left = node.left; // update minimum\n\n if (node === node.right) {\n // empty\n minimum = null;\n } else {\n // update minimum\n minimum = node.right; // we need to update the pointer to the root with minimum key\n\n minimum = _findMinimumNode(minimum, this._size);\n } // decrement size of heap\n\n\n this._size--; // update minimum\n\n this._minimum = minimum; // return node\n\n return node;\n };\n /**\n * Removes a node from the heap given the reference to the node. The trees\n * in the heap will be consolidated, if necessary. This operation may fail\n * to remove the correct element if there are nodes with key value -Infinity.\n * Running time: O(log n) amortized.\n * @memberof FibonacciHeap\n */\n\n\n FibonacciHeap.prototype.remove = function (node) {\n // decrease key value\n this._minimum = _decreaseKey(this._minimum, node, -1); // remove the smallest\n\n this.extractMinimum();\n };\n /**\n * Decreases the key value for a heap node, given the new value to take on.\n * The structure of the heap may be changed and will not be consolidated.\n * Running time: O(1) amortized.\n * @memberof FibonacciHeap\n */\n\n\n function _decreaseKey(minimum, node, key) {\n // set node key\n node.key = key; // get parent node\n\n var parent = node.parent;\n\n if (parent && smaller(node.key, parent.key)) {\n // remove node from parent\n _cut(minimum, node, parent); // remove all nodes from parent to the root parent\n\n\n _cascadingCut(minimum, parent);\n } // update minimum node if needed\n\n\n if (smaller(node.key, minimum.key)) {\n minimum = node;\n } // return minimum\n\n\n return minimum;\n }\n /**\n * The reverse of the link operation: removes node from the child list of parent.\n * This method assumes that min is non-null. Running time: O(1).\n * @memberof FibonacciHeap\n */\n\n\n function _cut(minimum, node, parent) {\n // remove node from parent children and decrement Degree[parent]\n node.left.right = node.right;\n node.right.left = node.left;\n parent.degree--; // reset y.child if necessary\n\n if (parent.child === node) {\n parent.child = node.right;\n } // remove child if degree is 0\n\n\n if (parent.degree === 0) {\n parent.child = null;\n } // add node to root list of heap\n\n\n node.left = minimum;\n node.right = minimum.right;\n minimum.right = node;\n node.right.left = node; // set parent[node] to null\n\n node.parent = null; // set mark[node] to false\n\n node.mark = false;\n }\n /**\n * Performs a cascading cut operation. This cuts node from its parent and then\n * does the same for its parent, and so on up the tree.\n * Running time: O(log n); O(1) excluding the recursion.\n * @memberof FibonacciHeap\n */\n\n\n function _cascadingCut(minimum, node) {\n // store parent node\n var parent = node.parent; // if there's a parent...\n\n if (!parent) {\n return;\n } // if node is unmarked, set it marked\n\n\n if (!node.mark) {\n node.mark = true;\n } else {\n // it's marked, cut it from parent\n _cut(minimum, node, parent); // cut its parent as well\n\n\n _cascadingCut(parent);\n }\n }\n /**\n * Make the first node a child of the second one. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n\n\n var _linkNodes = function _linkNodes(node, parent) {\n // remove node from root list of heap\n node.left.right = node.right;\n node.right.left = node.left; // make node a Child of parent\n\n node.parent = parent;\n\n if (!parent.child) {\n parent.child = node;\n node.right = node;\n node.left = node;\n } else {\n node.left = parent.child;\n node.right = parent.child.right;\n parent.child.right = node;\n node.right.left = node;\n } // increase degree[parent]\n\n\n parent.degree++; // set mark[node] false\n\n node.mark = false;\n };\n\n function _findMinimumNode(minimum, size) {\n // to find trees of the same degree efficiently we use an array of length O(log n) in which we keep a pointer to one root of each degree\n var arraySize = Math.floor(Math.log(size) * oneOverLogPhi) + 1; // create list with initial capacity\n\n var array = new Array(arraySize); // find the number of root nodes.\n\n var numRoots = 0;\n var x = minimum;\n\n if (x) {\n numRoots++;\n x = x.right;\n\n while (x !== minimum) {\n numRoots++;\n x = x.right;\n }\n } // vars\n\n\n var y; // For each node in root list do...\n\n while (numRoots > 0) {\n // access this node's degree..\n var d = x.degree; // get next node\n\n var next = x.right; // check if there is a node already in array with the same degree\n\n while (true) {\n // get node with the same degree is any\n y = array[d];\n\n if (!y) {\n break;\n } // make one node with the same degree a child of the other, do this based on the key value.\n\n\n if (larger(x.key, y.key)) {\n var temp = y;\n y = x;\n x = temp;\n } // make y a child of x\n\n\n _linkNodes(y, x); // we have handled this degree, go to next one.\n\n\n array[d] = null;\n d++;\n } // save this node for later when we might encounter another of the same degree.\n\n\n array[d] = x; // move forward through list.\n\n x = next;\n numRoots--;\n } // Set min to null (effectively losing the root list) and reconstruct the root list from the array entries in array[].\n\n\n minimum = null; // loop nodes in array\n\n for (var i = 0; i < arraySize; i++) {\n // get current node\n y = array[i];\n\n if (!y) {\n continue;\n } // check if we have a linked list\n\n\n if (minimum) {\n // First remove node from root list.\n y.left.right = y.right;\n y.right.left = y.left; // now add to root list, again.\n\n y.left = minimum;\n y.right = minimum.right;\n minimum.right = y;\n y.right.left = y; // check if this is a new min.\n\n if (smaller(y.key, minimum.key)) {\n minimum = y;\n }\n } else {\n minimum = y;\n }\n }\n\n return minimum;\n }\n\n return FibonacciHeap;\n}, {\n isClass: true\n});","import { factory } from '../../utils/factory.js';\nvar name = 'Spa';\nvar dependencies = ['addScalar', 'equalScalar', 'FibonacciHeap'];\nexport var createSpaClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n addScalar,\n equalScalar,\n FibonacciHeap\n } = _ref;\n\n /**\n * An ordered Sparse Accumulator is a representation for a sparse vector that includes a dense array\n * of the vector elements and an ordered list of non-zero elements.\n */\n function Spa() {\n if (!(this instanceof Spa)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // allocate vector, TODO use typed arrays\n\n\n this._values = [];\n this._heap = new FibonacciHeap();\n }\n /**\n * Attach type information\n */\n\n\n Spa.prototype.type = 'Spa';\n Spa.prototype.isSpa = true;\n /**\n * Set the value for index i.\n *\n * @param {number} i The index\n * @param {number | BigNumber | Complex} The value at index i\n */\n\n Spa.prototype.set = function (i, v) {\n // check we have a value @ i\n if (!this._values[i]) {\n // insert in heap\n var node = this._heap.insert(i, v); // set the value @ i\n\n\n this._values[i] = node;\n } else {\n // update the value @ i\n this._values[i].value = v;\n }\n };\n\n Spa.prototype.get = function (i) {\n var node = this._values[i];\n\n if (node) {\n return node.value;\n }\n\n return 0;\n };\n\n Spa.prototype.accumulate = function (i, v) {\n // node @ i\n var node = this._values[i];\n\n if (!node) {\n // insert in heap\n node = this._heap.insert(i, v); // initialize value\n\n this._values[i] = node;\n } else {\n // accumulate value\n node.value = addScalar(node.value, v);\n }\n };\n\n Spa.prototype.forEach = function (from, to, callback) {\n // references\n var heap = this._heap;\n var values = this._values; // nodes\n\n var nodes = []; // node with minimum key, save it\n\n var node = heap.extractMinimum();\n\n if (node) {\n nodes.push(node);\n } // extract nodes from heap (ordered)\n\n\n while (node && node.key <= to) {\n // check it is in range\n if (node.key >= from) {\n // check value is not zero\n if (!equalScalar(node.value, 0)) {\n // invoke callback\n callback(node.key, node.value, this);\n }\n } // extract next node, save it\n\n\n node = heap.extractMinimum();\n\n if (node) {\n nodes.push(node);\n }\n } // reinsert all nodes in heap\n\n\n for (var i = 0; i < nodes.length; i++) {\n // current node\n var n = nodes[i]; // insert node in heap\n\n node = heap.insert(n.key, n.value); // update values\n\n values[node.key] = node;\n }\n };\n\n Spa.prototype.swap = function (i, j) {\n // node @ i and j\n var nodei = this._values[i];\n var nodej = this._values[j]; // check we need to insert indeces\n\n if (!nodei && nodej) {\n // insert in heap\n nodei = this._heap.insert(i, nodej.value); // remove from heap\n\n this._heap.remove(nodej); // set values\n\n\n this._values[i] = nodei;\n this._values[j] = undefined;\n } else if (nodei && !nodej) {\n // insert in heap\n nodej = this._heap.insert(j, nodei.value); // remove from heap\n\n this._heap.remove(nodei); // set values\n\n\n this._values[j] = nodej;\n this._values[i] = undefined;\n } else if (nodei && nodej) {\n // swap values\n var v = nodei.value;\n nodei.value = nodej.value;\n nodej.value = v;\n }\n };\n\n return Spa;\n}, {\n isClass: true\n});","import { memoize } from '../function.js';\n/**\n * Calculate BigNumber e\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns e\n */\n\nexport var createBigNumberE = memoize(function (BigNumber) {\n return new BigNumber(1).exp();\n}, {\n hasher\n});\n/**\n * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns phi\n */\n\nexport var createBigNumberPhi = memoize(function (BigNumber) {\n return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);\n}, {\n hasher\n});\n/**\n * Calculate BigNumber pi.\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns pi\n */\n\nexport var createBigNumberPi = memoize(function (BigNumber) {\n return BigNumber.acos(-1);\n}, {\n hasher\n});\n/**\n * Calculate BigNumber tau, tau = 2 * pi\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns tau\n */\n\nexport var createBigNumberTau = memoize(function (BigNumber) {\n return createBigNumberPi(BigNumber).times(2);\n}, {\n hasher\n});\n/**\n * Create a hash for a BigNumber constructor function. The created has is\n * the configured precision\n * @param {Array} args Supposed to contain a single entry with\n * a BigNumber constructor\n * @return {number} precision\n * @private\n */\n\nfunction hasher(args) {\n return args[0].precision;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { isComplex, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { memoize } from '../../utils/function.js';\nimport { endsWith } from '../../utils/string.js';\nimport { clone, hasOwnProperty } from '../../utils/object.js';\nimport { createBigNumberPi as createPi } from '../../utils/bignumber/constants.js';\nvar name = 'Unit';\nvar dependencies = ['?on', 'config', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];\nexport var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n config,\n addScalar,\n subtract,\n multiplyScalar,\n divideScalar,\n pow,\n abs,\n fix,\n round,\n equal,\n isNumeric,\n format,\n number,\n Complex,\n BigNumber: _BigNumber,\n Fraction: _Fraction\n } = _ref;\n var toNumber = number;\n /**\n * A unit can be constructed in the following ways:\n *\n * const a = new Unit(value, name)\n * const b = new Unit(null, name)\n * const c = Unit.parse(str)\n *\n * Example usage:\n *\n * const a = new Unit(5, 'cm') // 50 mm\n * const b = Unit.parse('23 kg') // 23 kg\n * const c = math.in(a, new Unit(null, 'm') // 0.05 m\n * const d = new Unit(9.81, \"m/s^2\") // 9.81 m/s^2\n *\n * @class Unit\n * @constructor Unit\n * @param {number | BigNumber | Fraction | Complex | boolean} [value] A value like 5.2\n * @param {string} [name] A unit name like \"cm\" or \"inch\", or a derived unit of the form: \"u1[^ex1] [u2[^ex2] ...] [/ u3[^ex3] [u4[^ex4]]]\", such as \"kg m^2/s^2\", where each unit appearing after the forward slash is taken to be in the denominator. \"kg m^2 s^-2\" is a synonym and is also acceptable. Any of the units can include a prefix.\n */\n\n function Unit(value, name) {\n if (!(this instanceof Unit)) {\n throw new Error('Constructor must be called with the new operator');\n }\n\n if (!(value === null || value === undefined || isNumeric(value) || isComplex(value))) {\n throw new TypeError('First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined');\n }\n\n if (name !== undefined && (typeof name !== 'string' || name === '')) {\n throw new TypeError('Second parameter in Unit constructor must be a string');\n }\n\n if (name !== undefined) {\n var u = Unit.parse(name);\n this.units = u.units;\n this.dimensions = u.dimensions;\n } else {\n this.units = [{\n unit: UNIT_NONE,\n prefix: PREFIXES.NONE,\n // link to a list with supported prefixes\n power: 0\n }];\n this.dimensions = [];\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n this.dimensions[i] = 0;\n }\n }\n\n this.value = value !== undefined && value !== null ? this._normalize(value) : null;\n this.fixPrefix = false; // if true, function format will not search for the\n // best prefix but leave it as initially provided.\n // fixPrefix is set true by the method Unit.to\n // The justification behind this is that if the constructor is explicitly called,\n // the caller wishes the units to be returned exactly as he supplied.\n\n this.skipAutomaticSimplification = true;\n }\n /**\n * Attach type information\n */\n\n\n Unit.prototype.type = 'Unit';\n Unit.prototype.isUnit = true; // private variables and functions for the Unit parser\n\n var text, index, c;\n\n function skipWhitespace() {\n while (c === ' ' || c === '\\t') {\n next();\n }\n }\n\n function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n }\n\n function isDigit(c) {\n return c >= '0' && c <= '9';\n }\n\n function next() {\n index++;\n c = text.charAt(index);\n }\n\n function revert(oldIndex) {\n index = oldIndex;\n c = text.charAt(index);\n }\n\n function parseNumber() {\n var number = '';\n var oldIndex = index;\n\n if (c === '+') {\n next();\n } else if (c === '-') {\n number += c;\n next();\n }\n\n if (!isDigitDot(c)) {\n // a + or - must be followed by a digit\n revert(oldIndex);\n return null;\n } // get number, can have a single dot\n\n\n if (c === '.') {\n number += c;\n next();\n\n if (!isDigit(c)) {\n // this is no legal number, it is just a dot\n revert(oldIndex);\n return null;\n }\n } else {\n while (isDigit(c)) {\n number += c;\n next();\n }\n\n if (c === '.') {\n number += c;\n next();\n }\n }\n\n while (isDigit(c)) {\n number += c;\n next();\n } // check for exponential notation like \"2.3e-4\" or \"1.23e50\"\n\n\n if (c === 'E' || c === 'e') {\n // The grammar branches here. This could either be part of an exponent or the start of a unit that begins with the letter e, such as \"4exabytes\"\n var tentativeNumber = '';\n var tentativeIndex = index;\n tentativeNumber += c;\n next();\n\n if (c === '+' || c === '-') {\n tentativeNumber += c;\n next();\n } // Scientific notation MUST be followed by an exponent (otherwise we assume it is not scientific notation)\n\n\n if (!isDigit(c)) {\n // The e or E must belong to something else, so return the number without the e or E.\n revert(tentativeIndex);\n return number;\n } // We can now safely say that this is scientific notation.\n\n\n number = number + tentativeNumber;\n\n while (isDigit(c)) {\n number += c;\n next();\n }\n }\n\n return number;\n }\n\n function parseUnit() {\n var unitName = ''; // Alphanumeric characters only; matches [a-zA-Z0-9]\n\n while (isDigit(c) || Unit.isValidAlpha(c)) {\n unitName += c;\n next();\n } // Must begin with [a-zA-Z]\n\n\n var firstC = unitName.charAt(0);\n\n if (Unit.isValidAlpha(firstC)) {\n return unitName;\n } else {\n return null;\n }\n }\n\n function parseCharacter(toFind) {\n if (c === toFind) {\n next();\n return toFind;\n } else {\n return null;\n }\n }\n /**\n * Parse a string into a unit. The value of the unit is parsed as number,\n * BigNumber, or Fraction depending on the math.js config setting `number`.\n *\n * Throws an exception if the provided string does not contain a valid unit or\n * cannot be parsed.\n * @memberof Unit\n * @param {string} str A string like \"5.2 inch\", \"4e2 cm/s^2\"\n * @return {Unit} unit\n */\n\n\n Unit.parse = function (str, options) {\n options = options || {};\n text = str;\n index = -1;\n c = '';\n\n if (typeof text !== 'string') {\n throw new TypeError('Invalid argument in Unit.parse, string expected');\n }\n\n var unit = new Unit();\n unit.units = [];\n var powerMultiplierCurrent = 1;\n var expectingUnit = false; // A unit should follow this pattern:\n // [number] ...[ [*/] unit[^number] ]\n // unit[^number] ... [ [*/] unit[^number] ]\n // Rules:\n // number is any floating point number.\n // unit is any alphanumeric string beginning with an alpha. Units with names like e3 should be avoided because they look like the exponent of a floating point number!\n // The string may optionally begin with a number.\n // Each unit may optionally be followed by ^number.\n // Whitespace or a forward slash is recommended between consecutive units, although the following technically is parseable:\n // 2m^2kg/s^2\n // it is not good form. If a unit starts with e, then it could be confused as a floating point number:\n // 4erg\n\n next();\n skipWhitespace(); // Optional number at the start of the string\n\n var valueStr = parseNumber();\n var value = null;\n\n if (valueStr) {\n if (config.number === 'BigNumber') {\n value = new _BigNumber(valueStr);\n } else if (config.number === 'Fraction') {\n try {\n // not all numbers can be turned in Fractions, for example very small numbers not\n value = new _Fraction(valueStr);\n } catch (err) {\n value = parseFloat(valueStr);\n }\n } else {\n // number\n value = parseFloat(valueStr);\n }\n\n skipWhitespace(); // Whitespace is not required here\n // handle multiplication or division right after the value, like '1/s'\n\n if (parseCharacter('*')) {\n powerMultiplierCurrent = 1;\n expectingUnit = true;\n } else if (parseCharacter('/')) {\n powerMultiplierCurrent = -1;\n expectingUnit = true;\n }\n } // Stack to keep track of powerMultipliers applied to each parentheses group\n\n\n var powerMultiplierStack = []; // Running product of all elements in powerMultiplierStack\n\n var powerMultiplierStackProduct = 1;\n\n while (true) {\n skipWhitespace(); // Check for and consume opening parentheses, pushing powerMultiplierCurrent to the stack\n // A '(' will always appear directly before a unit.\n\n while (c === '(') {\n powerMultiplierStack.push(powerMultiplierCurrent);\n powerMultiplierStackProduct *= powerMultiplierCurrent;\n powerMultiplierCurrent = 1;\n next();\n skipWhitespace();\n } // Is there something here?\n\n\n var uStr = void 0;\n\n if (c) {\n var oldC = c;\n uStr = parseUnit();\n\n if (uStr === null) {\n throw new SyntaxError('Unexpected \"' + oldC + '\" in \"' + text + '\" at index ' + index.toString());\n }\n } else {\n // End of input.\n break;\n } // Verify the unit exists and get the prefix (if any)\n\n\n var res = _findUnit(uStr);\n\n if (res === null) {\n // Unit not found.\n throw new SyntaxError('Unit \"' + uStr + '\" not found.');\n }\n\n var power = powerMultiplierCurrent * powerMultiplierStackProduct; // Is there a \"^ number\"?\n\n skipWhitespace();\n\n if (parseCharacter('^')) {\n skipWhitespace();\n var p = parseNumber();\n\n if (p === null) {\n // No valid number found for the power!\n throw new SyntaxError('In \"' + str + '\", \"^\" must be followed by a floating-point number');\n }\n\n power *= p;\n } // Add the unit to the list\n\n\n unit.units.push({\n unit: res.unit,\n prefix: res.prefix,\n power: power\n });\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n unit.dimensions[i] += (res.unit.dimensions[i] || 0) * power;\n } // Check for and consume closing parentheses, popping from the stack.\n // A ')' will always follow a unit.\n\n\n skipWhitespace();\n\n while (c === ')') {\n if (powerMultiplierStack.length === 0) {\n throw new SyntaxError('Unmatched \")\" in \"' + text + '\" at index ' + index.toString());\n }\n\n powerMultiplierStackProduct /= powerMultiplierStack.pop();\n next();\n skipWhitespace();\n } // \"*\" and \"/\" should mean we are expecting something to come next.\n // Is there a forward slash? If so, negate powerMultiplierCurrent. The next unit or paren group is in the denominator.\n\n\n expectingUnit = false;\n\n if (parseCharacter('*')) {\n // explicit multiplication\n powerMultiplierCurrent = 1;\n expectingUnit = true;\n } else if (parseCharacter('/')) {\n // division\n powerMultiplierCurrent = -1;\n expectingUnit = true;\n } else {\n // implicit multiplication\n powerMultiplierCurrent = 1;\n } // Replace the unit into the auto unit system\n\n\n if (res.unit.base) {\n var baseDim = res.unit.base.key;\n UNIT_SYSTEMS.auto[baseDim] = {\n unit: res.unit,\n prefix: res.prefix\n };\n }\n } // Has the string been entirely consumed?\n\n\n skipWhitespace();\n\n if (c) {\n throw new SyntaxError('Could not parse: \"' + str + '\"');\n } // Is there a trailing slash?\n\n\n if (expectingUnit) {\n throw new SyntaxError('Trailing characters: \"' + str + '\"');\n } // Is the parentheses stack empty?\n\n\n if (powerMultiplierStack.length !== 0) {\n throw new SyntaxError('Unmatched \"(\" in \"' + text + '\"');\n } // Are there any units at all?\n\n\n if (unit.units.length === 0 && !options.allowNoUnits) {\n throw new SyntaxError('\"' + str + '\" contains no units');\n }\n\n unit.value = value !== undefined ? unit._normalize(value) : null;\n return unit;\n };\n /**\n * create a copy of this unit\n * @memberof Unit\n * @return {Unit} Returns a cloned version of the unit\n */\n\n\n Unit.prototype.clone = function () {\n var unit = new Unit();\n unit.fixPrefix = this.fixPrefix;\n unit.skipAutomaticSimplification = this.skipAutomaticSimplification;\n unit.value = clone(this.value);\n unit.dimensions = this.dimensions.slice(0);\n unit.units = [];\n\n for (var i = 0; i < this.units.length; i++) {\n unit.units[i] = {};\n\n for (var p in this.units[i]) {\n if (hasOwnProperty(this.units[i], p)) {\n unit.units[i][p] = this.units[i][p];\n }\n }\n }\n\n return unit;\n };\n /**\n * Return whether the unit is derived (such as m/s, or cm^2, but not N)\n * @memberof Unit\n * @return {boolean} True if the unit is derived\n */\n\n\n Unit.prototype._isDerived = function () {\n if (this.units.length === 0) {\n return false;\n }\n\n return this.units.length > 1 || Math.abs(this.units[0].power - 1.0) > 1e-15;\n };\n /**\n * Normalize a value, based on its currently set unit(s)\n * @memberof Unit\n * @param {number | BigNumber | Fraction | boolean} value\n * @return {number | BigNumber | Fraction | boolean} normalized value\n * @private\n */\n\n\n Unit.prototype._normalize = function (value) {\n var unitValue, unitOffset, unitPower, unitPrefixValue;\n var convert;\n\n if (value === null || value === undefined || this.units.length === 0) {\n return value;\n } else if (this._isDerived()) {\n // This is a derived unit, so do not apply offsets.\n // For example, with J kg^-1 degC^-1 you would NOT want to apply the offset.\n var res = value;\n convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n for (var i = 0; i < this.units.length; i++) {\n unitValue = convert(this.units[i].unit.value);\n unitPrefixValue = convert(this.units[i].prefix.value);\n unitPower = convert(this.units[i].power);\n res = multiplyScalar(res, pow(multiplyScalar(unitValue, unitPrefixValue), unitPower));\n }\n\n return res;\n } else {\n // This is a single unit of power 1, like kg or degC\n convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n unitValue = convert(this.units[0].unit.value);\n unitOffset = convert(this.units[0].unit.offset);\n unitPrefixValue = convert(this.units[0].prefix.value);\n return multiplyScalar(addScalar(value, unitOffset), multiplyScalar(unitValue, unitPrefixValue));\n }\n };\n /**\n * Denormalize a value, based on its currently set unit(s)\n * @memberof Unit\n * @param {number} value\n * @param {number} [prefixValue] Optional prefix value to be used (ignored if this is a derived unit)\n * @return {number} denormalized value\n * @private\n */\n\n\n Unit.prototype._denormalize = function (value, prefixValue) {\n var unitValue, unitOffset, unitPower, unitPrefixValue;\n var convert;\n\n if (value === null || value === undefined || this.units.length === 0) {\n return value;\n } else if (this._isDerived()) {\n // This is a derived unit, so do not apply offsets.\n // For example, with J kg^-1 degC^-1 you would NOT want to apply the offset.\n // Also, prefixValue is ignored--but we will still use the prefix value stored in each unit, since kg is usually preferable to g unless the user decides otherwise.\n var res = value;\n convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n for (var i = 0; i < this.units.length; i++) {\n unitValue = convert(this.units[i].unit.value);\n unitPrefixValue = convert(this.units[i].prefix.value);\n unitPower = convert(this.units[i].power);\n res = divideScalar(res, pow(multiplyScalar(unitValue, unitPrefixValue), unitPower));\n }\n\n return res;\n } else {\n // This is a single unit of power 1, like kg or degC\n convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n unitValue = convert(this.units[0].unit.value);\n unitPrefixValue = convert(this.units[0].prefix.value);\n unitOffset = convert(this.units[0].unit.offset);\n\n if (prefixValue === undefined || prefixValue === null) {\n return subtract(divideScalar(divideScalar(value, unitValue), unitPrefixValue), unitOffset);\n } else {\n return subtract(divideScalar(divideScalar(value, unitValue), prefixValue), unitOffset);\n }\n }\n };\n /**\n * Find a unit from a string\n * @memberof Unit\n * @param {string} str A string like 'cm' or 'inch'\n * @returns {Object | null} result When found, an object with fields unit and\n * prefix is returned. Else, null is returned.\n * @private\n */\n\n\n var _findUnit = memoize(str => {\n // First, match units names exactly. For example, a user could define 'mm' as 10^-4 m, which is silly, but then we would want 'mm' to match the user-defined unit.\n if (hasOwnProperty(UNITS, str)) {\n var unit = UNITS[str];\n var prefix = unit.prefixes[''];\n return {\n unit,\n prefix\n };\n }\n\n for (var _name in UNITS) {\n if (hasOwnProperty(UNITS, _name)) {\n if (endsWith(str, _name)) {\n var _unit = UNITS[_name];\n var prefixLen = str.length - _name.length;\n var prefixName = str.substring(0, prefixLen);\n\n var _prefix = hasOwnProperty(_unit.prefixes, prefixName) ? _unit.prefixes[prefixName] : undefined;\n\n if (_prefix !== undefined) {\n // store unit, prefix, and value\n return {\n unit: _unit,\n prefix: _prefix\n };\n }\n }\n }\n }\n\n return null;\n }, {\n hasher: args => args[0],\n limit: 100\n });\n /**\n * Test if the given expression is a unit.\n * The unit can have a prefix but cannot have a value.\n * @memberof Unit\n * @param {string} name A string to be tested whether it is a value less unit.\n * The unit can have prefix, like \"cm\"\n * @return {boolean} true if the given string is a unit\n */\n\n\n Unit.isValuelessUnit = function (name) {\n return _findUnit(name) !== null;\n };\n /**\n * check if this unit has given base unit\n * If this unit is a derived unit, this will ALWAYS return false, since by definition base units are not derived.\n * @memberof Unit\n * @param {BASE_UNITS | string | undefined} base\n */\n\n\n Unit.prototype.hasBase = function (base) {\n if (typeof base === 'string') {\n base = BASE_UNITS[base];\n }\n\n if (!base) {\n return false;\n } // All dimensions must be the same\n\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n if (Math.abs((this.dimensions[i] || 0) - (base.dimensions[i] || 0)) > 1e-12) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * Check if this unit has a base or bases equal to another base or bases\n * For derived units, the exponent on each base also must match\n * @memberof Unit\n * @param {Unit} other\n * @return {boolean} true if equal base\n */\n\n\n Unit.prototype.equalBase = function (other) {\n // All dimensions must be the same\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n if (Math.abs((this.dimensions[i] || 0) - (other.dimensions[i] || 0)) > 1e-12) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * Check if this unit equals another unit\n * @memberof Unit\n * @param {Unit} other\n * @return {boolean} true if both units are equal\n */\n\n\n Unit.prototype.equals = function (other) {\n return this.equalBase(other) && equal(this.value, other.value);\n };\n /**\n * Multiply this unit with another one\n * @memberof Unit\n * @param {Unit} other\n * @return {Unit} product of this unit and the other unit\n */\n\n\n Unit.prototype.multiply = function (other) {\n var res = this.clone();\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) + (other.dimensions[i] || 0);\n } // Append other's units list onto res\n\n\n for (var _i = 0; _i < other.units.length; _i++) {\n // Make a shallow copy of every unit\n var inverted = _objectSpread({}, other.units[_i]);\n\n res.units.push(inverted);\n } // If at least one operand has a value, then the result should also have a value\n\n\n if (this.value !== null || other.value !== null) {\n var valThis = this.value === null ? this._normalize(1) : this.value;\n var valOther = other.value === null ? other._normalize(1) : other.value;\n res.value = multiplyScalar(valThis, valOther);\n } else {\n res.value = null;\n }\n\n res.skipAutomaticSimplification = false;\n return getNumericIfUnitless(res);\n };\n /**\n * Divide this unit by another one\n * @memberof Unit\n * @param {Unit} other\n * @return {Unit} result of dividing this unit by the other unit\n */\n\n\n Unit.prototype.divide = function (other) {\n var res = this.clone();\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) - (other.dimensions[i] || 0);\n } // Invert and append other's units list onto res\n\n\n for (var _i2 = 0; _i2 < other.units.length; _i2++) {\n // Make a shallow copy of every unit\n var inverted = _objectSpread(_objectSpread({}, other.units[_i2]), {}, {\n power: -other.units[_i2].power\n });\n\n res.units.push(inverted);\n } // If at least one operand has a value, the result should have a value\n\n\n if (this.value !== null || other.value !== null) {\n var valThis = this.value === null ? this._normalize(1) : this.value;\n var valOther = other.value === null ? other._normalize(1) : other.value;\n res.value = divideScalar(valThis, valOther);\n } else {\n res.value = null;\n }\n\n res.skipAutomaticSimplification = false;\n return getNumericIfUnitless(res);\n };\n /**\n * Calculate the power of a unit\n * @memberof Unit\n * @param {number | Fraction | BigNumber} p\n * @returns {Unit} The result: this^p\n */\n\n\n Unit.prototype.pow = function (p) {\n var res = this.clone();\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) * p;\n } // Adjust the power of each unit in the list\n\n\n for (var _i3 = 0; _i3 < res.units.length; _i3++) {\n res.units[_i3].power *= p;\n }\n\n if (res.value !== null) {\n res.value = pow(res.value, p); // only allow numeric output, we don't want to return a Complex number\n // if (!isNumeric(res.value)) {\n // res.value = NaN\n // }\n // Update: Complex supported now\n } else {\n res.value = null;\n }\n\n res.skipAutomaticSimplification = false;\n return getNumericIfUnitless(res);\n };\n /**\n * Return the numeric value of this unit if it is dimensionless, has a value, and config.predictable == false; or the original unit otherwise\n * @param {Unit} unit\n * @returns {number | Fraction | BigNumber | Unit} The numeric value of the unit if conditions are met, or the original unit otherwise\n */\n\n\n function getNumericIfUnitless(unit) {\n if (unit.equalBase(BASE_UNITS.NONE) && unit.value !== null && !config.predictable) {\n return unit.value;\n } else {\n return unit;\n }\n }\n /**\n * Calculate the absolute value of a unit\n * @memberof Unit\n * @param {number | Fraction | BigNumber} x\n * @returns {Unit} The result: |x|, absolute value of x\n */\n\n\n Unit.prototype.abs = function () {\n // This gives correct, but unexpected, results for units with an offset.\n // For example, abs(-283.15 degC) = -263.15 degC !!!\n var ret = this.clone();\n ret.value = ret.value !== null ? abs(ret.value) : null;\n\n for (var i in ret.units) {\n if (ret.units[i].unit.name === 'VA' || ret.units[i].unit.name === 'VAR') {\n ret.units[i].unit = UNITS.W;\n }\n }\n\n return ret;\n };\n /**\n * Convert the unit to a specific unit name.\n * @memberof Unit\n * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like \"cm\"\n * @returns {Unit} Returns a clone of the unit with a fixed prefix and unit.\n */\n\n\n Unit.prototype.to = function (valuelessUnit) {\n var other;\n var value = this.value === null ? this._normalize(1) : this.value;\n\n if (typeof valuelessUnit === 'string') {\n // other = new Unit(null, valuelessUnit)\n other = Unit.parse(valuelessUnit);\n\n if (!this.equalBase(other)) {\n throw new Error(\"Units do not match ('\".concat(other.toString(), \"' != '\").concat(this.toString(), \"')\"));\n }\n\n if (other.value !== null) {\n throw new Error('Cannot convert to a unit with a value');\n }\n\n other.value = clone(value);\n other.fixPrefix = true;\n other.skipAutomaticSimplification = true;\n return other;\n } else if (isUnit(valuelessUnit)) {\n if (!this.equalBase(valuelessUnit)) {\n throw new Error(\"Units do not match ('\".concat(valuelessUnit.toString(), \"' != '\").concat(this.toString(), \"')\"));\n }\n\n if (valuelessUnit.value !== null) {\n throw new Error('Cannot convert to a unit with a value');\n }\n\n other = valuelessUnit.clone();\n other.value = clone(value);\n other.fixPrefix = true;\n other.skipAutomaticSimplification = true;\n return other;\n } else {\n throw new Error('String or Unit expected as parameter');\n }\n };\n /**\n * Return the value of the unit when represented with given valueless unit\n * @memberof Unit\n * @param {string | Unit} valuelessUnit For example 'cm' or 'inch'\n * @return {number} Returns the unit value as number.\n */\n // TODO: deprecate Unit.toNumber? It's always better to use toNumeric\n\n\n Unit.prototype.toNumber = function (valuelessUnit) {\n return toNumber(this.toNumeric(valuelessUnit));\n };\n /**\n * Return the value of the unit in the original numeric type\n * @memberof Unit\n * @param {string | Unit} valuelessUnit For example 'cm' or 'inch'\n * @return {number | BigNumber | Fraction} Returns the unit value\n */\n\n\n Unit.prototype.toNumeric = function (valuelessUnit) {\n var other;\n\n if (valuelessUnit) {\n // Allow getting the numeric value without converting to a different unit\n other = this.to(valuelessUnit);\n } else {\n other = this.clone();\n }\n\n if (other._isDerived() || other.units.length === 0) {\n return other._denormalize(other.value);\n } else {\n return other._denormalize(other.value, other.units[0].prefix.value);\n }\n };\n /**\n * Get a string representation of the unit.\n * @memberof Unit\n * @return {string}\n */\n\n\n Unit.prototype.toString = function () {\n return this.format();\n };\n /**\n * Get a JSON representation of the unit\n * @memberof Unit\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Unit\", \"value\": 2, \"unit\": \"cm\", \"fixPrefix\": false}`\n */\n\n\n Unit.prototype.toJSON = function () {\n return {\n mathjs: 'Unit',\n value: this._denormalize(this.value),\n unit: this.formatUnits(),\n fixPrefix: this.fixPrefix\n };\n };\n /**\n * Instantiate a Unit from a JSON object\n * @memberof Unit\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Unit\", \"value\": 2, \"unit\": \"cm\", \"fixPrefix\": false}`\n * @return {Unit}\n */\n\n\n Unit.fromJSON = function (json) {\n var unit = new Unit(json.value, json.unit);\n unit.fixPrefix = json.fixPrefix || false;\n return unit;\n };\n /**\n * Returns the string representation of the unit.\n * @memberof Unit\n * @return {string}\n */\n\n\n Unit.prototype.valueOf = Unit.prototype.toString;\n /**\n * Simplify this Unit's unit list and return a new Unit with the simplified list.\n * The returned Unit will contain a list of the \"best\" units for formatting.\n */\n\n Unit.prototype.simplify = function () {\n var ret = this.clone();\n var proposedUnitList = []; // Search for a matching base\n\n var matchingBase;\n\n for (var key in currentUnitSystem) {\n if (hasOwnProperty(currentUnitSystem, key)) {\n if (ret.hasBase(BASE_UNITS[key])) {\n matchingBase = key;\n break;\n }\n }\n }\n\n if (matchingBase === 'NONE') {\n ret.units = [];\n } else {\n var matchingUnit;\n\n if (matchingBase) {\n // Does the unit system have a matching unit?\n if (hasOwnProperty(currentUnitSystem, matchingBase)) {\n matchingUnit = currentUnitSystem[matchingBase];\n }\n }\n\n if (matchingUnit) {\n ret.units = [{\n unit: matchingUnit.unit,\n prefix: matchingUnit.prefix,\n power: 1.0\n }];\n } else {\n // Multiple units or units with powers are formatted like this:\n // 5 (kg m^2) / (s^3 mol)\n // Build an representation from the base units of the current unit system\n var missingBaseDim = false;\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n var baseDim = BASE_DIMENSIONS[i];\n\n if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {\n if (hasOwnProperty(currentUnitSystem, baseDim)) {\n proposedUnitList.push({\n unit: currentUnitSystem[baseDim].unit,\n prefix: currentUnitSystem[baseDim].prefix,\n power: ret.dimensions[i] || 0\n });\n } else {\n missingBaseDim = true;\n }\n }\n } // Is the proposed unit list \"simpler\" than the existing one?\n\n\n if (proposedUnitList.length < ret.units.length && !missingBaseDim) {\n // Replace this unit list with the proposed list\n ret.units = proposedUnitList;\n }\n }\n }\n\n return ret;\n };\n /**\n * Returns a new Unit in the SI system with the same value as this one\n */\n\n\n Unit.prototype.toSI = function () {\n var ret = this.clone();\n var proposedUnitList = []; // Multiple units or units with powers are formatted like this:\n // 5 (kg m^2) / (s^3 mol)\n // Build an representation from the base units of the SI unit system\n\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n var baseDim = BASE_DIMENSIONS[i];\n\n if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {\n if (hasOwnProperty(UNIT_SYSTEMS.si, baseDim)) {\n proposedUnitList.push({\n unit: UNIT_SYSTEMS.si[baseDim].unit,\n prefix: UNIT_SYSTEMS.si[baseDim].prefix,\n power: ret.dimensions[i] || 0\n });\n } else {\n throw new Error('Cannot express custom unit ' + baseDim + ' in SI units');\n }\n }\n } // Replace this unit list with the proposed list\n\n\n ret.units = proposedUnitList;\n ret.fixPrefix = true;\n ret.skipAutomaticSimplification = true;\n return ret;\n };\n /**\n * Get a string representation of the units of this Unit, without the value. The unit list is formatted as-is without first being simplified.\n * @memberof Unit\n * @return {string}\n */\n\n\n Unit.prototype.formatUnits = function () {\n var strNum = '';\n var strDen = '';\n var nNum = 0;\n var nDen = 0;\n\n for (var i = 0; i < this.units.length; i++) {\n if (this.units[i].power > 0) {\n nNum++;\n strNum += ' ' + this.units[i].prefix.name + this.units[i].unit.name;\n\n if (Math.abs(this.units[i].power - 1.0) > 1e-15) {\n strNum += '^' + this.units[i].power;\n }\n } else if (this.units[i].power < 0) {\n nDen++;\n }\n }\n\n if (nDen > 0) {\n for (var _i4 = 0; _i4 < this.units.length; _i4++) {\n if (this.units[_i4].power < 0) {\n if (nNum > 0) {\n strDen += ' ' + this.units[_i4].prefix.name + this.units[_i4].unit.name;\n\n if (Math.abs(this.units[_i4].power + 1.0) > 1e-15) {\n strDen += '^' + -this.units[_i4].power;\n }\n } else {\n strDen += ' ' + this.units[_i4].prefix.name + this.units[_i4].unit.name;\n strDen += '^' + this.units[_i4].power;\n }\n }\n }\n } // Remove leading \" \"\n\n\n strNum = strNum.substr(1);\n strDen = strDen.substr(1); // Add parans for better copy/paste back into evaluate, for example, or for better pretty print formatting\n\n if (nNum > 1 && nDen > 0) {\n strNum = '(' + strNum + ')';\n }\n\n if (nDen > 1 && nNum > 0) {\n strDen = '(' + strDen + ')';\n }\n\n var str = strNum;\n\n if (nNum > 0 && nDen > 0) {\n str += ' / ';\n }\n\n str += strDen;\n return str;\n };\n /**\n * Get a string representation of the Unit, with optional formatting options.\n * @memberof Unit\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string}\n */\n\n\n Unit.prototype.format = function (options) {\n // Simplfy the unit list, unless it is valueless or was created directly in the\n // constructor or as the result of to or toSI\n var simp = this.skipAutomaticSimplification || this.value === null ? this.clone() : this.simplify(); // Apply some custom logic for handling VA and VAR. The goal is to express the value of the unit as a real value, if possible. Otherwise, use a real-valued unit instead of a complex-valued one.\n\n var isImaginary = false;\n\n if (typeof simp.value !== 'undefined' && simp.value !== null && isComplex(simp.value)) {\n // TODO: Make this better, for example, use relative magnitude of re and im rather than absolute\n isImaginary = Math.abs(simp.value.re) < 1e-14;\n }\n\n for (var i in simp.units) {\n if (hasOwnProperty(simp.units, i)) {\n if (simp.units[i].unit) {\n if (simp.units[i].unit.name === 'VA' && isImaginary) {\n simp.units[i].unit = UNITS.VAR;\n } else if (simp.units[i].unit.name === 'VAR' && !isImaginary) {\n simp.units[i].unit = UNITS.VA;\n }\n }\n }\n } // Now apply the best prefix\n // Units must have only one unit and not have the fixPrefix flag set\n\n\n if (simp.units.length === 1 && !simp.fixPrefix) {\n // Units must have integer powers, otherwise the prefix will change the\n // outputted value by not-an-integer-power-of-ten\n if (Math.abs(simp.units[0].power - Math.round(simp.units[0].power)) < 1e-14) {\n // Apply the best prefix\n simp.units[0].prefix = simp._bestPrefix();\n }\n }\n\n var value = simp._denormalize(simp.value);\n\n var str = simp.value !== null ? format(value, options || {}) : '';\n var unitStr = simp.formatUnits();\n\n if (simp.value && isComplex(simp.value)) {\n str = '(' + str + ')'; // Surround complex values with ( ) to enable better parsing\n }\n\n if (unitStr.length > 0 && str.length > 0) {\n str += ' ';\n }\n\n str += unitStr;\n return str;\n };\n /**\n * Calculate the best prefix using current value.\n * @memberof Unit\n * @returns {Object} prefix\n * @private\n */\n\n\n Unit.prototype._bestPrefix = function () {\n if (this.units.length !== 1) {\n throw new Error('Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!');\n }\n\n if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) >= 1e-14) {\n throw new Error('Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!');\n } // find the best prefix value (resulting in the value of which\n // the absolute value of the log10 is closest to zero,\n // though with a little offset of 1.2 for nicer values: you get a\n // sequence 1mm 100mm 500mm 0.6m 1m 10m 100m 500m 0.6km 1km ...\n // Note: the units value can be any numeric type, but to find the best\n // prefix it's enough to work with limited precision of a regular number\n // Update: using mathjs abs since we also allow complex numbers\n\n\n var absValue = this.value !== null ? abs(this.value) : 0;\n var absUnitValue = abs(this.units[0].unit.value);\n var bestPrefix = this.units[0].prefix;\n\n if (absValue === 0) {\n return bestPrefix;\n }\n\n var power = this.units[0].power;\n var bestDiff = Math.log(absValue / Math.pow(bestPrefix.value * absUnitValue, power)) / Math.LN10 - 1.2;\n if (bestDiff > -2.200001 && bestDiff < 1.800001) return bestPrefix; // Allow the original prefix\n\n bestDiff = Math.abs(bestDiff);\n var prefixes = this.units[0].unit.prefixes;\n\n for (var p in prefixes) {\n if (hasOwnProperty(prefixes, p)) {\n var prefix = prefixes[p];\n\n if (prefix.scientific) {\n var diff = Math.abs(Math.log(absValue / Math.pow(prefix.value * absUnitValue, power)) / Math.LN10 - 1.2);\n\n if (diff < bestDiff || diff === bestDiff && prefix.name.length < bestPrefix.name.length) {\n // choose the prefix with the smallest diff, or if equal, choose the one\n // with the shortest name (can happen with SHORTLONG for example)\n bestPrefix = prefix;\n bestDiff = diff;\n }\n }\n }\n }\n\n return bestPrefix;\n };\n /**\n * Returns an array of units whose sum is equal to this unit\n * @memberof Unit\n * @param {Array} [parts] An array of strings or valueless units.\n *\n * Example:\n *\n * const u = new Unit(1, 'm')\n * u.splitUnit(['feet', 'inch'])\n * [ 3 feet, 3.3700787401575 inch ]\n *\n * @return {Array} An array of units.\n */\n\n\n Unit.prototype.splitUnit = function (parts) {\n var x = this.clone();\n var ret = [];\n\n for (var i = 0; i < parts.length; i++) {\n // Convert x to the requested unit\n x = x.to(parts[i]);\n if (i === parts.length - 1) break; // Get the numeric value of this unit\n\n var xNumeric = x.toNumeric(); // Check to see if xNumeric is nearly equal to an integer,\n // since fix can incorrectly round down if there is round-off error\n\n var xRounded = round(xNumeric);\n var xFixed = void 0;\n var isNearlyEqual = equal(xRounded, xNumeric);\n\n if (isNearlyEqual) {\n xFixed = xRounded;\n } else {\n xFixed = fix(x.toNumeric());\n }\n\n var y = new Unit(xFixed, parts[i].toString());\n ret.push(y);\n x = subtract(x, y);\n } // This little bit fixes a bug where the remainder should be 0 but is a little bit off.\n // But instead of comparing x, the remainder, with zero--we will compare the sum of\n // all the parts so far with the original value. If they are nearly equal,\n // we set the remainder to 0.\n\n\n var testSum = 0;\n\n for (var _i5 = 0; _i5 < ret.length; _i5++) {\n testSum = addScalar(testSum, ret[_i5].value);\n }\n\n if (equal(testSum, this.value)) {\n x.value = 0;\n }\n\n ret.push(x);\n return ret;\n };\n\n var PREFIXES = {\n NONE: {\n '': {\n name: '',\n value: 1,\n scientific: true\n }\n },\n SHORT: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e1,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e2,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e3,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e6,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e9,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e12,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e15,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e18,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e21,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e24,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-1,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-2,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-3,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-6,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-9,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-12,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-15,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-18,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-21,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-24,\n scientific: true\n }\n },\n LONG: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n deca: {\n name: 'deca',\n value: 1e1,\n scientific: false\n },\n hecto: {\n name: 'hecto',\n value: 1e2,\n scientific: false\n },\n kilo: {\n name: 'kilo',\n value: 1e3,\n scientific: true\n },\n mega: {\n name: 'mega',\n value: 1e6,\n scientific: true\n },\n giga: {\n name: 'giga',\n value: 1e9,\n scientific: true\n },\n tera: {\n name: 'tera',\n value: 1e12,\n scientific: true\n },\n peta: {\n name: 'peta',\n value: 1e15,\n scientific: true\n },\n exa: {\n name: 'exa',\n value: 1e18,\n scientific: true\n },\n zetta: {\n name: 'zetta',\n value: 1e21,\n scientific: true\n },\n yotta: {\n name: 'yotta',\n value: 1e24,\n scientific: true\n },\n deci: {\n name: 'deci',\n value: 1e-1,\n scientific: false\n },\n centi: {\n name: 'centi',\n value: 1e-2,\n scientific: false\n },\n milli: {\n name: 'milli',\n value: 1e-3,\n scientific: true\n },\n micro: {\n name: 'micro',\n value: 1e-6,\n scientific: true\n },\n nano: {\n name: 'nano',\n value: 1e-9,\n scientific: true\n },\n pico: {\n name: 'pico',\n value: 1e-12,\n scientific: true\n },\n femto: {\n name: 'femto',\n value: 1e-15,\n scientific: true\n },\n atto: {\n name: 'atto',\n value: 1e-18,\n scientific: true\n },\n zepto: {\n name: 'zepto',\n value: 1e-21,\n scientific: true\n },\n yocto: {\n name: 'yocto',\n value: 1e-24,\n scientific: true\n }\n },\n SQUARED: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e2,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e4,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e6,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e12,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e18,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e24,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e30,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e36,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e42,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e48,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-2,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-4,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-6,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-12,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-18,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-24,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-30,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-36,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-42,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-48,\n scientific: true\n }\n },\n CUBIC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e3,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e6,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e9,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e18,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e27,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e36,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e45,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e54,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e63,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e72,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-3,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-6,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-9,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-18,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-27,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-36,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-45,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-54,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-63,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-72,\n scientific: true\n }\n },\n BINARY_SHORT_SI: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n k: {\n name: 'k',\n value: 1e3,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e6,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e9,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e12,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e15,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e18,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e21,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e24,\n scientific: true\n }\n },\n BINARY_SHORT_IEC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n Ki: {\n name: 'Ki',\n value: 1024,\n scientific: true\n },\n Mi: {\n name: 'Mi',\n value: Math.pow(1024, 2),\n scientific: true\n },\n Gi: {\n name: 'Gi',\n value: Math.pow(1024, 3),\n scientific: true\n },\n Ti: {\n name: 'Ti',\n value: Math.pow(1024, 4),\n scientific: true\n },\n Pi: {\n name: 'Pi',\n value: Math.pow(1024, 5),\n scientific: true\n },\n Ei: {\n name: 'Ei',\n value: Math.pow(1024, 6),\n scientific: true\n },\n Zi: {\n name: 'Zi',\n value: Math.pow(1024, 7),\n scientific: true\n },\n Yi: {\n name: 'Yi',\n value: Math.pow(1024, 8),\n scientific: true\n }\n },\n BINARY_LONG_SI: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n kilo: {\n name: 'kilo',\n value: 1e3,\n scientific: true\n },\n mega: {\n name: 'mega',\n value: 1e6,\n scientific: true\n },\n giga: {\n name: 'giga',\n value: 1e9,\n scientific: true\n },\n tera: {\n name: 'tera',\n value: 1e12,\n scientific: true\n },\n peta: {\n name: 'peta',\n value: 1e15,\n scientific: true\n },\n exa: {\n name: 'exa',\n value: 1e18,\n scientific: true\n },\n zetta: {\n name: 'zetta',\n value: 1e21,\n scientific: true\n },\n yotta: {\n name: 'yotta',\n value: 1e24,\n scientific: true\n }\n },\n BINARY_LONG_IEC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n kibi: {\n name: 'kibi',\n value: 1024,\n scientific: true\n },\n mebi: {\n name: 'mebi',\n value: Math.pow(1024, 2),\n scientific: true\n },\n gibi: {\n name: 'gibi',\n value: Math.pow(1024, 3),\n scientific: true\n },\n tebi: {\n name: 'tebi',\n value: Math.pow(1024, 4),\n scientific: true\n },\n pebi: {\n name: 'pebi',\n value: Math.pow(1024, 5),\n scientific: true\n },\n exi: {\n name: 'exi',\n value: Math.pow(1024, 6),\n scientific: true\n },\n zebi: {\n name: 'zebi',\n value: Math.pow(1024, 7),\n scientific: true\n },\n yobi: {\n name: 'yobi',\n value: Math.pow(1024, 8),\n scientific: true\n }\n },\n BTU: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n MM: {\n name: 'MM',\n value: 1e6,\n scientific: true\n }\n }\n };\n PREFIXES.SHORTLONG = _extends({}, PREFIXES.SHORT, PREFIXES.LONG);\n PREFIXES.BINARY_SHORT = _extends({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);\n PREFIXES.BINARY_LONG = _extends({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);\n /* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning:\n * Index Dimension\n * ----- ---------\n * 0 Length\n * 1 Mass\n * 2 Time\n * 3 Current\n * 4 Temperature\n * 5 Luminous intensity\n * 6 Amount of substance\n * 7 Angle\n * 8 Bit (digital)\n * For example, the unit \"298.15 K\" is a pure temperature and would have a value of 298.15 and a dimension array of [0, 0, 0, 0, 1, 0, 0, 0, 0]. The unit \"1 cal / (gm °C)\" can be written in terms of the 9 fundamental dimensions as [length^2] / ([time^2] * [temperature]), and would a value of (after conversion to SI) 4184.0 and a dimensions array of [2, 0, -2, 0, -1, 0, 0, 0, 0].\n *\n */\n\n var BASE_DIMENSIONS = ['MASS', 'LENGTH', 'TIME', 'CURRENT', 'TEMPERATURE', 'LUMINOUS_INTENSITY', 'AMOUNT_OF_SUBSTANCE', 'ANGLE', 'BIT'];\n var BASE_UNITS = {\n NONE: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 0]\n },\n MASS: {\n dimensions: [1, 0, 0, 0, 0, 0, 0, 0, 0]\n },\n LENGTH: {\n dimensions: [0, 1, 0, 0, 0, 0, 0, 0, 0]\n },\n TIME: {\n dimensions: [0, 0, 1, 0, 0, 0, 0, 0, 0]\n },\n CURRENT: {\n dimensions: [0, 0, 0, 1, 0, 0, 0, 0, 0]\n },\n TEMPERATURE: {\n dimensions: [0, 0, 0, 0, 1, 0, 0, 0, 0]\n },\n LUMINOUS_INTENSITY: {\n dimensions: [0, 0, 0, 0, 0, 1, 0, 0, 0]\n },\n AMOUNT_OF_SUBSTANCE: {\n dimensions: [0, 0, 0, 0, 0, 0, 1, 0, 0]\n },\n FORCE: {\n dimensions: [1, 1, -2, 0, 0, 0, 0, 0, 0]\n },\n SURFACE: {\n dimensions: [0, 2, 0, 0, 0, 0, 0, 0, 0]\n },\n VOLUME: {\n dimensions: [0, 3, 0, 0, 0, 0, 0, 0, 0]\n },\n ENERGY: {\n dimensions: [1, 2, -2, 0, 0, 0, 0, 0, 0]\n },\n POWER: {\n dimensions: [1, 2, -3, 0, 0, 0, 0, 0, 0]\n },\n PRESSURE: {\n dimensions: [1, -1, -2, 0, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CHARGE: {\n dimensions: [0, 0, 1, 1, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CAPACITANCE: {\n dimensions: [-1, -2, 4, 2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_POTENTIAL: {\n dimensions: [1, 2, -3, -1, 0, 0, 0, 0, 0]\n },\n ELECTRIC_RESISTANCE: {\n dimensions: [1, 2, -3, -2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_INDUCTANCE: {\n dimensions: [1, 2, -2, -2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CONDUCTANCE: {\n dimensions: [-1, -2, 3, 2, 0, 0, 0, 0, 0]\n },\n MAGNETIC_FLUX: {\n dimensions: [1, 2, -2, -1, 0, 0, 0, 0, 0]\n },\n MAGNETIC_FLUX_DENSITY: {\n dimensions: [1, 0, -2, -1, 0, 0, 0, 0, 0]\n },\n FREQUENCY: {\n dimensions: [0, 0, -1, 0, 0, 0, 0, 0, 0]\n },\n ANGLE: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 1, 0]\n },\n BIT: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 1]\n }\n };\n\n for (var key in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, key)) {\n BASE_UNITS[key].key = key;\n }\n }\n\n var BASE_UNIT_NONE = {};\n var UNIT_NONE = {\n name: '',\n base: BASE_UNIT_NONE,\n value: 1,\n offset: 0,\n dimensions: BASE_DIMENSIONS.map(x => 0)\n };\n var UNITS = {\n // length\n meter: {\n name: 'meter',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n inch: {\n name: 'inch',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0254,\n offset: 0\n },\n foot: {\n name: 'foot',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.3048,\n offset: 0\n },\n yard: {\n name: 'yard',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.9144,\n offset: 0\n },\n mile: {\n name: 'mile',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1609.344,\n offset: 0\n },\n link: {\n name: 'link',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.201168,\n offset: 0\n },\n rod: {\n name: 'rod',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 5.0292,\n offset: 0\n },\n chain: {\n name: 'chain',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 20.1168,\n offset: 0\n },\n angstrom: {\n name: 'angstrom',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1e-10,\n offset: 0\n },\n m: {\n name: 'm',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n in: {\n name: 'in',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0254,\n offset: 0\n },\n ft: {\n name: 'ft',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.3048,\n offset: 0\n },\n yd: {\n name: 'yd',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.9144,\n offset: 0\n },\n mi: {\n name: 'mi',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1609.344,\n offset: 0\n },\n li: {\n name: 'li',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.201168,\n offset: 0\n },\n rd: {\n name: 'rd',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 5.029210,\n offset: 0\n },\n ch: {\n name: 'ch',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 20.1168,\n offset: 0\n },\n mil: {\n name: 'mil',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0000254,\n offset: 0\n },\n // 1/1000 inch\n // Surface\n m2: {\n name: 'm2',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.SQUARED,\n value: 1,\n offset: 0\n },\n sqin: {\n name: 'sqin',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.00064516,\n offset: 0\n },\n // 645.16 mm2\n sqft: {\n name: 'sqft',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.09290304,\n offset: 0\n },\n // 0.09290304 m2\n sqyd: {\n name: 'sqyd',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.83612736,\n offset: 0\n },\n // 0.83612736 m2\n sqmi: {\n name: 'sqmi',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 2589988.110336,\n offset: 0\n },\n // 2.589988110336 km2\n sqrd: {\n name: 'sqrd',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 25.29295,\n offset: 0\n },\n // 25.29295 m2\n sqch: {\n name: 'sqch',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 404.6873,\n offset: 0\n },\n // 404.6873 m2\n sqmil: {\n name: 'sqmil',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 6.4516e-10,\n offset: 0\n },\n // 6.4516 * 10^-10 m2\n acre: {\n name: 'acre',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 4046.86,\n offset: 0\n },\n // 4046.86 m2\n hectare: {\n name: 'hectare',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 10000,\n offset: 0\n },\n // 10000 m2\n // Volume\n m3: {\n name: 'm3',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.CUBIC,\n value: 1,\n offset: 0\n },\n L: {\n name: 'L',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n // litre\n l: {\n name: 'l',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n // litre\n litre: {\n name: 'litre',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.LONG,\n value: 0.001,\n offset: 0\n },\n cuin: {\n name: 'cuin',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 1.6387064e-5,\n offset: 0\n },\n // 1.6387064e-5 m3\n cuft: {\n name: 'cuft',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.028316846592,\n offset: 0\n },\n // 28.316 846 592 L\n cuyd: {\n name: 'cuyd',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.764554857984,\n offset: 0\n },\n // 764.554 857 984 L\n teaspoon: {\n name: 'teaspoon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000005,\n offset: 0\n },\n // 5 mL\n tablespoon: {\n name: 'tablespoon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000015,\n offset: 0\n },\n // 15 mL\n // {name: 'cup', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.000240, offset: 0}, // 240 mL // not possible, we have already another cup\n drop: {\n name: 'drop',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 5e-8,\n offset: 0\n },\n // 0.05 mL = 5e-8 m3\n gtt: {\n name: 'gtt',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 5e-8,\n offset: 0\n },\n // 0.05 mL = 5e-8 m3\n // Liquid volume\n minim: {\n name: 'minim',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.00000006161152,\n offset: 0\n },\n // 0.06161152 mL\n fluiddram: {\n name: 'fluiddram',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0000036966911,\n offset: 0\n },\n // 3.696691 mL\n fluidounce: {\n name: 'fluidounce',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.00002957353,\n offset: 0\n },\n // 29.57353 mL\n gill: {\n name: 'gill',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0001182941,\n offset: 0\n },\n // 118.2941 mL\n cc: {\n name: 'cc',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 1e-6,\n offset: 0\n },\n // 1e-6 L\n cup: {\n name: 'cup',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0002365882,\n offset: 0\n },\n // 236.5882 mL\n pint: {\n name: 'pint',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0004731765,\n offset: 0\n },\n // 473.1765 mL\n quart: {\n name: 'quart',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0009463529,\n offset: 0\n },\n // 946.3529 mL\n gallon: {\n name: 'gallon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.003785412,\n offset: 0\n },\n // 3.785412 L\n beerbarrel: {\n name: 'beerbarrel',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.1173478,\n offset: 0\n },\n // 117.3478 L\n oilbarrel: {\n name: 'oilbarrel',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.1589873,\n offset: 0\n },\n // 158.9873 L\n hogshead: {\n name: 'hogshead',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.2384810,\n offset: 0\n },\n // 238.4810 L\n // {name: 'min', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.00000006161152, offset: 0}, // 0.06161152 mL // min is already in use as minute\n fldr: {\n name: 'fldr',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0000036966911,\n offset: 0\n },\n // 3.696691 mL\n floz: {\n name: 'floz',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.00002957353,\n offset: 0\n },\n // 29.57353 mL\n gi: {\n name: 'gi',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0001182941,\n offset: 0\n },\n // 118.2941 mL\n cp: {\n name: 'cp',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0002365882,\n offset: 0\n },\n // 236.5882 mL\n pt: {\n name: 'pt',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0004731765,\n offset: 0\n },\n // 473.1765 mL\n qt: {\n name: 'qt',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0009463529,\n offset: 0\n },\n // 946.3529 mL\n gal: {\n name: 'gal',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.003785412,\n offset: 0\n },\n // 3.785412 L\n bbl: {\n name: 'bbl',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.1173478,\n offset: 0\n },\n // 117.3478 L\n obl: {\n name: 'obl',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.1589873,\n offset: 0\n },\n // 158.9873 L\n // {name: 'hogshead', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.2384810, offset: 0}, // 238.4810 L // TODO: hh?\n // Mass\n g: {\n name: 'g',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n gram: {\n name: 'gram',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.LONG,\n value: 0.001,\n offset: 0\n },\n ton: {\n name: 'ton',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 907.18474,\n offset: 0\n },\n t: {\n name: 't',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 1000,\n offset: 0\n },\n tonne: {\n name: 'tonne',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.LONG,\n value: 1000,\n offset: 0\n },\n grain: {\n name: 'grain',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 64.79891e-6,\n offset: 0\n },\n dram: {\n name: 'dram',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 1.7718451953125e-3,\n offset: 0\n },\n ounce: {\n name: 'ounce',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 28.349523125e-3,\n offset: 0\n },\n poundmass: {\n name: 'poundmass',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 453.59237e-3,\n offset: 0\n },\n hundredweight: {\n name: 'hundredweight',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 45.359237,\n offset: 0\n },\n stick: {\n name: 'stick',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 115e-3,\n offset: 0\n },\n stone: {\n name: 'stone',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 6.35029318,\n offset: 0\n },\n gr: {\n name: 'gr',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 64.79891e-6,\n offset: 0\n },\n dr: {\n name: 'dr',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 1.7718451953125e-3,\n offset: 0\n },\n oz: {\n name: 'oz',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 28.349523125e-3,\n offset: 0\n },\n lbm: {\n name: 'lbm',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 453.59237e-3,\n offset: 0\n },\n cwt: {\n name: 'cwt',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 45.359237,\n offset: 0\n },\n // Time\n s: {\n name: 's',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n min: {\n name: 'min',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 60,\n offset: 0\n },\n h: {\n name: 'h',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3600,\n offset: 0\n },\n second: {\n name: 'second',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n sec: {\n name: 'sec',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n minute: {\n name: 'minute',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 60,\n offset: 0\n },\n hour: {\n name: 'hour',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3600,\n offset: 0\n },\n day: {\n name: 'day',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 86400,\n offset: 0\n },\n week: {\n name: 'week',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 7 * 86400,\n offset: 0\n },\n month: {\n name: 'month',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 2629800,\n // 1/12th of Julian year\n offset: 0\n },\n year: {\n name: 'year',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 31557600,\n // Julian year\n offset: 0\n },\n decade: {\n name: 'decade',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 315576000,\n // Julian decade\n offset: 0\n },\n century: {\n name: 'century',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3155760000,\n // Julian century\n offset: 0\n },\n millennium: {\n name: 'millennium',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 31557600000,\n // Julian millennium\n offset: 0\n },\n // Frequency\n hertz: {\n name: 'Hertz',\n base: BASE_UNITS.FREQUENCY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0,\n reciprocal: true\n },\n Hz: {\n name: 'Hz',\n base: BASE_UNITS.FREQUENCY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0,\n reciprocal: true\n },\n // Angle\n rad: {\n name: 'rad',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n radian: {\n name: 'radian',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // deg = rad / (2*pi) * 360 = rad / 0.017453292519943295769236907684888\n deg: {\n name: 'deg',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n degree: {\n name: 'degree',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // grad = rad / (2*pi) * 400 = rad / 0.015707963267948966192313216916399\n grad: {\n name: 'grad',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n gradian: {\n name: 'gradian',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // cycle = rad / (2*pi) = rad / 6.2831853071795864769252867665793\n cycle: {\n name: 'cycle',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // arcsec = rad / (3600 * (360 / 2 * pi)) = rad / 0.0000048481368110953599358991410235795\n arcsec: {\n name: 'arcsec',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // arcmin = rad / (60 * (360 / 2 * pi)) = rad / 0.00029088820866572159615394846141477\n arcmin: {\n name: 'arcmin',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // Electric current\n A: {\n name: 'A',\n base: BASE_UNITS.CURRENT,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n ampere: {\n name: 'ampere',\n base: BASE_UNITS.CURRENT,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // Temperature\n // K(C) = °C + 273.15\n // K(F) = (°F + 459.67) / 1.8\n // K(R) = °R / 1.8\n K: {\n name: 'K',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1,\n offset: 0\n },\n degC: {\n name: 'degC',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1,\n offset: 273.15\n },\n degF: {\n name: 'degF',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1 / 1.8,\n offset: 459.67\n },\n degR: {\n name: 'degR',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1 / 1.8,\n offset: 0\n },\n kelvin: {\n name: 'kelvin',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1,\n offset: 0\n },\n celsius: {\n name: 'celsius',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1,\n offset: 273.15\n },\n fahrenheit: {\n name: 'fahrenheit',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1 / 1.8,\n offset: 459.67\n },\n rankine: {\n name: 'rankine',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.NONE,\n value: 1 / 1.8,\n offset: 0\n },\n // amount of substance\n mol: {\n name: 'mol',\n base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n mole: {\n name: 'mole',\n base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // luminous intensity\n cd: {\n name: 'cd',\n base: BASE_UNITS.LUMINOUS_INTENSITY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n candela: {\n name: 'candela',\n base: BASE_UNITS.LUMINOUS_INTENSITY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // TODO: units STERADIAN\n // {name: 'sr', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0},\n // {name: 'steradian', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0},\n // Force\n N: {\n name: 'N',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n newton: {\n name: 'newton',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n dyn: {\n name: 'dyn',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.SHORT,\n value: 0.00001,\n offset: 0\n },\n dyne: {\n name: 'dyne',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 0.00001,\n offset: 0\n },\n lbf: {\n name: 'lbf',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 4.4482216152605,\n offset: 0\n },\n poundforce: {\n name: 'poundforce',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 4.4482216152605,\n offset: 0\n },\n kip: {\n name: 'kip',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 4448.2216,\n offset: 0\n },\n kilogramforce: {\n name: 'kilogramforce',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 9.80665,\n offset: 0\n },\n // Energy\n J: {\n name: 'J',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n joule: {\n name: 'joule',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n erg: {\n name: 'erg',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.NONE,\n value: 1e-7,\n offset: 0\n },\n Wh: {\n name: 'Wh',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 3600,\n offset: 0\n },\n BTU: {\n name: 'BTU',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.BTU,\n value: 1055.05585262,\n offset: 0\n },\n eV: {\n name: 'eV',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1.602176565e-19,\n offset: 0\n },\n electronvolt: {\n name: 'electronvolt',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.LONG,\n value: 1.602176565e-19,\n offset: 0\n },\n // Power\n W: {\n name: 'W',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n watt: {\n name: 'watt',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n hp: {\n name: 'hp',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.NONE,\n value: 745.6998715386,\n offset: 0\n },\n // Electrical power units\n VAR: {\n name: 'VAR',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: Complex.I,\n offset: 0\n },\n VA: {\n name: 'VA',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Pressure\n Pa: {\n name: 'Pa',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n psi: {\n name: 'psi',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 6894.75729276459,\n offset: 0\n },\n atm: {\n name: 'atm',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 101325,\n offset: 0\n },\n bar: {\n name: 'bar',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.SHORTLONG,\n value: 100000,\n offset: 0\n },\n torr: {\n name: 'torr',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 133.322,\n offset: 0\n },\n mmHg: {\n name: 'mmHg',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 133.322,\n offset: 0\n },\n mmH2O: {\n name: 'mmH2O',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 9.80665,\n offset: 0\n },\n cmH2O: {\n name: 'cmH2O',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 98.0665,\n offset: 0\n },\n // Electric charge\n coulomb: {\n name: 'coulomb',\n base: BASE_UNITS.ELECTRIC_CHARGE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n C: {\n name: 'C',\n base: BASE_UNITS.ELECTRIC_CHARGE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric capacitance\n farad: {\n name: 'farad',\n base: BASE_UNITS.ELECTRIC_CAPACITANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n F: {\n name: 'F',\n base: BASE_UNITS.ELECTRIC_CAPACITANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric potential\n volt: {\n name: 'volt',\n base: BASE_UNITS.ELECTRIC_POTENTIAL,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n V: {\n name: 'V',\n base: BASE_UNITS.ELECTRIC_POTENTIAL,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric resistance\n ohm: {\n name: 'ohm',\n base: BASE_UNITS.ELECTRIC_RESISTANCE,\n prefixes: PREFIXES.SHORTLONG,\n // Both Mohm and megaohm are acceptable\n value: 1,\n offset: 0\n },\n\n /*\n * Unicode breaks in browsers if charset is not specified\n Ω: {\n name: 'Ω',\n base: BASE_UNITS.ELECTRIC_RESISTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n */\n // Electric inductance\n henry: {\n name: 'henry',\n base: BASE_UNITS.ELECTRIC_INDUCTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n H: {\n name: 'H',\n base: BASE_UNITS.ELECTRIC_INDUCTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric conductance\n siemens: {\n name: 'siemens',\n base: BASE_UNITS.ELECTRIC_CONDUCTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n S: {\n name: 'S',\n base: BASE_UNITS.ELECTRIC_CONDUCTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Magnetic flux\n weber: {\n name: 'weber',\n base: BASE_UNITS.MAGNETIC_FLUX,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n Wb: {\n name: 'Wb',\n base: BASE_UNITS.MAGNETIC_FLUX,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Magnetic flux density\n tesla: {\n name: 'tesla',\n base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n T: {\n name: 'T',\n base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Binary\n b: {\n name: 'b',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_SHORT,\n value: 1,\n offset: 0\n },\n bits: {\n name: 'bits',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_LONG,\n value: 1,\n offset: 0\n },\n B: {\n name: 'B',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_SHORT,\n value: 8,\n offset: 0\n },\n bytes: {\n name: 'bytes',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_LONG,\n value: 8,\n offset: 0\n }\n }; // aliases (formerly plurals)\n\n var ALIASES = {\n meters: 'meter',\n inches: 'inch',\n feet: 'foot',\n yards: 'yard',\n miles: 'mile',\n links: 'link',\n rods: 'rod',\n chains: 'chain',\n angstroms: 'angstrom',\n lt: 'l',\n litres: 'litre',\n liter: 'litre',\n liters: 'litre',\n teaspoons: 'teaspoon',\n tablespoons: 'tablespoon',\n minims: 'minim',\n fluiddrams: 'fluiddram',\n fluidounces: 'fluidounce',\n gills: 'gill',\n cups: 'cup',\n pints: 'pint',\n quarts: 'quart',\n gallons: 'gallon',\n beerbarrels: 'beerbarrel',\n oilbarrels: 'oilbarrel',\n hogsheads: 'hogshead',\n gtts: 'gtt',\n grams: 'gram',\n tons: 'ton',\n tonnes: 'tonne',\n grains: 'grain',\n drams: 'dram',\n ounces: 'ounce',\n poundmasses: 'poundmass',\n hundredweights: 'hundredweight',\n sticks: 'stick',\n lb: 'lbm',\n lbs: 'lbm',\n kips: 'kip',\n kgf: 'kilogramforce',\n acres: 'acre',\n hectares: 'hectare',\n sqfeet: 'sqft',\n sqyard: 'sqyd',\n sqmile: 'sqmi',\n sqmiles: 'sqmi',\n mmhg: 'mmHg',\n mmh2o: 'mmH2O',\n cmh2o: 'cmH2O',\n seconds: 'second',\n secs: 'second',\n minutes: 'minute',\n mins: 'minute',\n hours: 'hour',\n hr: 'hour',\n hrs: 'hour',\n days: 'day',\n weeks: 'week',\n months: 'month',\n years: 'year',\n decades: 'decade',\n centuries: 'century',\n millennia: 'millennium',\n hertz: 'hertz',\n radians: 'radian',\n degrees: 'degree',\n gradians: 'gradian',\n cycles: 'cycle',\n arcsecond: 'arcsec',\n arcseconds: 'arcsec',\n arcminute: 'arcmin',\n arcminutes: 'arcmin',\n BTUs: 'BTU',\n watts: 'watt',\n joules: 'joule',\n amperes: 'ampere',\n coulombs: 'coulomb',\n volts: 'volt',\n ohms: 'ohm',\n farads: 'farad',\n webers: 'weber',\n teslas: 'tesla',\n electronvolts: 'electronvolt',\n moles: 'mole',\n bit: 'bits',\n byte: 'bytes'\n };\n /**\n * Calculate the values for the angle units.\n * Value is calculated as number or BigNumber depending on the configuration\n * @param {{number: 'number' | 'BigNumber'}} config\n */\n\n function calculateAngleValues(config) {\n if (config.number === 'BigNumber') {\n var pi = createPi(_BigNumber);\n UNITS.rad.value = new _BigNumber(1);\n UNITS.deg.value = pi.div(180); // 2 * pi / 360\n\n UNITS.grad.value = pi.div(200); // 2 * pi / 400\n\n UNITS.cycle.value = pi.times(2); // 2 * pi\n\n UNITS.arcsec.value = pi.div(648000); // 2 * pi / 360 / 3600\n\n UNITS.arcmin.value = pi.div(10800); // 2 * pi / 360 / 60\n } else {\n // number\n UNITS.rad.value = 1;\n UNITS.deg.value = Math.PI / 180; // 2 * pi / 360\n\n UNITS.grad.value = Math.PI / 200; // 2 * pi / 400\n\n UNITS.cycle.value = Math.PI * 2; // 2 * pi\n\n UNITS.arcsec.value = Math.PI / 648000; // 2 * pi / 360 / 3600\n\n UNITS.arcmin.value = Math.PI / 10800; // 2 * pi / 360 / 60\n } // copy to the full names of the angles\n\n\n UNITS.radian.value = UNITS.rad.value;\n UNITS.degree.value = UNITS.deg.value;\n UNITS.gradian.value = UNITS.grad.value;\n } // apply the angle values now\n\n\n calculateAngleValues(config);\n\n if (on) {\n // recalculate the values on change of configuration\n on('config', function (curr, prev) {\n if (curr.number !== prev.number) {\n calculateAngleValues(curr);\n }\n });\n }\n /**\n * A unit system is a set of dimensionally independent base units plus a set of derived units, formed by multiplication and division of the base units, that are by convention used with the unit system.\n * A user perhaps could issue a command to select a preferred unit system, or use the default (see below).\n * Auto unit system: The default unit system is updated on the fly anytime a unit is parsed. The corresponding unit in the default unit system is updated, so that answers are given in the same units the user supplies.\n */\n\n\n var UNIT_SYSTEMS = {\n si: {\n // Base units\n NONE: {\n unit: UNIT_NONE,\n prefix: PREFIXES.NONE['']\n },\n LENGTH: {\n unit: UNITS.m,\n prefix: PREFIXES.SHORT['']\n },\n MASS: {\n unit: UNITS.g,\n prefix: PREFIXES.SHORT.k\n },\n TIME: {\n unit: UNITS.s,\n prefix: PREFIXES.SHORT['']\n },\n CURRENT: {\n unit: UNITS.A,\n prefix: PREFIXES.SHORT['']\n },\n TEMPERATURE: {\n unit: UNITS.K,\n prefix: PREFIXES.SHORT['']\n },\n LUMINOUS_INTENSITY: {\n unit: UNITS.cd,\n prefix: PREFIXES.SHORT['']\n },\n AMOUNT_OF_SUBSTANCE: {\n unit: UNITS.mol,\n prefix: PREFIXES.SHORT['']\n },\n ANGLE: {\n unit: UNITS.rad,\n prefix: PREFIXES.SHORT['']\n },\n BIT: {\n unit: UNITS.bits,\n prefix: PREFIXES.SHORT['']\n },\n // Derived units\n FORCE: {\n unit: UNITS.N,\n prefix: PREFIXES.SHORT['']\n },\n ENERGY: {\n unit: UNITS.J,\n prefix: PREFIXES.SHORT['']\n },\n POWER: {\n unit: UNITS.W,\n prefix: PREFIXES.SHORT['']\n },\n PRESSURE: {\n unit: UNITS.Pa,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CHARGE: {\n unit: UNITS.C,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CAPACITANCE: {\n unit: UNITS.F,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_POTENTIAL: {\n unit: UNITS.V,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_RESISTANCE: {\n unit: UNITS.ohm,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_INDUCTANCE: {\n unit: UNITS.H,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CONDUCTANCE: {\n unit: UNITS.S,\n prefix: PREFIXES.SHORT['']\n },\n MAGNETIC_FLUX: {\n unit: UNITS.Wb,\n prefix: PREFIXES.SHORT['']\n },\n MAGNETIC_FLUX_DENSITY: {\n unit: UNITS.T,\n prefix: PREFIXES.SHORT['']\n },\n FREQUENCY: {\n unit: UNITS.Hz,\n prefix: PREFIXES.SHORT['']\n }\n }\n }; // Clone to create the other unit systems\n\n UNIT_SYSTEMS.cgs = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n UNIT_SYSTEMS.cgs.LENGTH = {\n unit: UNITS.m,\n prefix: PREFIXES.SHORT.c\n };\n UNIT_SYSTEMS.cgs.MASS = {\n unit: UNITS.g,\n prefix: PREFIXES.SHORT['']\n };\n UNIT_SYSTEMS.cgs.FORCE = {\n unit: UNITS.dyn,\n prefix: PREFIXES.SHORT['']\n };\n UNIT_SYSTEMS.cgs.ENERGY = {\n unit: UNITS.erg,\n prefix: PREFIXES.NONE['']\n }; // there are wholly 4 unique cgs systems for electricity and magnetism,\n // so let's not worry about it unless somebody complains\n\n UNIT_SYSTEMS.us = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n UNIT_SYSTEMS.us.LENGTH = {\n unit: UNITS.ft,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.MASS = {\n unit: UNITS.lbm,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.TEMPERATURE = {\n unit: UNITS.degF,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.FORCE = {\n unit: UNITS.lbf,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.ENERGY = {\n unit: UNITS.BTU,\n prefix: PREFIXES.BTU['']\n };\n UNIT_SYSTEMS.us.POWER = {\n unit: UNITS.hp,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.PRESSURE = {\n unit: UNITS.psi,\n prefix: PREFIXES.NONE['']\n }; // Add additional unit systems here.\n // Choose a unit system to seed the auto unit system.\n\n UNIT_SYSTEMS.auto = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); // Set the current unit system\n\n var currentUnitSystem = UNIT_SYSTEMS.auto;\n /**\n * Set a unit system for formatting derived units.\n * @param {string} [name] The name of the unit system.\n */\n\n Unit.setUnitSystem = function (name) {\n if (hasOwnProperty(UNIT_SYSTEMS, name)) {\n currentUnitSystem = UNIT_SYSTEMS[name];\n } else {\n throw new Error('Unit system ' + name + ' does not exist. Choices are: ' + Object.keys(UNIT_SYSTEMS).join(', '));\n }\n };\n /**\n * Return the current unit system.\n * @return {string} The current unit system.\n */\n\n\n Unit.getUnitSystem = function () {\n for (var _key in UNIT_SYSTEMS) {\n if (hasOwnProperty(UNIT_SYSTEMS, _key)) {\n if (UNIT_SYSTEMS[_key] === currentUnitSystem) {\n return _key;\n }\n }\n }\n };\n /**\n * Converters to convert from number to an other numeric type like BigNumber\n * or Fraction\n */\n\n\n Unit.typeConverters = {\n BigNumber: function BigNumber(x) {\n return new _BigNumber(x + ''); // stringify to prevent constructor error\n },\n Fraction: function Fraction(x) {\n return new _Fraction(x);\n },\n Complex: function Complex(x) {\n return x;\n },\n number: function number(x) {\n return x;\n }\n };\n /**\n * Retrieve the right convertor function corresponding with the type\n * of provided exampleValue.\n *\n * @param {string} type A string 'number', 'BigNumber', or 'Fraction'\n * In case of an unknown type,\n * @return {Function}\n */\n\n Unit._getNumberConverter = function (type) {\n if (!Unit.typeConverters[type]) {\n throw new TypeError('Unsupported type \"' + type + '\"');\n }\n\n return Unit.typeConverters[type];\n }; // Add dimensions to each built-in unit\n\n\n for (var _key2 in UNITS) {\n if (hasOwnProperty(UNITS, _key2)) {\n var unit = UNITS[_key2];\n unit.dimensions = unit.base.dimensions;\n }\n } // Create aliases\n\n\n for (var _name2 in ALIASES) {\n if (hasOwnProperty(ALIASES, _name2)) {\n var _unit2 = UNITS[ALIASES[_name2]];\n var alias = {};\n\n for (var _key3 in _unit2) {\n if (hasOwnProperty(_unit2, _key3)) {\n alias[_key3] = _unit2[_key3];\n }\n }\n\n alias.name = _name2;\n UNITS[_name2] = alias;\n }\n }\n /**\n * Checks if a character is a valid latin letter (upper or lower case).\n * Note that this function can be overridden, for example to allow support of other alphabets.\n * @param {string} c Tested character\n */\n\n\n Unit.isValidAlpha = function isValidAlpha(c) {\n return /^[a-zA-Z]$/.test(c);\n };\n\n function assertUnitNameIsValid(name) {\n for (var i = 0; i < name.length; i++) {\n c = name.charAt(i);\n\n if (i === 0 && !Unit.isValidAlpha(c)) {\n throw new Error('Invalid unit name (must begin with alpha character): \"' + name + '\"');\n }\n\n if (i > 0 && !(Unit.isValidAlpha(c) || isDigit(c))) {\n throw new Error('Invalid unit name (only alphanumeric characters are allowed): \"' + name + '\"');\n }\n }\n }\n /**\n * Wrapper around createUnitSingle.\n * Example:\n * createUnit({\n * foo: { },\n * bar: {\n * definition: 'kg/foo',\n * aliases: ['ba', 'barr', 'bars'],\n * offset: 200\n * },\n * baz: '4 bar'\n * },\n * {\n * override: true\n * })\n * @param {object} obj Object map. Each key becomes a unit which is defined by its value.\n * @param {object} options\n */\n\n\n Unit.createUnit = function (obj, options) {\n if (typeof obj !== 'object') {\n throw new TypeError(\"createUnit expects first parameter to be of type 'Object'\");\n } // Remove all units and aliases we are overriding\n\n\n if (options && options.override) {\n for (var _key4 in obj) {\n if (hasOwnProperty(obj, _key4)) {\n Unit.deleteUnit(_key4);\n }\n\n if (obj[_key4].aliases) {\n for (var i = 0; i < obj[_key4].aliases.length; i++) {\n Unit.deleteUnit(obj[_key4].aliases[i]);\n }\n }\n }\n } // TODO: traverse multiple times until all units have been added\n\n\n var lastUnit;\n\n for (var _key5 in obj) {\n if (hasOwnProperty(obj, _key5)) {\n lastUnit = Unit.createUnitSingle(_key5, obj[_key5]);\n }\n }\n\n return lastUnit;\n };\n /**\n * Create a user-defined unit and register it with the Unit type.\n * Example:\n * createUnitSingle('knot', '0.514444444 m/s')\n * createUnitSingle('acre', new Unit(43560, 'ft^2'))\n *\n * @param {string} name The name of the new unit. Must be unique. Example: 'knot'\n * @param {string, Unit, Object} definition Definition of the unit in terms\n * of existing units. For example, '0.514444444 m / s'. Can be a Unit, a string,\n * or an Object. If an Object, may have the following properties:\n * - definition {string|Unit} The definition of this unit.\n * - prefixes {string} \"none\", \"short\", \"long\", \"binary_short\", or \"binary_long\".\n * The default is \"none\".\n * - aliases {Array} Array of strings. Example: ['knots', 'kt', 'kts']\n * - offset {Numeric} An offset to apply when converting from the unit. For\n * example, the offset for celsius is 273.15 and the offset for farhenheit\n * is 459.67. Default is 0.\n * - baseName {string} If the unit's dimension does not match that of any other\n * base unit, the name of the newly create base unit. Otherwise, this property\n * has no effect.\n *\n * @param {Object} options (optional) An object containing any of the following\n * properties:\n * - override {boolean} Whether this unit should be allowed to override existing\n * units.\n *\n * @return {Unit}\n */\n\n\n Unit.createUnitSingle = function (name, obj, options) {\n if (typeof obj === 'undefined' || obj === null) {\n obj = {};\n }\n\n if (typeof name !== 'string') {\n throw new TypeError(\"createUnitSingle expects first parameter to be of type 'string'\");\n } // Check collisions with existing units\n\n\n if (hasOwnProperty(UNITS, name)) {\n throw new Error('Cannot create unit \"' + name + '\": a unit with that name already exists');\n } // TODO: Validate name for collisions with other built-in functions (like abs or cos, for example), and for acceptable variable names. For example, '42' is probably not a valid unit. Nor is '%', since it is also an operator.\n\n\n assertUnitNameIsValid(name);\n var defUnit = null; // The Unit from which the new unit will be created.\n\n var aliases = [];\n var offset = 0;\n var definition;\n var prefixes;\n var baseName;\n\n if (obj && obj.type === 'Unit') {\n defUnit = obj.clone();\n } else if (typeof obj === 'string') {\n if (obj !== '') {\n definition = obj;\n }\n } else if (typeof obj === 'object') {\n definition = obj.definition;\n prefixes = obj.prefixes;\n offset = obj.offset;\n baseName = obj.baseName;\n\n if (obj.aliases) {\n aliases = obj.aliases.valueOf(); // aliases could be a Matrix, so convert to Array\n }\n } else {\n throw new TypeError('Cannot create unit \"' + name + '\" from \"' + obj.toString() + '\": expecting \"string\" or \"Unit\" or \"Object\"');\n }\n\n if (aliases) {\n for (var i = 0; i < aliases.length; i++) {\n if (hasOwnProperty(UNITS, aliases[i])) {\n throw new Error('Cannot create alias \"' + aliases[i] + '\": a unit with that name already exists');\n }\n }\n }\n\n if (definition && typeof definition === 'string' && !defUnit) {\n try {\n defUnit = Unit.parse(definition, {\n allowNoUnits: true\n });\n } catch (ex) {\n ex.message = 'Could not create unit \"' + name + '\" from \"' + definition + '\": ' + ex.message;\n throw ex;\n }\n } else if (definition && definition.type === 'Unit') {\n defUnit = definition.clone();\n }\n\n aliases = aliases || [];\n offset = offset || 0;\n\n if (prefixes && prefixes.toUpperCase) {\n prefixes = PREFIXES[prefixes.toUpperCase()] || PREFIXES.NONE;\n } else {\n prefixes = PREFIXES.NONE;\n } // If defUnit is null, it is because the user did not\n // specify a defintion. So create a new base dimension.\n\n\n var newUnit = {};\n\n if (!defUnit) {\n // Add a new base dimension\n baseName = baseName || name + '_STUFF'; // foo --> foo_STUFF, or the essence of foo\n\n if (BASE_DIMENSIONS.indexOf(baseName) >= 0) {\n throw new Error('Cannot create new base unit \"' + name + '\": a base unit with that name already exists (and cannot be overridden)');\n }\n\n BASE_DIMENSIONS.push(baseName); // Push 0 onto existing base units\n\n for (var b in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, b)) {\n BASE_UNITS[b].dimensions[BASE_DIMENSIONS.length - 1] = 0;\n }\n } // Add the new base unit\n\n\n var newBaseUnit = {\n dimensions: []\n };\n\n for (var _i6 = 0; _i6 < BASE_DIMENSIONS.length; _i6++) {\n newBaseUnit.dimensions[_i6] = 0;\n }\n\n newBaseUnit.dimensions[BASE_DIMENSIONS.length - 1] = 1;\n newBaseUnit.key = baseName;\n BASE_UNITS[baseName] = newBaseUnit;\n newUnit = {\n name: name,\n value: 1,\n dimensions: BASE_UNITS[baseName].dimensions.slice(0),\n prefixes: prefixes,\n offset: offset,\n base: BASE_UNITS[baseName]\n };\n currentUnitSystem[baseName] = {\n unit: newUnit,\n prefix: PREFIXES.NONE['']\n };\n } else {\n newUnit = {\n name: name,\n value: defUnit.value,\n dimensions: defUnit.dimensions.slice(0),\n prefixes: prefixes,\n offset: offset\n }; // Create a new base if no matching base exists\n\n var anyMatch = false;\n\n for (var _i7 in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, _i7)) {\n var match = true;\n\n for (var j = 0; j < BASE_DIMENSIONS.length; j++) {\n if (Math.abs((newUnit.dimensions[j] || 0) - (BASE_UNITS[_i7].dimensions[j] || 0)) > 1e-12) {\n match = false;\n break;\n }\n }\n\n if (match) {\n anyMatch = true;\n newUnit.base = BASE_UNITS[_i7];\n break;\n }\n }\n }\n\n if (!anyMatch) {\n baseName = baseName || name + '_STUFF'; // foo --> foo_STUFF, or the essence of foo\n // Add the new base unit\n\n var _newBaseUnit = {\n dimensions: defUnit.dimensions.slice(0)\n };\n _newBaseUnit.key = baseName;\n BASE_UNITS[baseName] = _newBaseUnit;\n currentUnitSystem[baseName] = {\n unit: newUnit,\n prefix: PREFIXES.NONE['']\n };\n newUnit.base = BASE_UNITS[baseName];\n }\n }\n\n Unit.UNITS[name] = newUnit;\n\n for (var _i8 = 0; _i8 < aliases.length; _i8++) {\n var aliasName = aliases[_i8];\n var _alias = {};\n\n for (var _key6 in newUnit) {\n if (hasOwnProperty(newUnit, _key6)) {\n _alias[_key6] = newUnit[_key6];\n }\n }\n\n _alias.name = aliasName;\n Unit.UNITS[aliasName] = _alias;\n } // delete the memoization cache, since adding a new unit to the array\n // invalidates all old results\n\n\n delete _findUnit.cache;\n return new Unit(null, name);\n };\n\n Unit.deleteUnit = function (name) {\n delete Unit.UNITS[name];\n }; // expose arrays with prefixes, dimensions, units, systems\n\n\n Unit.PREFIXES = PREFIXES;\n Unit.BASE_DIMENSIONS = BASE_DIMENSIONS;\n Unit.BASE_UNITS = BASE_UNITS;\n Unit.UNIT_SYSTEMS = UNIT_SYSTEMS;\n Unit.UNITS = UNITS;\n return Unit;\n}, {\n isClass: true\n});","import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'unit';\nvar dependencies = ['typed', 'Unit']; // This function is named createUnitFunction to prevent a naming conflict with createUnit\n\nexport var createUnitFunction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Unit\n } = _ref;\n\n /**\n * Create a unit. Depending on the passed arguments, the function\n * will create and return a new math.Unit object.\n * When a matrix is provided, all elements will be converted to units.\n *\n * Syntax:\n *\n * math.unit(unit : string)\n * math.unit(value : number, unit : string)\n *\n * Examples:\n *\n * const a = math.unit(5, 'cm') // returns Unit 50 mm\n * const b = math.unit('23 kg') // returns Unit 23 kg\n * a.to('m') // returns Unit 0.05 m\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, number, string, createUnit\n *\n * @param {* | Array | Matrix} args A number and unit.\n * @return {Unit | Array | Matrix} The created unit\n */\n return typed(name, {\n Unit: function Unit(x) {\n return x.clone();\n },\n string: function string(x) {\n if (Unit.isValuelessUnit(x)) {\n return new Unit(null, x); // a pure unit\n }\n\n return Unit.parse(x, {\n allowNoUnits: true\n }); // a unit with value, like '5cm'\n },\n 'number | BigNumber | Fraction | Complex, string': function numberBigNumberFractionComplexString(value, unit) {\n return new Unit(value, unit);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'sparse';\nvar dependencies = ['typed', 'SparseMatrix'];\nexport var createSparse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n SparseMatrix\n } = _ref;\n\n /**\n * Create a Sparse Matrix. The function creates a new `math.Matrix` object from\n * an `Array`. A Matrix has utility functions to manipulate the data in the\n * matrix, like getting the size and getting or setting values in the matrix.\n *\n * Syntax:\n *\n * math.sparse() // creates an empty sparse matrix.\n * math.sparse(data) // creates a sparse matrix with initial data.\n * math.sparse(data, 'number') // creates a sparse matrix with initial data, number datatype.\n *\n * Examples:\n *\n * let m = math.sparse([[1, 2], [3, 4]])\n * m.size() // Array [2, 2]\n * m.resize([3, 2], 5)\n * m.valueOf() // Array [[1, 2], [3, 4], [5, 5]]\n * m.get([1, 0]) // number 3\n *\n * See also:\n *\n * bignumber, boolean, complex, index, number, string, unit, matrix\n *\n * @param {Array | Matrix} [data] A two dimensional array\n *\n * @return {Matrix} The created matrix\n */\n return typed(name, {\n '': function _() {\n return new SparseMatrix([]);\n },\n string: function string(datatype) {\n return new SparseMatrix([], datatype);\n },\n 'Array | Matrix': function ArrayMatrix(data) {\n return new SparseMatrix(data);\n },\n 'Array | Matrix, string': function ArrayMatrixString(data, datatype) {\n return new SparseMatrix(data, datatype);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'createUnit';\nvar dependencies = ['typed', 'Unit'];\nexport var createCreateUnit = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Unit\n } = _ref;\n\n /**\n * Create a user-defined unit and register it with the Unit type.\n *\n * Syntax:\n *\n * math.createUnit({\n * baseUnit1: {\n * aliases: [string, ...]\n * prefixes: object\n * },\n * unit2: {\n * definition: string,\n * aliases: [string, ...]\n * prefixes: object,\n * offset: number\n * },\n * unit3: string // Shortcut\n * })\n *\n * // Another shortcut:\n * math.createUnit(string, unit : string, [object])\n *\n * Examples:\n *\n * math.createUnit('foo')\n * math.createUnit('knot', {definition: '0.514444444 m/s', aliases: ['knots', 'kt', 'kts']})\n * math.createUnit('mph', '1 mile/hour')\n *\n * @param {string} name The name of the new unit. Must be unique. Example: 'knot'\n * @param {string, Unit} definition Definition of the unit in terms of existing units. For example, '0.514444444 m / s'.\n * @param {Object} options (optional) An object containing any of the following properties:\n * - `prefixes {string}` \"none\", \"short\", \"long\", \"binary_short\", or \"binary_long\". The default is \"none\".\n * - `aliases {Array}` Array of strings. Example: ['knots', 'kt', 'kts']\n * - `offset {Numeric}` An offset to apply when converting from the unit. For example, the offset for celsius is 273.15. Default is 0.\n *\n * See also:\n *\n * unit\n *\n * @return {Unit} The new unit\n */\n return typed(name, {\n // General function signature. First parameter is an object where each property is the definition of a new unit. The object keys are the unit names and the values are the definitions. The values can be objects, strings, or Units. If a property is an empty object or an empty string, a new base unit is created. The second parameter is the options.\n 'Object, Object': function ObjectObject(obj, options) {\n return Unit.createUnit(obj, options);\n },\n // Same as above but without the options.\n Object: function Object(obj) {\n return Unit.createUnit(obj, {});\n },\n // Shortcut method for creating one unit.\n 'string, Unit | string | Object, Object': function stringUnitStringObjectObject(name, def, options) {\n var obj = {};\n obj[name] = def;\n return Unit.createUnit(obj, options);\n },\n // Same as above but without the options.\n 'string, Unit | string | Object': function stringUnitStringObject(name, def) {\n var obj = {};\n obj[name] = def;\n return Unit.createUnit(obj, {});\n },\n // Without a definition, creates a base unit.\n string: function string(name) {\n var obj = {};\n obj[name] = {};\n return Unit.createUnit(obj, {});\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'acos';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAcos = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n\n /**\n * Calculate the inverse cosine of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acos(x)\n *\n * Examples:\n *\n * math.acos(0.5) // returns number 1.0471975511965979\n * math.acos(math.cos(1.5)) // returns number 1.5\n *\n * math.acos(2) // returns Complex 0 + 1.3169578969248166 i\n *\n * See also:\n *\n * cos, atan, asin\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} The arc cosine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 && x <= 1 || config.predictable) {\n return Math.acos(x);\n } else {\n return new Complex(x, 0).acos();\n }\n },\n Complex: function Complex(x) {\n return x.acos();\n },\n BigNumber: function BigNumber(x) {\n return x.acos();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { acosh, asinh, atanh, cosh, sign, sinh, tanh } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function acosNumber(x) {\n return Math.acos(x);\n}\nacosNumber.signature = n1;\nexport function acoshNumber(x) {\n return acosh(x);\n}\nacoshNumber.signature = n1;\nexport function acotNumber(x) {\n return Math.atan(1 / x);\n}\nacotNumber.signature = n1;\nexport function acothNumber(x) {\n return isFinite(x) ? (Math.log((x + 1) / x) + Math.log(x / (x - 1))) / 2 : 0;\n}\nacothNumber.signature = n1;\nexport function acscNumber(x) {\n return Math.asin(1 / x);\n}\nacscNumber.signature = n1;\nexport function acschNumber(x) {\n var xInv = 1 / x;\n return Math.log(xInv + Math.sqrt(xInv * xInv + 1));\n}\nacschNumber.signature = n1;\nexport function asecNumber(x) {\n return Math.acos(1 / x);\n}\nasecNumber.signature = n1;\nexport function asechNumber(x) {\n var xInv = 1 / x;\n var ret = Math.sqrt(xInv * xInv - 1);\n return Math.log(ret + xInv);\n}\nasechNumber.signature = n1;\nexport function asinNumber(x) {\n return Math.asin(x);\n}\nasinNumber.signature = n1;\nexport function asinhNumber(x) {\n return asinh(x);\n}\nasinhNumber.signature = n1;\nexport function atanNumber(x) {\n return Math.atan(x);\n}\natanNumber.signature = n1;\nexport function atan2Number(y, x) {\n return Math.atan2(y, x);\n}\natan2Number.signature = n2;\nexport function atanhNumber(x) {\n return atanh(x);\n}\natanhNumber.signature = n1;\nexport function cosNumber(x) {\n return Math.cos(x);\n}\ncosNumber.signature = n1;\nexport function coshNumber(x) {\n return cosh(x);\n}\ncoshNumber.signature = n1;\nexport function cotNumber(x) {\n return 1 / Math.tan(x);\n}\ncotNumber.signature = n1;\nexport function cothNumber(x) {\n var e = Math.exp(2 * x);\n return (e + 1) / (e - 1);\n}\ncothNumber.signature = n1;\nexport function cscNumber(x) {\n return 1 / Math.sin(x);\n}\ncscNumber.signature = n1;\nexport function cschNumber(x) {\n // consider values close to zero (+/-)\n if (x === 0) {\n return Number.POSITIVE_INFINITY;\n } else {\n return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x);\n }\n}\ncschNumber.signature = n1;\nexport function secNumber(x) {\n return 1 / Math.cos(x);\n}\nsecNumber.signature = n1;\nexport function sechNumber(x) {\n return 2 / (Math.exp(x) + Math.exp(-x));\n}\nsechNumber.signature = n1;\nexport function sinNumber(x) {\n return Math.sin(x);\n}\nsinNumber.signature = n1;\nexport function sinhNumber(x) {\n return sinh(x);\n}\nsinhNumber.signature = n1;\nexport function tanNumber(x) {\n return Math.tan(x);\n}\ntanNumber.signature = n1;\nexport function tanhNumber(x) {\n return tanh(x);\n}\ntanhNumber.signature = n1;","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { acoshNumber } from '../../plain/number/index.js';\nvar name = 'acosh';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAcosh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n\n /**\n * Calculate the hyperbolic arccos of a value,\n * defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acosh(x)\n *\n * Examples:\n *\n * math.acosh(1.5) // returns 0.9624236501192069\n *\n * See also:\n *\n * cosh, asinh, atanh\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic arccosine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 1 || config.predictable) {\n return acoshNumber(x);\n }\n\n if (x <= -1) {\n return new Complex(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);\n }\n\n return new Complex(x, 0).acosh();\n },\n Complex: function Complex(x) {\n return x.acosh();\n },\n BigNumber: function BigNumber(x) {\n return x.acosh();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { acotNumber } from '../../plain/number/index.js';\nvar name = 'acot';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createAcot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the inverse cotangent of a value, defined as `acot(x) = atan(1/x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acot(x)\n *\n * Examples:\n *\n * math.acot(0.5) // returns number 0.4636476090008061\n * math.acot(math.cot(1.5)) // returns number 1.5\n *\n * math.acot(2) // returns Complex 1.5707963267948966 -1.3169578969248166 i\n *\n * See also:\n *\n * cot, atan\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} The arc cotangent of x\n */\n return typed(name, {\n number: acotNumber,\n Complex: function Complex(x) {\n return x.acot();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).atan();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { acothNumber } from '../../plain/number/index.js';\nvar name = 'acoth';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAcoth = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the hyperbolic arccotangent of a value,\n * defined as `acoth(x) = atanh(1/x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acoth(x)\n *\n * Examples:\n *\n * math.acoth(0.5) // returns 0.8047189562170503\n *\n * See also:\n *\n * acsch, asech\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic arccotangent of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 1 || x <= -1 || config.predictable) {\n return acothNumber(x);\n }\n\n return new Complex(x, 0).acoth();\n },\n Complex: function Complex(x) {\n return x.acoth();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).atanh();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { acscNumber } from '../../plain/number/index.js';\nvar name = 'acsc';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAcsc = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the inverse cosecant of a value, defined as `acsc(x) = asin(1/x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acsc(x)\n *\n * Examples:\n *\n * math.acsc(0.5) // returns number 0.5235987755982989\n * math.acsc(math.csc(1.5)) // returns number ~1.5\n *\n * math.acsc(2) // returns Complex 1.5707963267948966 -1.3169578969248166 i\n *\n * See also:\n *\n * csc, asin, asec\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} The arc cosecant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= -1 || x >= 1 || config.predictable) {\n return acscNumber(x);\n }\n\n return new Complex(x, 0).acsc();\n },\n Complex: function Complex(x) {\n return x.acsc();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).asin();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { acschNumber } from '../../plain/number/index.js';\nvar name = 'acsch';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createAcsch = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the hyperbolic arccosecant of a value,\n * defined as `acsch(x) = asinh(1/x) = ln(1/x + sqrt(1/x^2 + 1))`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acsch(x)\n *\n * Examples:\n *\n * math.acsch(0.5) // returns 1.4436354751788103\n *\n * See also:\n *\n * asech, acoth\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic arccosecant of x\n */\n return typed(name, {\n number: acschNumber,\n Complex: function Complex(x) {\n return x.acsch();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).asinh();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { asecNumber } from '../../plain/number/index.js';\nvar name = 'asec';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAsec = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the inverse secant of a value. Defined as `asec(x) = acos(1/x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.asec(x)\n *\n * Examples:\n *\n * math.asec(0.5) // returns 1.0471975511965979\n * math.asec(math.sec(1.5)) // returns 1.5\n *\n * math.asec(2) // returns 0 + 1.3169578969248166 i\n *\n * See also:\n *\n * acos, acot, acsc\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} The arc secant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= -1 || x >= 1 || config.predictable) {\n return asecNumber(x);\n }\n\n return new Complex(x, 0).asec();\n },\n Complex: function Complex(x) {\n return x.asec();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).acos();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { asechNumber } from '../../plain/number/index.js';\nvar name = 'asech';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAsech = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the hyperbolic arcsecant of a value,\n * defined as `asech(x) = acosh(1/x) = ln(sqrt(1/x^2 - 1) + 1/x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.asech(x)\n *\n * Examples:\n *\n * math.asech(0.5) // returns 1.3169578969248166\n *\n * See also:\n *\n * acsch, acoth\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic arcsecant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 1 && x >= -1 || config.predictable) {\n var xInv = 1 / x;\n\n if (xInv > 0 || config.predictable) {\n return asechNumber(x);\n }\n\n var ret = Math.sqrt(xInv * xInv - 1);\n return new Complex(Math.log(ret - xInv), Math.PI);\n }\n\n return new Complex(x, 0).asech();\n },\n Complex: function Complex(x) {\n return x.asech();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).acosh();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'asin';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAsin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n\n /**\n * Calculate the inverse sine of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.asin(x)\n *\n * Examples:\n *\n * math.asin(0.5) // returns number 0.5235987755982989\n * math.asin(math.sin(1.5)) // returns number ~1.5\n *\n * math.asin(2) // returns Complex 1.5707963267948966 -1.3169578969248166 i\n *\n * See also:\n *\n * sin, atan, acos\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} The arc sine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 && x <= 1 || config.predictable) {\n return Math.asin(x);\n } else {\n return new Complex(x, 0).asin();\n }\n },\n Complex: function Complex(x) {\n return x.asin();\n },\n BigNumber: function BigNumber(x) {\n return x.asin();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since asin(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { asinhNumber } from '../../plain/number/index.js';\nvar name = 'asinh';\nvar dependencies = ['typed'];\nexport var createAsinh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the hyperbolic arcsine of a value,\n * defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.asinh(x)\n *\n * Examples:\n *\n * math.asinh(0.5) // returns 0.48121182505960347\n *\n * See also:\n *\n * acosh, atanh\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic arcsine of x\n */\n return typed('asinh', {\n number: asinhNumber,\n Complex: function Complex(x) {\n return x.asinh();\n },\n BigNumber: function BigNumber(x) {\n return x.asinh();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since asinh(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'atan';\nvar dependencies = ['typed'];\nexport var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the inverse tangent of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.atan(x)\n *\n * Examples:\n *\n * math.atan(0.5) // returns number 0.4636476090008061\n * math.atan(math.tan(1.5)) // returns number 1.5\n *\n * math.atan(2) // returns Complex 1.5707963267948966 -1.3169578969248166 i\n *\n * See also:\n *\n * tan, asin, acos\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} The arc tangent of x\n */\n return typed('atan', {\n number: function number(x) {\n return Math.atan(x);\n },\n Complex: function Complex(x) {\n return x.atan();\n },\n BigNumber: function BigNumber(x) {\n return x.atan();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since atan(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';\nimport { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';\nimport { createAlgorithm09 } from '../../type/matrix/utils/algorithm09.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'atan2';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix'];\nexport var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber,\n DenseMatrix\n } = _ref;\n var algorithm02 = createAlgorithm02({\n typed,\n equalScalar\n });\n var algorithm03 = createAlgorithm03({\n typed\n });\n var algorithm09 = createAlgorithm09({\n typed,\n equalScalar\n });\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm12 = createAlgorithm12({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Calculate the inverse tangent function with two arguments, y/x.\n * By providing two arguments, the right quadrant of the computed angle can be\n * determined.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.atan2(y, x)\n *\n * Examples:\n *\n * math.atan2(2, 2) / math.pi // returns number 0.25\n *\n * const angle = math.unit(60, 'deg') // returns Unit 60 deg\n * const x = math.cos(angle)\n * const y = math.sin(angle)\n *\n * math.atan(2) // returns Complex 1.5707963267948966 -1.3169578969248166 i\n *\n * See also:\n *\n * tan, atan, sin, cos\n *\n * @param {number | Array | Matrix} y Second dimension\n * @param {number | Array | Matrix} x First dimension\n * @return {number | Array | Matrix} Four-quadrant inverse tangent\n */\n\n return typed(name, {\n 'number, number': Math.atan2,\n // Complex numbers doesn't seem to have a reasonable implementation of\n // atan2(). Even Matlab removed the support, after they only calculated\n // the atan only on base of the real part of the numbers and ignored the imaginary.\n 'BigNumber, BigNumber': function BigNumberBigNumber(y, x) {\n return BigNumber.atan2(y, x);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm09(x, y, this, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n // mind the order of y and x!\n return algorithm02(y, x, this, true);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm03(x, y, this, false);\n },\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, this);\n },\n 'Array, Array': function ArrayArray(x, y) {\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n return this(x, matrix(y));\n },\n 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {\n return algorithm11(x, y, this, false);\n },\n 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {\n return algorithm14(x, y, this, false);\n },\n 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {\n // mind the order of y and x\n return algorithm12(y, x, this, true);\n },\n 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {\n // mind the order of y and x\n return algorithm14(y, x, this, true);\n },\n 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {\n return algorithm14(matrix(x), y, this, false).valueOf();\n },\n 'number | BigNumber, Array': function numberBigNumberArray(x, y) {\n return algorithm14(matrix(y), x, this, true).valueOf();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { atanhNumber } from '../../plain/number/index.js';\nvar name = 'atanh';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAtanh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n\n /**\n * Calculate the hyperbolic arctangent of a value,\n * defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.atanh(x)\n *\n * Examples:\n *\n * math.atanh(0.5) // returns 0.5493061443340549\n *\n * See also:\n *\n * acosh, asinh\n *\n * @param {number | Complex | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic arctangent of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 1 && x >= -1 || config.predictable) {\n return atanhNumber(x);\n }\n\n return new Complex(x, 0).atanh();\n },\n Complex: function Complex(x) {\n return x.atanh();\n },\n BigNumber: function BigNumber(x) {\n return x.atanh();\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since atanh(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'cos';\nvar dependencies = ['typed'];\nexport var createCos = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the cosine of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.cos(x)\n *\n * Examples:\n *\n * math.cos(2) // returns number -0.4161468365471422\n * math.cos(math.pi / 4) // returns number 0.7071067811865475\n * math.cos(math.unit(180, 'deg')) // returns number -1\n * math.cos(math.unit(60, 'deg')) // returns number 0.5\n *\n * const angle = 0.2\n * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1\n *\n * See also:\n *\n * cos, tan\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} Cosine of x\n */\n return typed(name, {\n number: Math.cos,\n Complex: function Complex(x) {\n return x.cos();\n },\n BigNumber: function BigNumber(x) {\n return x.cos();\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function cos is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cosh as coshNumber } from '../../utils/number.js';\nvar name = 'cosh';\nvar dependencies = ['typed'];\nexport var createCosh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the hyperbolic cosine of a value,\n * defined as `cosh(x) = 1/2 * (exp(x) + exp(-x))`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.cosh(x)\n *\n * Examples:\n *\n * math.cosh(0.5) // returns number 1.1276259652063807\n *\n * See also:\n *\n * sinh, tanh\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic cosine of x\n */\n return typed(name, {\n number: coshNumber,\n Complex: function Complex(x) {\n return x.cosh();\n },\n BigNumber: function BigNumber(x) {\n return x.cosh();\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function cosh is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cotNumber } from '../../plain/number/index.js';\nvar name = 'cot';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the cotangent of a value. Defined as `cot(x) = 1 / tan(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.cot(x)\n *\n * Examples:\n *\n * math.cot(2) // returns number -0.45765755436028577\n * 1 / math.tan(2) // returns number -0.45765755436028577\n *\n * See also:\n *\n * tan, sec, csc\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Cotangent of x\n */\n return typed(name, {\n number: cotNumber,\n Complex: function Complex(x) {\n return x.cot();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x.tan());\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function cot is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cothNumber } from '../../plain/number/index.js';\nvar name = 'coth';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCoth = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the hyperbolic cotangent of a value,\n * defined as `coth(x) = 1 / tanh(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.coth(x)\n *\n * Examples:\n *\n * // coth(x) = 1 / tanh(x)\n * math.coth(2) // returns 1.0373147207275482\n * 1 / math.tanh(2) // returns 1.0373147207275482\n *\n * See also:\n *\n * sinh, tanh, cosh\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic cotangent of x\n */\n return typed(name, {\n number: cothNumber,\n Complex: function Complex(x) {\n return x.coth();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x.tanh());\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function coth is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cscNumber } from '../../plain/number/index.js';\nvar name = 'csc';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCsc = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the cosecant of a value, defined as `csc(x) = 1/sin(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.csc(x)\n *\n * Examples:\n *\n * math.csc(2) // returns number 1.099750170294617\n * 1 / math.sin(2) // returns number 1.099750170294617\n *\n * See also:\n *\n * sin, sec, cot\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Cosecant of x\n */\n return typed(name, {\n number: cscNumber,\n Complex: function Complex(x) {\n return x.csc();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x.sin());\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function csc is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { cschNumber } from '../../plain/number/index.js';\nvar name = 'csch';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCsch = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the hyperbolic cosecant of a value,\n * defined as `csch(x) = 1 / sinh(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.csch(x)\n *\n * Examples:\n *\n * // csch(x) = 1/ sinh(x)\n * math.csch(0.5) // returns 1.9190347513349437\n * 1 / math.sinh(0.5) // returns 1.9190347513349437\n *\n * See also:\n *\n * sinh, sech, coth\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic cosecant of x\n */\n return typed(name, {\n number: cschNumber,\n Complex: function Complex(x) {\n return x.csch();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x.sinh());\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function csch is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { secNumber } from '../../plain/number/index.js';\nvar name = 'sec';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createSec = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the secant of a value, defined as `sec(x) = 1/cos(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sec(x)\n *\n * Examples:\n *\n * math.sec(2) // returns number -2.4029979617223822\n * 1 / math.cos(2) // returns number -2.4029979617223822\n *\n * See also:\n *\n * cos, csc, cot\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Secant of x\n */\n return typed(name, {\n number: secNumber,\n Complex: function Complex(x) {\n return x.sec();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x.cos());\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function sec is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { sechNumber } from '../../plain/number/index.js';\nvar name = 'sech';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createSech = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n\n /**\n * Calculate the hyperbolic secant of a value,\n * defined as `sech(x) = 1 / cosh(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sech(x)\n *\n * Examples:\n *\n * // sech(x) = 1/ cosh(x)\n * math.sech(0.5) // returns 0.886818883970074\n * 1 / math.cosh(0.5) // returns 0.886818883970074\n *\n * See also:\n *\n * cosh, csch, coth\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Hyperbolic secant of x\n */\n return typed(name, {\n number: sechNumber,\n Complex: function Complex(x) {\n return x.sech();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x.cosh());\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function sech is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n return deepMap(x, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'sin';\nvar dependencies = ['typed'];\nexport var createSin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the sine of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sin(x)\n *\n * Examples:\n *\n * math.sin(2) // returns number 0.9092974268256813\n * math.sin(math.pi / 4) // returns number 0.7071067811865475\n * math.sin(math.unit(90, 'deg')) // returns number 1\n * math.sin(math.unit(30, 'deg')) // returns number 0.5\n *\n * const angle = 0.2\n * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1\n *\n * See also:\n *\n * cos, tan\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} Sine of x\n */\n return typed(name, {\n number: Math.sin,\n Complex: function Complex(x) {\n return x.sin();\n },\n BigNumber: function BigNumber(x) {\n return x.sin();\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function sin is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since sin(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { sinhNumber } from '../../plain/number/index.js';\nvar name = 'sinh';\nvar dependencies = ['typed'];\nexport var createSinh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the hyperbolic sine of a value,\n * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sinh(x)\n *\n * Examples:\n *\n * math.sinh(0.5) // returns number 0.5210953054937474\n *\n * See also:\n *\n * cosh, tanh\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x\n */\n return typed(name, {\n number: sinhNumber,\n Complex: function Complex(x) {\n return x.sinh();\n },\n BigNumber: function BigNumber(x) {\n return x.sinh();\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function sinh is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since sinh(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'tan';\nvar dependencies = ['typed'];\nexport var createTan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the tangent of a value. `tan(x)` is equal to `sin(x) / cos(x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.tan(x)\n *\n * Examples:\n *\n * math.tan(0.5) // returns number 0.5463024898437905\n * math.sin(0.5) / math.cos(0.5) // returns number 0.5463024898437905\n * math.tan(math.pi / 4) // returns number 1\n * math.tan(math.unit(45, 'deg')) // returns number 1\n *\n * See also:\n *\n * atan, sin, cos\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} Tangent of x\n */\n return typed(name, {\n number: Math.tan,\n Complex: function Complex(x) {\n return x.tan();\n },\n BigNumber: function BigNumber(x) {\n return x.tan();\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function tan is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since tan(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { tanh as _tanh } from '../../utils/number.js';\nvar name = 'tanh';\nvar dependencies = ['typed'];\nexport var createTanh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Calculate the hyperbolic tangent of a value,\n * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.tanh(x)\n *\n * Examples:\n *\n * // tanh(x) = sinh(x) / cosh(x) = 1 / coth(x)\n * math.tanh(0.5) // returns 0.46211715726000974\n * math.sinh(0.5) / math.cosh(0.5) // returns 0.46211715726000974\n * 1 / math.coth(0.5) // returns 0.46211715726000974\n *\n * See also:\n *\n * sinh, cosh, coth\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input\n * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x\n */\n return typed('tanh', {\n number: _tanh,\n Complex: function Complex(x) {\n return x.tanh();\n },\n BigNumber: function BigNumber(x) {\n return x.tanh();\n },\n Unit: function Unit(x) {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function tanh is no angle');\n }\n\n return this(x.value);\n },\n 'Array | Matrix': function ArrayMatrix(x) {\n // deep map collection, skip zeros since tanh(0) = 0\n return deepMap(x, this, true);\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setCartesian';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetCartesian = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n\n /**\n * Create the cartesian product of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays\n * and the values will be sorted in ascending order before the operation.\n *\n * Syntax:\n *\n * math.setCartesian(set1, set2)\n *\n * Examples:\n *\n * math.setCartesian([1, 2], [3, 4]) // returns [[1, 3], [1, 4], [2, 3], [2, 4]]\n * math.setCartesian([4, 3], [2, 1]) // returns [[3, 1], [3, 2], [4, 1], [4, 2]]\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference, setPowerset\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The cartesian product of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {\n var result = [];\n\n if (subset(size(a1), new Index(0)) !== 0 && subset(size(a2), new Index(0)) !== 0) {\n // if any of them is empty, return empty\n var b1 = flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural);\n var b2 = flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural);\n result = [];\n\n for (var i = 0; i < b1.length; i++) {\n for (var j = 0; j < b2.length; j++) {\n result.push([b1[i], b2[j]]);\n }\n }\n } // return an array, if both inputs were arrays\n\n\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return result;\n } // return a matrix otherwise\n\n\n return new DenseMatrix(result);\n }\n });\n});","import { flatten, generalize, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setDifference';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetDifference = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n\n /**\n * Create the difference of two (multi)sets: every element of set1, that is not the element of set2.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setDifference(set1, set2)\n *\n * Examples:\n *\n * math.setDifference([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2]\n * math.setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2]\n *\n * See also:\n *\n * setUnion, setIntersect, setSymDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The difference of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {\n var result;\n\n if (subset(size(a1), new Index(0)) === 0) {\n // empty-anything=empty\n result = [];\n } else if (subset(size(a2), new Index(0)) === 0) {\n // anything-empty=anything\n return flatten(a1.toArray());\n } else {\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n result = [];\n var inb2;\n\n for (var i = 0; i < b1.length; i++) {\n inb2 = false;\n\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n inb2 = true;\n break;\n }\n }\n\n if (!inb2) {\n result.push(b1[i]);\n }\n }\n } // return an array, if both inputs were arrays\n\n\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return generalize(result);\n } // return a matrix otherwise\n\n\n return new DenseMatrix(generalize(result));\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setDistinct';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetDistinct = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n\n /**\n * Collect the distinct elements of a multiset.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setDistinct(set)\n *\n * Examples:\n *\n * math.setDistinct([1, 1, 1, 2, 2, 3]) // returns [1, 2, 3]\n *\n * See also:\n *\n * setMultiplicity\n *\n * @param {Array | Matrix} a A multiset\n * @return {Array | Matrix} A set containing the distinc elements of the multiset\n */\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(a) {\n var result;\n\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return empty\n result = [];\n } else {\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n result = [];\n result.push(b[0]);\n\n for (var i = 1; i < b.length; i++) {\n if (compareNatural(b[i], b[i - 1]) !== 0) {\n result.push(b[i]);\n }\n }\n } // return an array, if the input was an array\n\n\n if (Array.isArray(a)) {\n return result;\n } // return a matrix otherwise\n\n\n return new DenseMatrix(result);\n }\n });\n});","import { flatten, generalize, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setIntersect';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n\n /**\n * Create the intersection of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setIntersect(set1, set2)\n *\n * Examples:\n *\n * math.setIntersect([1, 2, 3, 4], [3, 4, 5, 6]) // returns [3, 4]\n * math.setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [3, 4]\n *\n * See also:\n *\n * setUnion, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The intersection of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {\n var result;\n\n if (subset(size(a1), new Index(0)) === 0 || subset(size(a2), new Index(0)) === 0) {\n // of any of them is empty, return empty\n result = [];\n } else {\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n result = [];\n\n for (var i = 0; i < b1.length; i++) {\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n result.push(b1[i]);\n break;\n }\n }\n }\n } // return an array, if both inputs were arrays\n\n\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return generalize(result);\n } // return a matrix otherwise\n\n\n return new DenseMatrix(generalize(result));\n }\n });\n});","import { flatten, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setIsSubset';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetIsSubset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n\n /**\n * Check whether a (multi)set is a subset of another (multi)set. (Every element of set1 is the element of set2.)\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setIsSubset(set1, set2)\n *\n * Examples:\n *\n * math.setIsSubset([1, 2], [3, 4, 5, 6]) // returns false\n * math.setIsSubset([3, 4], [3, 4, 5, 6]) // returns true\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {boolean} true | false\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // empty is a subset of anything\n return true;\n } else if (subset(size(a2), new Index(0)) === 0) {\n // anything is not a subset of empty\n return false;\n }\n\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n var inb2;\n\n for (var i = 0; i < b1.length; i++) {\n inb2 = false;\n\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n inb2 = true;\n break;\n }\n }\n\n if (inb2 === false) {\n return false;\n }\n }\n\n return true;\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setMultiplicity';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetMultiplicity = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n\n /**\n * Count the multiplicity of an element in a multiset.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setMultiplicity(element, set)\n *\n * Examples:\n *\n * math.setMultiplicity(1, [1, 2, 2, 4]) // returns 1\n * math.setMultiplicity(2, [1, 2, 2, 4]) // returns 2\n *\n * See also:\n *\n * setDistinct, setSize\n *\n * @param {number | BigNumber | Fraction | Complex} e An element in the multiset\n * @param {Array | Matrix} a A multiset\n * @return {number} The number of how many times the multiset contains the element\n */\n return typed(name, {\n 'number | BigNumber | Fraction | Complex, Array | Matrix': function numberBigNumberFractionComplexArrayMatrix(e, a) {\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return 0\n return 0;\n }\n\n var b = flatten(Array.isArray(a) ? a : a.toArray());\n var count = 0;\n\n for (var i = 0; i < b.length; i++) {\n if (compareNatural(b[i], e) === 0) {\n count++;\n }\n }\n\n return count;\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setPowerset';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetPowerset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n\n /**\n * Create the powerset of a (multi)set. (The powerset contains very possible subsets of a (multi)set.)\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setPowerset(set)\n *\n * Examples:\n *\n * math.setPowerset([1, 2, 3]) // returns [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]\n *\n * See also:\n *\n * setCartesian\n *\n * @param {Array | Matrix} a A (multi)set\n * @return {Array} The powerset of the (multi)set\n */\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(a) {\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return empty\n return [];\n }\n\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n var result = [];\n var number = 0;\n\n while (number.toString(2).length <= b.length) {\n result.push(_subset(b, number.toString(2).split('').reverse()));\n number++;\n } // can not return a matrix, because of the different size of the subarrays\n\n\n return _sort(result);\n }\n }); // create subset\n\n function _subset(array, bitarray) {\n var result = [];\n\n for (var i = 0; i < bitarray.length; i++) {\n if (bitarray[i] === '1') {\n result.push(array[i]);\n }\n }\n\n return result;\n } // sort subsests by length\n\n\n function _sort(array) {\n var temp = [];\n\n for (var i = array.length - 1; i > 0; i--) {\n for (var j = 0; j < i; j++) {\n if (array[j].length > array[j + 1].length) {\n temp = array[j];\n array[j] = array[j + 1];\n array[j + 1] = temp;\n }\n }\n }\n\n return array;\n }\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setSize';\nvar dependencies = ['typed', 'compareNatural'];\nexport var createSetSize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compareNatural\n } = _ref;\n\n /**\n * Count the number of elements of a (multi)set. When a second parameter is 'true', count only the unique values.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setSize(set)\n * math.setSize(set, unique)\n *\n * Examples:\n *\n * math.setSize([1, 2, 2, 4]) // returns 4\n * math.setSize([1, 2, 2, 4], true) // returns 3\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a A multiset\n * @return {number} The number of elements of the (multi)set\n */\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(a) {\n return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;\n },\n 'Array | Matrix, boolean': function ArrayMatrixBoolean(a, unique) {\n if (unique === false || a.length === 0) {\n return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;\n } else {\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n var count = 1;\n\n for (var i = 1; i < b.length; i++) {\n if (compareNatural(b[i], b[i - 1]) !== 0) {\n count++;\n }\n }\n\n return count;\n }\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setSymDifference';\nvar dependencies = ['typed', 'size', 'concat', 'subset', 'setDifference', 'Index'];\nexport var createSetSymDifference = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n concat,\n subset,\n setDifference,\n Index\n } = _ref;\n\n /**\n * Create the symmetric difference of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setSymDifference(set1, set2)\n *\n * Examples:\n *\n * math.setSymDifference([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2, 5, 6]\n * math.setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2, 5, 6]\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The symmetric difference of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // if any of them is empty, return the other one\n return flatten(a2);\n } else if (subset(size(a2), new Index(0)) === 0) {\n return flatten(a1);\n }\n\n var b1 = flatten(a1);\n var b2 = flatten(a2);\n return concat(setDifference(b1, b2), setDifference(b2, b1));\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setUnion';\nvar dependencies = ['typed', 'size', 'concat', 'subset', 'setIntersect', 'setSymDifference', 'Index'];\nexport var createSetUnion = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n concat,\n subset,\n setIntersect,\n setSymDifference,\n Index\n } = _ref;\n\n /**\n * Create the union of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setUnion(set1, set2)\n *\n * Examples:\n *\n * math.setUnion([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2, 3, 4, 5, 6]\n * math.setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2, 3, 4, 5, 6]\n *\n * See also:\n *\n * setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The union of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // if any of them is empty, return the other one\n return flatten(a2);\n } else if (subset(size(a2), new Index(0)) === 0) {\n return flatten(a1);\n }\n\n var b1 = flatten(a1);\n var b2 = flatten(a2);\n return concat(setSymDifference(b1, b2), setIntersect(b1, b2));\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { extend } from '../../utils/object.js';\nimport { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';\nimport { createAlgorithm04 } from '../../type/matrix/utils/algorithm04.js';\nimport { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';\nimport { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'add';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'equalScalar', 'DenseMatrix', 'SparseMatrix'];\nexport var createAdd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n equalScalar,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n var algorithm01 = createAlgorithm01({\n typed\n });\n var algorithm04 = createAlgorithm04({\n typed,\n equalScalar\n });\n var algorithm10 = createAlgorithm10({\n typed,\n DenseMatrix\n });\n var algorithm13 = createAlgorithm13({\n typed\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Add two or more values, `x + y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.add(x, y)\n * math.add(x, y, z, ...)\n *\n * Examples:\n *\n * math.add(2, 3) // returns number 5\n * math.add(2, 3, 4) // returns number 9\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(-4, 1)\n * math.add(a, b) // returns Complex -2 + 4i\n *\n * math.add([1, 2, 3], 4) // returns Array [5, 6, 7]\n *\n * const c = math.unit('5 cm')\n * const d = math.unit('2.1 mm')\n * math.add(c, d) // returns Unit 52.1 mm\n *\n * math.add(\"2.3\", \"4\") // returns number 6.3\n *\n * See also:\n *\n * subtract, sum\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First value to add\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second value to add\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Sum of `x` and `y`\n */\n\n return typed(name, extend({\n // we extend the signatures of addScalar with signatures dealing with matrices\n 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {\n return algorithm13(x, y, addScalar);\n },\n 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {\n return algorithm01(x, y, addScalar, false);\n },\n 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {\n return algorithm01(y, x, addScalar, true);\n },\n 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {\n return algorithm04(x, y, addScalar);\n },\n 'Array, Array': function ArrayArray(x, y) {\n // use matrix implementation\n return this(matrix(x), matrix(y)).valueOf();\n },\n 'Array, Matrix': function ArrayMatrix(x, y) {\n // use matrix implementation\n return this(matrix(x), y);\n },\n 'Matrix, Array': function MatrixArray(x, y) {\n // use matrix implementation\n return this(x, matrix(y));\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, addScalar, false);\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm10(x, y, addScalar, false);\n },\n 'any, DenseMatrix': function anyDenseMatrix(x, y) {\n return algorithm14(y, x, addScalar, true);\n },\n 'any, SparseMatrix': function anySparseMatrix(x, y) {\n return algorithm10(y, x, addScalar, true);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, addScalar, false).valueOf();\n },\n 'any, Array': function anyArray(x, y) {\n // use matrix implementation\n return algorithm14(matrix(y), x, addScalar, true).valueOf();\n },\n 'any, any': addScalar,\n 'any, any, ...any': function anyAnyAny(x, y, rest) {\n var result = this(x, y);\n\n for (var i = 0; i < rest.length; i++) {\n result = this(result, rest[i]);\n }\n\n return result;\n }\n }, addScalar.signatures));\n});","import { factory } from '../../utils/factory.js';\nimport { flatten } from '../../utils/array.js';\nvar name = 'hypot';\nvar dependencies = ['typed', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'sqrt', 'smaller', 'isPositive'];\nexport var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n addScalar,\n divideScalar,\n multiplyScalar,\n sqrt,\n smaller,\n isPositive\n } = _ref;\n\n /**\n * Calculate the hypotenusa of a list with values. The hypotenusa is defined as:\n *\n * hypot(a, b, c, ...) = sqrt(a^2 + b^2 + c^2 + ...)\n *\n * For matrix input, the hypotenusa is calculated for all values in the matrix.\n *\n * Syntax:\n *\n * math.hypot(a, b, ...)\n * math.hypot([a, b, c, ...])\n *\n * Examples:\n *\n * math.hypot(3, 4) // 5\n * math.hypot(3, 4, 5) // 7.0710678118654755\n * math.hypot([3, 4, 5]) // 7.0710678118654755\n * math.hypot(-2) // 2\n *\n * See also:\n *\n * abs, norm\n *\n * @param {... number | BigNumber | Array | Matrix} args A list with numeric values or an Array or Matrix.\n * Matrix and Array input is flattened and returns a\n * single number for the whole matrix.\n * @return {number | BigNumber} Returns the hypothenusa of the input values.\n */\n return typed(name, {\n '... number | BigNumber': _hypot,\n Array: function Array(x) {\n return this.apply(this, flatten(x));\n },\n Matrix: function Matrix(x) {\n return this.apply(this, flatten(x.toArray()));\n }\n });\n /**\n * Calculate the hypotenusa for an Array with values\n * @param {Array.} args\n * @return {number | BigNumber} Returns the result\n * @private\n */\n\n function _hypot(args) {\n // code based on `hypot` from es6-shim:\n // https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L1619-L1633\n var result = 0;\n var largest = 0;\n\n for (var i = 0; i < args.length; i++) {\n var value = abs(args[i]);\n\n if (smaller(largest, value)) {\n result = multiplyScalar(result, multiplyScalar(divideScalar(largest, value), divideScalar(largest, value)));\n result = addScalar(result, 1);\n largest = value;\n } else {\n result = addScalar(result, isPositive(value) ? multiplyScalar(divideScalar(value, largest), divideScalar(value, largest)) : value);\n }\n }\n\n return multiplyScalar(largest, sqrt(result));\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'norm';\nvar dependencies = ['typed', 'abs', 'add', 'pow', 'conj', 'sqrt', 'multiply', 'equalScalar', 'larger', 'smaller', 'matrix', 'ctranspose', 'eigs'];\nexport var createNorm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n pow,\n conj,\n sqrt,\n multiply,\n equalScalar,\n larger,\n smaller,\n matrix,\n ctranspose,\n eigs\n } = _ref;\n\n /**\n * Calculate the norm of a number, vector or matrix.\n *\n * The second parameter p is optional. If not provided, it defaults to 2.\n *\n * Syntax:\n *\n * math.norm(x)\n * math.norm(x, p)\n *\n * Examples:\n *\n * math.abs(-3.5) // returns 3.5\n * math.norm(-3.5) // returns 3.5\n *\n * math.norm(math.complex(3, -4)) // returns 5\n *\n * math.norm([1, 2, -3], Infinity) // returns 3\n * math.norm([1, 2, -3], -Infinity) // returns 1\n *\n * math.norm([3, 4], 2) // returns 5\n *\n * math.norm([[1, 2], [3, 4]], 1) // returns 6\n * math.norm([[1, 2], [3, 4]], 'inf') // returns 7\n * math.norm([[1, 2], [3, 4]], 'fro') // returns 5.477225575051661\n *\n * See also:\n *\n * abs, hypot\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the norm\n * @param {number | BigNumber | string} [p=2]\n * Vector space.\n * Supported numbers include Infinity and -Infinity.\n * Supported strings are: 'inf', '-inf', and 'fro' (The Frobenius norm)\n * @return {number | BigNumber} the p-norm\n */\n return typed(name, {\n number: Math.abs,\n Complex: function Complex(x) {\n return x.abs();\n },\n BigNumber: function BigNumber(x) {\n // norm(x) = abs(x)\n return x.abs();\n },\n boolean: function boolean(x) {\n // norm(x) = abs(x)\n return Math.abs(x);\n },\n Array: function Array(x) {\n return _norm(matrix(x), 2);\n },\n Matrix: function Matrix(x) {\n return _norm(x, 2);\n },\n 'number | Complex | BigNumber | boolean, number | BigNumber | string': function numberComplexBigNumberBooleanNumberBigNumberString(x) {\n // ignore second parameter, TODO: remove the option of second parameter for these types\n return this(x);\n },\n 'Array, number | BigNumber | string': function ArrayNumberBigNumberString(x, p) {\n return _norm(matrix(x), p);\n },\n 'Matrix, number | BigNumber | string': function MatrixNumberBigNumberString(x, p) {\n return _norm(x, p);\n }\n });\n /**\n * Calculate the plus infinity norm for a vector\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n\n function _vectorNormPlusInfinity(x) {\n // norm(x, Infinity) = max(abs(x))\n var pinf = 0; // skip zeros since abs(0) === 0\n\n x.forEach(function (value) {\n var v = abs(value);\n\n if (larger(v, pinf)) {\n pinf = v;\n }\n }, true);\n return pinf;\n }\n /**\n * Calculate the minus infinity norm for a vector\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _vectorNormMinusInfinity(x) {\n // norm(x, -Infinity) = min(abs(x))\n var ninf; // skip zeros since abs(0) === 0\n\n x.forEach(function (value) {\n var v = abs(value);\n\n if (!ninf || smaller(v, ninf)) {\n ninf = v;\n }\n }, true);\n return ninf || 0;\n }\n /**\n * Calculate the norm for a vector\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _vectorNorm(x, p) {\n // check p\n if (p === Number.POSITIVE_INFINITY || p === 'inf') {\n return _vectorNormPlusInfinity(x);\n }\n\n if (p === Number.NEGATIVE_INFINITY || p === '-inf') {\n return _vectorNormMinusInfinity(x);\n }\n\n if (p === 'fro') {\n return _norm(x, 2);\n }\n\n if (typeof p === 'number' && !isNaN(p)) {\n // check p != 0\n if (!equalScalar(p, 0)) {\n // norm(x, p) = sum(abs(xi) ^ p) ^ 1/p\n var n = 0; // skip zeros since abs(0) === 0\n\n x.forEach(function (value) {\n n = add(pow(abs(value), p), n);\n }, true);\n return pow(n, 1 / p);\n }\n\n return Number.POSITIVE_INFINITY;\n } // invalid parameter value\n\n\n throw new Error('Unsupported parameter value');\n }\n /**\n * Calculate the Frobenius norm for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _matrixNormFrobenius(x) {\n // norm(x) = sqrt(sum(diag(x'x)))\n var fro = 0;\n x.forEach(function (value, index) {\n fro = add(fro, multiply(value, conj(value)));\n });\n return abs(sqrt(fro));\n }\n /**\n * Calculate the norm L1 for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _matrixNormOne(x) {\n // norm(x) = the largest column sum\n var c = []; // result\n\n var maxc = 0; // skip zeros since abs(0) == 0\n\n x.forEach(function (value, index) {\n var j = index[1];\n var cj = add(c[j] || 0, abs(value));\n\n if (larger(cj, maxc)) {\n maxc = cj;\n }\n\n c[j] = cj;\n }, true);\n return maxc;\n }\n /**\n * Calculate the norm L2 for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _matrixNormTwo(x) {\n // norm(x) = sqrt( max eigenvalue of A*.A)\n var sizeX = x.size();\n\n if (sizeX[0] !== sizeX[1]) {\n throw new RangeError('Invalid matrix dimensions');\n }\n\n var tx = ctranspose(x);\n var squaredX = multiply(tx, x);\n var eigenVals = eigs(squaredX).values.toArray();\n var rho = eigenVals[eigenVals.length - 1];\n return abs(sqrt(rho));\n }\n /**\n * Calculate the infinity norm for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _matrixNormInfinity(x) {\n // norm(x) = the largest row sum\n var r = []; // result\n\n var maxr = 0; // skip zeros since abs(0) == 0\n\n x.forEach(function (value, index) {\n var i = index[0];\n var ri = add(r[i] || 0, abs(value));\n\n if (larger(ri, maxr)) {\n maxr = ri;\n }\n\n r[i] = ri;\n }, true);\n return maxr;\n }\n /**\n * Calculate the norm for a 2D Matrix (M*N)\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _matrixNorm(x, p) {\n // check p\n if (p === 1) {\n return _matrixNormOne(x);\n }\n\n if (p === Number.POSITIVE_INFINITY || p === 'inf') {\n return _matrixNormInfinity(x);\n }\n\n if (p === 'fro') {\n return _matrixNormFrobenius(x);\n }\n\n if (p === 2) {\n return _matrixNormTwo(x);\n } // invalid parameter value\n\n\n throw new Error('Unsupported parameter value ' + p);\n }\n /**\n * Calculate the norm for an array\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n\n\n function _norm(x, p) {\n // size\n var sizeX = x.size(); // check if it is a vector\n\n if (sizeX.length === 1) {\n return _vectorNorm(x, p);\n } // MxN matrix\n\n\n if (sizeX.length === 2) {\n if (sizeX[0] && sizeX[1]) {\n return _matrixNorm(x, p);\n } else {\n throw new RangeError('Invalid matrix dimensions');\n }\n }\n }\n});","import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'dot';\nvar dependencies = ['typed', 'addScalar', 'multiplyScalar', 'conj', 'size'];\nexport var createDot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n multiplyScalar,\n conj,\n size\n } = _ref;\n\n /**\n * Calculate the dot product of two vectors. The dot product of\n * `A = [a1, a2, ..., an]` and `B = [b1, b2, ..., bn]` is defined as:\n *\n * dot(A, B) = conj(a1) * b1 + conj(a2) * b2 + ... + conj(an) * bn\n *\n * Syntax:\n *\n * math.dot(x, y)\n *\n * Examples:\n *\n * math.dot([2, 4, 1], [2, 2, 3]) // returns number 15\n * math.multiply([2, 4, 1], [2, 2, 3]) // returns number 15\n *\n * See also:\n *\n * multiply, cross\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {number} Returns the dot product of `x` and `y`\n */\n return typed(name, {\n 'Array | DenseMatrix, Array | DenseMatrix': _denseDot,\n 'SparseMatrix, SparseMatrix': _sparseDot\n });\n\n function _validateDim(x, y) {\n var xSize = _size(x);\n\n var ySize = _size(y);\n\n var xLen, yLen;\n\n if (xSize.length === 1) {\n xLen = xSize[0];\n } else if (xSize.length === 2 && xSize[1] === 1) {\n xLen = xSize[0];\n } else {\n throw new RangeError('Expected a column vector, instead got a matrix of size (' + xSize.join(', ') + ')');\n }\n\n if (ySize.length === 1) {\n yLen = ySize[0];\n } else if (ySize.length === 2 && ySize[1] === 1) {\n yLen = ySize[0];\n } else {\n throw new RangeError('Expected a column vector, instead got a matrix of size (' + ySize.join(', ') + ')');\n }\n\n if (xLen !== yLen) throw new RangeError('Vectors must have equal length (' + xLen + ' != ' + yLen + ')');\n if (xLen === 0) throw new RangeError('Cannot calculate the dot product of empty vectors');\n return xLen;\n }\n\n function _denseDot(a, b) {\n var N = _validateDim(a, b);\n\n var adata = isMatrix(a) ? a._data : a;\n var adt = isMatrix(a) ? a._datatype : undefined;\n var bdata = isMatrix(b) ? b._data : b;\n var bdt = isMatrix(b) ? b._datatype : undefined; // are these 2-dimensional column vectors? (as opposed to 1-dimensional vectors)\n\n var aIsColumn = _size(a).length === 2;\n var bIsColumn = _size(b).length === 2;\n var add = addScalar;\n var mul = multiplyScalar; // process data types\n\n if (adt && bdt && adt === bdt && typeof adt === 'string') {\n var dt = adt; // find signatures that matches (dt, dt)\n\n add = typed.find(addScalar, [dt, dt]);\n mul = typed.find(multiplyScalar, [dt, dt]);\n } // both vectors 1-dimensional\n\n\n if (!aIsColumn && !bIsColumn) {\n var c = mul(conj(adata[0]), bdata[0]);\n\n for (var i = 1; i < N; i++) {\n c = add(c, mul(conj(adata[i]), bdata[i]));\n }\n\n return c;\n } // a is 1-dim, b is column\n\n\n if (!aIsColumn && bIsColumn) {\n var _c = mul(conj(adata[0]), bdata[0][0]);\n\n for (var _i = 1; _i < N; _i++) {\n _c = add(_c, mul(conj(adata[_i]), bdata[_i][0]));\n }\n\n return _c;\n } // a is column, b is 1-dim\n\n\n if (aIsColumn && !bIsColumn) {\n var _c2 = mul(conj(adata[0][0]), bdata[0]);\n\n for (var _i2 = 1; _i2 < N; _i2++) {\n _c2 = add(_c2, mul(conj(adata[_i2][0]), bdata[_i2]));\n }\n\n return _c2;\n } // both vectors are column\n\n\n if (aIsColumn && bIsColumn) {\n var _c3 = mul(conj(adata[0][0]), bdata[0][0]);\n\n for (var _i3 = 1; _i3 < N; _i3++) {\n _c3 = add(_c3, mul(conj(adata[_i3][0]), bdata[_i3][0]));\n }\n\n return _c3;\n }\n }\n\n function _sparseDot(x, y) {\n _validateDim(x, y);\n\n var xindex = x._index;\n var xvalues = x._values;\n var yindex = y._index;\n var yvalues = y._values; // TODO optimize add & mul using datatype\n\n var c = 0;\n var add = addScalar;\n var mul = multiplyScalar;\n var i = 0;\n var j = 0;\n\n while (i < xindex.length && j < yindex.length) {\n var I = xindex[i];\n var J = yindex[j];\n\n if (I < J) {\n i++;\n continue;\n }\n\n if (I > J) {\n j++;\n continue;\n }\n\n if (I === J) {\n c = add(c, mul(xvalues[i], yvalues[j]));\n i++;\n j++;\n }\n }\n\n return c;\n } // TODO remove this once #1771 is fixed\n\n\n function _size(x) {\n return isMatrix(x) ? x.size() : size(x);\n }\n});","import { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'trace';\nvar dependencies = ['typed', 'matrix', 'add'];\nexport var createTrace = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n add\n } = _ref;\n\n /**\n * Calculate the trace of a matrix: the sum of the elements on the main\n * diagonal of a square matrix.\n *\n * Syntax:\n *\n * math.trace(x)\n *\n * Examples:\n *\n * math.trace([[1, 2], [3, 4]]) // returns 5\n *\n * const A = [\n * [1, 2, 3],\n * [-1, 2, 3],\n * [2, 0, 3]\n * ]\n * math.trace(A) // returns 6\n *\n * See also:\n *\n * diag\n *\n * @param {Array | Matrix} x A matrix\n *\n * @return {number} The trace of `x`\n */\n return typed('trace', {\n Array: function _arrayTrace(x) {\n // use dense matrix implementation\n return _denseTrace(matrix(x));\n },\n SparseMatrix: _sparseTrace,\n DenseMatrix: _denseTrace,\n any: clone\n });\n\n function _denseTrace(m) {\n // matrix size & data\n var size = m._size;\n var data = m._data; // process dimensions\n\n switch (size.length) {\n case 1:\n // vector\n if (size[0] === 1) {\n // return data[0]\n return clone(data[0]);\n }\n\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n\n case 2:\n {\n // two dimensional\n var rows = size[0];\n var cols = size[1];\n\n if (rows === cols) {\n // calulate sum\n var sum = 0; // loop diagonal\n\n for (var i = 0; i < rows; i++) {\n sum = add(sum, data[i][i]);\n } // return trace\n\n\n return sum;\n } else {\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n }\n\n default:\n // multi dimensional\n throw new RangeError('Matrix must be two dimensional (size: ' + format(size) + ')');\n }\n }\n\n function _sparseTrace(m) {\n // matrix arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n var size = m._size; // check dimensions\n\n var rows = size[0];\n var columns = size[1]; // matrix must be square\n\n if (rows === columns) {\n // calulate sum\n var sum = 0; // check we have data (avoid looping columns)\n\n if (values.length > 0) {\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1]; // loop k within [k0, k1[\n\n for (var k = k0; k < k1; k++) {\n // row index\n var i = index[k]; // check row\n\n if (i === j) {\n // accumulate value\n sum = add(sum, values[k]); // exit loop\n\n break;\n }\n\n if (i > j) {\n // exit loop, no value on the diagonal for column j\n break;\n }\n }\n }\n } // return trace\n\n\n return sum;\n }\n\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n});","import { factory } from '../../../utils/factory.js';\nimport { isBigNumber, isMatrix } from '../../../utils/is.js';\nvar name = 'index';\nvar dependencies = ['typed', 'Index'];\nexport var createIndex = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index\n } = _ref;\n\n /**\n * Create an index. An Index can store ranges having start, step, and end\n * for multiple dimensions.\n * Matrix.get, Matrix.set, and math.subset accept an Index as input.\n *\n * Syntax:\n *\n * math.index(range1, range2, ...)\n *\n * Where each range can be any of:\n *\n * - A number\n * - A string for getting/setting an object property\n * - An instance of `Range`\n * - A one-dimensional Array or a Matrix with numbers\n *\n * Indexes must be zero-based, integer numbers.\n *\n * Examples:\n *\n * const b = [1, 2, 3, 4, 5]\n * math.subset(b, math.index([1, 2, 3])) // returns [2, 3, 4]\n *\n * const a = math.matrix([[1, 2], [3, 4]])\n * a.subset(math.index(0, 1)) // returns 2\n *\n * See also:\n *\n * bignumber, boolean, complex, matrix, number, string, unit\n *\n * @param {...*} ranges Zero or more ranges or numbers.\n * @return {Index} Returns the created index\n */\n return typed(name, {\n '...number | string | BigNumber | Range | Array | Matrix': function numberStringBigNumberRangeArrayMatrix(args) {\n var ranges = args.map(function (arg) {\n if (isBigNumber(arg)) {\n return arg.toNumber(); // convert BigNumber to Number\n } else if (Array.isArray(arg) || isMatrix(arg)) {\n return arg.map(function (elem) {\n // convert BigNumber to Number\n return isBigNumber(elem) ? elem.toNumber() : elem;\n });\n } else {\n return arg;\n }\n });\n var res = new Index();\n Index.apply(res, ranges);\n return res;\n }\n });\n});","// Reserved keywords not allowed to use in the parser\nexport var keywords = new Set(['end']);","import { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { deepStrictEqual } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMap } from '../../utils/map.js';\nvar name = 'Node';\nvar dependencies = ['mathWithTransform'];\nexport var createNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n mathWithTransform\n } = _ref;\n\n /**\n * Node\n */\n function Node() {\n if (!(this instanceof Node)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n }\n /**\n * Evaluate the node\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} Returns the result\n */\n\n\n Node.prototype.evaluate = function (scope) {\n return this.compile().evaluate(scope);\n };\n\n Node.prototype.type = 'Node';\n Node.prototype.isNode = true;\n Node.prototype.comment = '';\n /**\n * Compile the node into an optimized, evauatable JavaScript function\n * @return {{evaluate: function([Object])}} object\n * Returns an object with a function 'evaluate',\n * which can be invoked as expr.evaluate([scope: Object]),\n * where scope is an optional object with\n * variables.\n */\n\n Node.prototype.compile = function () {\n var expr = this._compile(mathWithTransform, {});\n\n var args = {};\n var context = null;\n\n function evaluate(scope) {\n var s = createMap(scope);\n\n _validateScope(s);\n\n return expr(s, args, context);\n }\n\n return {\n evaluate\n };\n };\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n\n Node.prototype._compile = function (math, argNames) {\n throw new Error('Method _compile should be implemented by type ' + this.type);\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n Node.prototype.forEach = function (callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run forEach on a Node interface');\n };\n /**\n * Create a new Node having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n\n\n Node.prototype.map = function (callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run map on a Node interface');\n };\n /**\n * Validate whether an object is a Node, for use with map\n * @param {Node} node\n * @returns {Node} Returns the input if it's a node, else throws an Error\n * @protected\n */\n\n\n Node.prototype._ifNode = function (node) {\n if (!isNode(node)) {\n throw new TypeError('Callback function must return a Node');\n }\n\n return node;\n };\n /**\n * Recursively traverse all nodes in a node tree. Executes given callback for\n * this node and each of its child nodes.\n * @param {function(node: Node, path: string, parent: Node)} callback\n * A callback called for every node in the node tree.\n */\n\n\n Node.prototype.traverse = function (callback) {\n // execute callback for itself\n // eslint-disable-next-line\n callback(this, null, null); // recursively traverse over all childs of a node\n\n function _traverse(node, callback) {\n node.forEach(function (child, path, parent) {\n callback(child, path, parent);\n\n _traverse(child, callback);\n });\n }\n\n _traverse(this, callback);\n };\n /**\n * Recursively transform a node tree via a transform function.\n *\n * For example, to replace all nodes of type SymbolNode having name 'x' with a\n * ConstantNode with value 2:\n *\n * const res = Node.transform(function (node, path, parent) {\n * if (node && node.isSymbolNode) && (node.name === 'x')) {\n * return new ConstantNode(2)\n * }\n * else {\n * return node\n * }\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A mapping function accepting a node, and returning\n * a replacement for the node or the original node.\n * Signature: callback(node: Node, index: string, parent: Node) : Node\n * @return {Node} Returns the original node or its replacement\n */\n\n\n Node.prototype.transform = function (callback) {\n function _transform(child, path, parent) {\n var replacement = callback(child, path, parent);\n\n if (replacement !== child) {\n // stop iterating when the node is replaced\n return replacement;\n }\n\n return child.map(_transform);\n }\n\n return _transform(this, null, null);\n };\n /**\n * Find any node in the node tree matching given filter function. For example, to\n * find all nodes of type SymbolNode having name 'x':\n *\n * const results = Node.filter(function (node) {\n * return (node && node.isSymbolNode) && (node.name === 'x')\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A test function returning true when a node matches, and false\n * otherwise. Function signature:\n * callback(node: Node, index: string, parent: Node) : boolean\n * @return {Node[]} nodes An array with nodes matching given filter criteria\n */\n\n\n Node.prototype.filter = function (callback) {\n var nodes = [];\n this.traverse(function (node, path, parent) {\n if (callback(node, path, parent)) {\n nodes.push(node);\n }\n });\n return nodes;\n };\n /**\n * Create a shallow clone of this node\n * @return {Node}\n */\n\n\n Node.prototype.clone = function () {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot clone a Node interface');\n };\n /**\n * Create a deep clone of this node\n * @return {Node}\n */\n\n\n Node.prototype.cloneDeep = function () {\n return this.map(function (node) {\n return node.cloneDeep();\n });\n };\n /**\n * Deep compare this node with another node.\n * @param {Node} other\n * @return {boolean} Returns true when both nodes are of the same type and\n * contain the same values (as do their childs)\n */\n\n\n Node.prototype.equals = function (other) {\n return other ? deepStrictEqual(this, other) : false;\n };\n /**\n * Get string representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n\n\n Node.prototype.toString = function (options) {\n var customString = this._getCustomString(options);\n\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n return this._toString(options);\n };\n /**\n * Get a JSON representation of the node\n * Both .toJSON() and the static .fromJSON(json) should be implemented by all\n * implementations of Node\n * @returns {Object}\n */\n\n\n Node.prototype.toJSON = function () {\n throw new Error('Cannot serialize object: toJSON not implemented by ' + this.type);\n };\n /**\n * Get HTML representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\" or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n\n\n Node.prototype.toHTML = function (options) {\n var customString = this._getCustomString(options);\n\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n return this.toHTML(options);\n };\n /**\n * Internal function to generate the string output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n\n\n Node.prototype._toString = function () {\n // must be implemented by each of the Node implementations\n throw new Error('_toString not implemented for ' + this.type);\n };\n /**\n * Get LaTeX representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n\n\n Node.prototype.toTex = function (options) {\n var customString = this._getCustomString(options);\n\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n return this._toTex(options);\n };\n /**\n * Internal function to generate the LaTeX output.\n * This has to be implemented by every Node\n *\n * @param {Object} [options]\n * @throws {Error}\n */\n\n\n Node.prototype._toTex = function (options) {\n // must be implemented by each of the Node implementations\n throw new Error('_toTex not implemented for ' + this.type);\n };\n /**\n * Helper used by `to...` functions.\n */\n\n\n Node.prototype._getCustomString = function (options) {\n if (options && typeof options === 'object') {\n switch (typeof options.handler) {\n case 'object':\n case 'undefined':\n return;\n\n case 'function':\n return options.handler(this, options);\n\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n };\n /**\n * Get identifier.\n * @return {string}\n */\n\n\n Node.prototype.getIdentifier = function () {\n return this.type;\n };\n /**\n * Get the content of the current Node.\n * @return {Node} node\n **/\n\n\n Node.prototype.getContent = function () {\n return this;\n };\n /**\n * Validate the symbol names of a scope.\n * Throws an error when the scope contains an illegal symbol.\n * @param {Object} scope\n */\n\n\n function _validateScope(scope) {\n for (var symbol of [...keywords]) {\n if (scope.has(symbol)) {\n throw new Error('Scope contains an illegal symbol, \"' + symbol + '\" is a reserved keyword');\n }\n }\n }\n\n return Node;\n}, {\n isClass: true,\n isNode: true\n});","import { IndexError } from '../../../error/IndexError.js';\n/**\n * Transform zero-based indices to one-based indices in errors\n * @param {Error} err\n * @returns {Error | IndexError} Returns the transformed error\n */\n\nexport function errorTransform(err) {\n if (err && err.isIndexError) {\n return new IndexError(err.index + 1, err.min + 1, err.max !== undefined ? err.max + 1 : undefined);\n }\n\n return err;\n}","import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { getSafeProperty } from '../../../utils/customs.js';\nexport function accessFactory(_ref) {\n var {\n subset\n } = _ref;\n\n /**\n * Retrieve part of an object:\n *\n * - Retrieve a property from an object\n * - Retrieve a part of a string\n * - Retrieve a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @return {Object | Array | Matrix | string} Returns the subset\n */\n return function access(object, index) {\n try {\n if (Array.isArray(object)) {\n return subset(object, index);\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index);\n } else if (typeof object === 'string') {\n // TODO: move getStringSubset into a separate util file, use that\n return subset(object, index);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw new TypeError('Cannot apply a numeric index as object property');\n }\n\n return getSafeProperty(object, index.getObjectProperty());\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}","import { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isNode, isObjectNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nvar name = 'AccessorNode';\nvar dependencies = ['subset', 'Node'];\nexport var createAccessorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n /**\n * @constructor AccessorNode\n * @extends {Node}\n * Access an object property or get a matrix subset\n *\n * @param {Node} object The object from which to retrieve\n * a property or subset.\n * @param {IndexNode} index IndexNode containing ranges\n */\n\n function AccessorNode(object, index) {\n if (!(this instanceof AccessorNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!isNode(object)) {\n throw new TypeError('Node expected for parameter \"object\"');\n }\n\n if (!isIndexNode(index)) {\n throw new TypeError('IndexNode expected for parameter \"index\"');\n }\n\n this.object = object || null;\n this.index = index; // readonly property name\n\n Object.defineProperty(this, 'name', {\n get: function () {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }.bind(this),\n set: function set() {\n throw new Error('Cannot assign a new name, name is read-only');\n }\n });\n }\n\n AccessorNode.prototype = new Node();\n AccessorNode.prototype.type = 'AccessorNode';\n AccessorNode.prototype.isAccessorNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n AccessorNode.prototype._compile = function (math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n\n var evalIndex = this.index._compile(math, argNames);\n\n if (this.index.isObjectProperty()) {\n var prop = this.index.getObjectProperty();\n return function evalAccessorNode(scope, args, context) {\n // get a property from an object evaluated using the scope.\n return getSafeProperty(evalObject(scope, args, context), prop);\n };\n } else {\n return function evalAccessorNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var index = evalIndex(scope, args, object); // we pass object here instead of context\n\n return access(object, index);\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n AccessorNode.prototype.forEach = function (callback) {\n callback(this.object, 'object', this);\n callback(this.index, 'index', this);\n };\n /**\n * Create a new AccessorNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AccessorNode} Returns a transformed copy of the node\n */\n\n\n AccessorNode.prototype.map = function (callback) {\n return new AccessorNode(this._ifNode(callback(this.object, 'object', this)), this._ifNode(callback(this.index, 'index', this)));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {AccessorNode}\n */\n\n\n AccessorNode.prototype.clone = function () {\n return new AccessorNode(this.object, this.index);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AccessorNode.prototype._toString = function (options) {\n var object = this.object.toString(options);\n\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n\n return object + this.index.toString(options);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AccessorNode.prototype.toHTML = function (options) {\n var object = this.object.toHTML(options);\n\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n\n return object + this.index.toHTML(options);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AccessorNode.prototype._toTex = function (options) {\n var object = this.object.toTex(options);\n\n if (needParenthesis(this.object)) {\n object = '\\\\left(\\' + object + \\'\\\\right)';\n }\n\n return object + this.index.toTex(options);\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n AccessorNode.prototype.toJSON = function () {\n return {\n mathjs: 'AccessorNode',\n object: this.object,\n index: this.index\n };\n };\n /**\n * Instantiate an AccessorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"AccessorNode\", object: ..., index: ...}`,\n * where mathjs is optional\n * @returns {AccessorNode}\n */\n\n\n AccessorNode.fromJSON = function (json) {\n return new AccessorNode(json.object, json.index);\n };\n /**\n * Are parenthesis needed?\n * @private\n */\n\n\n function needParenthesis(node) {\n // TODO: maybe make a method on the nodes which tells whether they need parenthesis?\n return !(isAccessorNode(node) || isArrayNode(node) || isConstantNode(node) || isFunctionNode(node) || isObjectNode(node) || isParenthesisNode(node) || isSymbolNode(node));\n }\n\n return AccessorNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isArrayNode, isNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ArrayNode';\nvar dependencies = ['Node'];\nexport var createArrayNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * @constructor ArrayNode\n * @extends {Node}\n * Holds an 1-dimensional array with items\n * @param {Node[]} [items] 1 dimensional array with items\n */\n function ArrayNode(items) {\n if (!(this instanceof ArrayNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.items = items || []; // validate input\n\n if (!Array.isArray(this.items) || !this.items.every(isNode)) {\n throw new TypeError('Array containing Nodes expected');\n }\n }\n\n ArrayNode.prototype = new Node();\n ArrayNode.prototype.type = 'ArrayNode';\n ArrayNode.prototype.isArrayNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ArrayNode.prototype._compile = function (math, argNames) {\n var evalItems = map(this.items, function (item) {\n return item._compile(math, argNames);\n });\n var asMatrix = math.config.matrix !== 'Array';\n\n if (asMatrix) {\n var matrix = math.matrix;\n return function evalArrayNode(scope, args, context) {\n return matrix(map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n }));\n };\n } else {\n return function evalArrayNode(scope, args, context) {\n return map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n });\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ArrayNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.items.length; i++) {\n var node = this.items[i];\n callback(node, 'items[' + i + ']', this);\n }\n };\n /**\n * Create a new ArrayNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ArrayNode} Returns a transformed copy of the node\n */\n\n\n ArrayNode.prototype.map = function (callback) {\n var items = [];\n\n for (var i = 0; i < this.items.length; i++) {\n items[i] = this._ifNode(callback(this.items[i], 'items[' + i + ']', this));\n }\n\n return new ArrayNode(items);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ArrayNode}\n */\n\n\n ArrayNode.prototype.clone = function () {\n return new ArrayNode(this.items.slice(0));\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ArrayNode.prototype._toString = function (options) {\n var items = this.items.map(function (node) {\n return node.toString(options);\n });\n return '[' + items.join(', ') + ']';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ArrayNode.prototype.toJSON = function () {\n return {\n mathjs: 'ArrayNode',\n items: this.items\n };\n };\n /**\n * Instantiate an ArrayNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ArrayNode\", items: [...]}`,\n * where mathjs is optional\n * @returns {ArrayNode}\n */\n\n\n ArrayNode.fromJSON = function (json) {\n return new ArrayNode(json.items);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ArrayNode.prototype.toHTML = function (options) {\n var items = this.items.map(function (node) {\n return node.toHTML(options);\n });\n return '[' + items.join(',') + ']';\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ArrayNode.prototype._toTex = function (options) {\n function itemsToTex(items, nested) {\n var mixedItems = items.some(isArrayNode) && !items.every(isArrayNode);\n var itemsFormRow = nested || mixedItems;\n var itemSep = itemsFormRow ? '&' : '\\\\\\\\';\n var itemsTex = items.map(function (node) {\n if (node.items) {\n return itemsToTex(node.items, !nested);\n } else {\n return node.toTex(options);\n }\n }).join(itemSep);\n return mixedItems || !itemsFormRow || itemsFormRow && !nested ? '\\\\begin{bmatrix}' + itemsTex + '\\\\end{bmatrix}' : itemsTex;\n }\n\n return itemsToTex(this.items, false);\n };\n\n return ArrayNode;\n}, {\n isClass: true,\n isNode: true\n});","// list of identifiers of nodes in order of their precedence\n// also contains information about left/right associativity\n// and which other operator the operator is associative with\n// Example:\n// addition is associative with addition and subtraction, because:\n// (a+b)+c=a+(b+c)\n// (a+b)-c=a+(b-c)\n//\n// postfix operators are left associative, prefix operators\n// are right associative\n//\n// It's also possible to set the following properties:\n// latexParens: if set to false, this node doesn't need to be enclosed\n// in parentheses when using LaTeX\n// latexLeftParens: if set to false, this !OperatorNode's!\n// left argument doesn't need to be enclosed\n// in parentheses\n// latexRightParens: the same for the right argument\nimport { hasOwnProperty } from '../utils/object.js';\nexport var properties = [{\n // assignment\n AssignmentNode: {},\n FunctionAssignmentNode: {}\n}, {\n // conditional expression\n ConditionalNode: {\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false // conditionals don't need parentheses in LaTeX because\n // they are 2 dimensional\n\n }\n}, {\n // logical or\n 'OperatorNode:or': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical xor\n 'OperatorNode:xor': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical and\n 'OperatorNode:and': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise or\n 'OperatorNode:bitOr': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise xor\n 'OperatorNode:bitXor': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise and\n 'OperatorNode:bitAnd': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // relational operators\n 'OperatorNode:equal': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:unequal': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smaller': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:larger': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smallerEq': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:largerEq': {\n associativity: 'left',\n associativeWith: []\n },\n RelationalNode: {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitshift operators\n 'OperatorNode:leftShift': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightArithShift': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightLogShift': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unit conversion\n 'OperatorNode:to': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // range\n RangeNode: {}\n}, {\n // addition, subtraction\n 'OperatorNode:add': {\n associativity: 'left',\n associativeWith: ['OperatorNode:add', 'OperatorNode:subtract']\n },\n 'OperatorNode:subtract': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // multiply, divide, modulus\n 'OperatorNode:multiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n },\n 'OperatorNode:divide': {\n associativity: 'left',\n associativeWith: [],\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false // fractions don't require parentheses because\n // they're 2 dimensional, so parens aren't needed\n // in LaTeX\n\n },\n 'OperatorNode:dotMultiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'OperatorNode:dotMultiply', 'OperatorNode:doDivide']\n },\n 'OperatorNode:dotDivide': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:mod': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unary prefix operators\n 'OperatorNode:unaryPlus': {\n associativity: 'right'\n },\n 'OperatorNode:unaryMinus': {\n associativity: 'right'\n },\n 'OperatorNode:bitNot': {\n associativity: 'right'\n },\n 'OperatorNode:not': {\n associativity: 'right'\n }\n}, {\n // exponentiation\n 'OperatorNode:pow': {\n associativity: 'right',\n associativeWith: [],\n latexRightParens: false // the exponent doesn't need parentheses in\n // LaTeX because it's 2 dimensional\n // (it's on top)\n\n },\n 'OperatorNode:dotPow': {\n associativity: 'right',\n associativeWith: []\n }\n}, {\n // factorial\n 'OperatorNode:factorial': {\n associativity: 'left'\n }\n}, {\n // matrix transpose\n 'OperatorNode:transpose': {\n associativity: 'left'\n }\n}];\n/**\n * Get the precedence of a Node.\n * Higher number for higher precedence, starting with 0.\n * Returns null if the precedence is undefined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {number | null}\n */\n\nexport function getPrecedence(_node, parenthesis) {\n var node = _node;\n\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n\n var identifier = node.getIdentifier();\n\n for (var i = 0; i < properties.length; i++) {\n if (identifier in properties[i]) {\n return i;\n }\n }\n\n return null;\n}\n/**\n * Get the associativity of an operator (left or right).\n * Returns a string containing 'left' or 'right' or null if\n * the associativity is not defined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {string|null}\n * @throws {Error}\n */\n\nexport function getAssociativity(_node, parenthesis) {\n var node = _node;\n\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n\n var identifier = node.getIdentifier();\n var index = getPrecedence(node, parenthesis);\n\n if (index === null) {\n // node isn't in the list\n return null;\n }\n\n var property = properties[index][identifier];\n\n if (hasOwnProperty(property, 'associativity')) {\n if (property.associativity === 'left') {\n return 'left';\n }\n\n if (property.associativity === 'right') {\n return 'right';\n } // associativity is invalid\n\n\n throw Error('\\'' + identifier + '\\' has the invalid associativity \\'' + property.associativity + '\\'.');\n } // associativity is undefined\n\n\n return null;\n}\n/**\n * Check if an operator is associative with another operator.\n * Returns either true or false or null if not defined.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @param {string} parenthesis\n * @return {boolean | null}\n */\n\nexport function isAssociativeWith(nodeA, nodeB, parenthesis) {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n var a = parenthesis !== 'keep' ? nodeA.getContent() : nodeA;\n var b = parenthesis !== 'keep' ? nodeA.getContent() : nodeB;\n var identifierA = a.getIdentifier();\n var identifierB = b.getIdentifier();\n var index = getPrecedence(a, parenthesis);\n\n if (index === null) {\n // node isn't in the list\n return null;\n }\n\n var property = properties[index][identifierA];\n\n if (hasOwnProperty(property, 'associativeWith') && property.associativeWith instanceof Array) {\n for (var i = 0; i < property.associativeWith.length; i++) {\n if (property.associativeWith[i] === identifierB) {\n return true;\n }\n }\n\n return false;\n } // associativeWith is not defined\n\n\n return null;\n}","import { isAccessorNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nimport { assignFactory } from './utils/assign.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'AssignmentNode';\nvar dependencies = ['subset', '?matrix', // FIXME: should not be needed at all, should be handled by subset\n'Node'];\nexport var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n matrix,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n var assign = assignFactory({\n subset,\n matrix\n });\n /**\n * @constructor AssignmentNode\n * @extends {Node}\n *\n * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or\n * replace a subset of a matrix like `A[2,2]=42`.\n *\n * Syntax:\n *\n * new AssignmentNode(symbol, value)\n * new AssignmentNode(object, index, value)\n *\n * Usage:\n *\n * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2\n * new AssignmentNode(new SymbolNode('a'), new IndexNode('b'), new ConstantNode(2)) // a.b=2\n * new AssignmentNode(new SymbolNode('a'), new IndexNode(1, 2), new ConstantNode(3)) // a[1,2]=3\n *\n * @param {SymbolNode | AccessorNode} object Object on which to assign a value\n * @param {IndexNode} [index=null] Index, property name or matrix\n * index. Optional. If not provided\n * and `object` is a SymbolNode,\n * the property is assigned to the\n * global scope.\n * @param {Node} value The value to be assigned\n */\n\n function AssignmentNode(object, index, value) {\n if (!(this instanceof AssignmentNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.object = object;\n this.index = value ? index : null;\n this.value = value || index; // validate input\n\n if (!isSymbolNode(object) && !isAccessorNode(object)) {\n throw new TypeError('SymbolNode or AccessorNode expected as \"object\"');\n }\n\n if (isSymbolNode(object) && object.name === 'end') {\n throw new Error('Cannot assign to symbol \"end\"');\n }\n\n if (this.index && !isIndexNode(this.index)) {\n // index is optional\n throw new TypeError('IndexNode expected as \"index\"');\n }\n\n if (!isNode(this.value)) {\n throw new TypeError('Node expected as \"value\"');\n } // readonly property name\n\n\n Object.defineProperty(this, 'name', {\n get: function () {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }.bind(this),\n set: function set() {\n throw new Error('Cannot assign a new name, name is read-only');\n }\n });\n }\n\n AssignmentNode.prototype = new Node();\n AssignmentNode.prototype.type = 'AssignmentNode';\n AssignmentNode.prototype.isAssignmentNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n AssignmentNode.prototype._compile = function (math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n\n var evalIndex = this.index ? this.index._compile(math, argNames) : null;\n\n var evalValue = this.value._compile(math, argNames);\n\n var name = this.object.name;\n\n if (!this.index) {\n // apply a variable to the scope, for example `a=2`\n if (!isSymbolNode(this.object)) {\n throw new TypeError('SymbolNode expected as object');\n }\n\n return function evalAssignmentNode(scope, args, context) {\n var value = evalValue(scope, args, context);\n scope.set(name, value);\n return value;\n };\n } else if (this.index.isObjectProperty()) {\n // apply an object property for example `a.b=2`\n var prop = this.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n setSafeProperty(object, prop, value);\n return value;\n };\n } else if (isSymbolNode(this.object)) {\n // update a matrix subset, for example `a[2]=3`\n return function evalAssignmentNode(scope, args, context) {\n var childObject = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context\n\n scope.set(name, assign(childObject, index, value));\n return value;\n };\n } else {\n // isAccessorNode(node.object) === true\n // update a matrix subset, for example `a.b[2]=3`\n // we will not use the compile function of the AccessorNode, but compile it\n // ourselves here as we need the parent object of the AccessorNode:\n // wee need to apply the updated object to parent object\n var evalParentObject = this.object.object._compile(math, argNames);\n\n if (this.object.index.isObjectProperty()) {\n var parentProp = this.object.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var childObject = getSafeProperty(parent, parentProp);\n var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context\n\n var value = evalValue(scope, args, context);\n setSafeProperty(parent, parentProp, assign(childObject, index, value));\n return value;\n };\n } else {\n // if some parameters use the 'end' parameter, we need to calculate the size\n var evalParentIndex = this.object.index._compile(math, argNames);\n\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var parentIndex = evalParentIndex(scope, args, parent); // Important: we pass parent instead of context\n\n var childObject = access(parent, parentIndex);\n var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context\n\n var value = evalValue(scope, args, context);\n assign(parent, parentIndex, assign(childObject, index, value));\n return value;\n };\n }\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n AssignmentNode.prototype.forEach = function (callback) {\n callback(this.object, 'object', this);\n\n if (this.index) {\n callback(this.index, 'index', this);\n }\n\n callback(this.value, 'value', this);\n };\n /**\n * Create a new AssignmentNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AssignmentNode} Returns a transformed copy of the node\n */\n\n\n AssignmentNode.prototype.map = function (callback) {\n var object = this._ifNode(callback(this.object, 'object', this));\n\n var index = this.index ? this._ifNode(callback(this.index, 'index', this)) : null;\n\n var value = this._ifNode(callback(this.value, 'value', this));\n\n return new AssignmentNode(object, index, value);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {AssignmentNode}\n */\n\n\n AssignmentNode.prototype.clone = function () {\n return new AssignmentNode(this.object, this.index, this.value);\n };\n /*\n * Is parenthesis needed?\n * @param {node} node\n * @param {string} [parenthesis='keep']\n * @private\n */\n\n\n function needParenthesis(node, parenthesis) {\n if (!parenthesis) {\n parenthesis = 'keep';\n }\n\n var precedence = getPrecedence(node, parenthesis);\n var exprPrecedence = getPrecedence(node.value, parenthesis);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AssignmentNode.prototype._toString = function (options) {\n var object = this.object.toString(options);\n var index = this.index ? this.index.toString(options) : '';\n var value = this.value.toString(options);\n\n if (needParenthesis(this, options && options.parenthesis)) {\n value = '(' + value + ')';\n }\n\n return object + index + ' = ' + value;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n AssignmentNode.prototype.toJSON = function () {\n return {\n mathjs: 'AssignmentNode',\n object: this.object,\n index: this.index,\n value: this.value\n };\n };\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"AssignmentNode\", object: ..., index: ..., value: ...}`,\n * where mathjs is optional\n * @returns {AssignmentNode}\n */\n\n\n AssignmentNode.fromJSON = function (json) {\n return new AssignmentNode(json.object, json.index, json.value);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AssignmentNode.prototype.toHTML = function (options) {\n var object = this.object.toHTML(options);\n var index = this.index ? this.index.toHTML(options) : '';\n var value = this.value.toHTML(options);\n\n if (needParenthesis(this, options && options.parenthesis)) {\n value = '(' + value + ')';\n }\n\n return object + index + '=' + value;\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AssignmentNode.prototype._toTex = function (options) {\n var object = this.object.toTex(options);\n var index = this.index ? this.index.toTex(options) : '';\n var value = this.value.toTex(options);\n\n if (needParenthesis(this, options && options.parenthesis)) {\n value = \"\\\\left(\".concat(value, \"\\\\right)\");\n }\n\n return object + index + ':=' + value;\n };\n\n return AssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});","import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { setSafeProperty } from '../../../utils/customs.js';\nexport function assignFactory(_ref) {\n var {\n subset,\n matrix\n } = _ref;\n\n /**\n * Replace part of an object:\n *\n * - Assign a property to an object\n * - Replace a part of a string\n * - Replace a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @param {*} value\n * @return {Object | Array | Matrix | string} Returns the original object\n * except in case of a string\n */\n // TODO: change assign to return the value instead of the object\n return function assign(object, index, value) {\n try {\n if (Array.isArray(object)) {\n // we use matrix.subset here instead of the function subset because we must not clone the contents\n return matrix(object).subset(index, value).valueOf();\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index, value);\n } else if (typeof object === 'string') {\n // TODO: move setStringSubset into a separate util file, use that\n return subset(object, index, value);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw TypeError('Cannot apply a numeric index as object property');\n }\n\n setSafeProperty(object, index.getObjectProperty(), value);\n return object;\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}","import { isNode } from '../../utils/is.js';\nimport { forEach, map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BlockNode';\nvar dependencies = ['ResultSet', 'Node'];\nexport var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ResultSet,\n Node\n } = _ref;\n\n /**\n * @constructor BlockNode\n * @extends {Node}\n * Holds a set with blocks\n * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks\n * An array with blocks, where a block is constructed as an Object\n * with properties block, which is a Node, and visible, which is\n * a boolean. The property visible is optional and is true by default\n */\n function BlockNode(blocks) {\n if (!(this instanceof BlockNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input, copy blocks\n\n\n if (!Array.isArray(blocks)) throw new Error('Array expected');\n this.blocks = blocks.map(function (block) {\n var node = block && block.node;\n var visible = block && block.visible !== undefined ? block.visible : true;\n if (!isNode(node)) throw new TypeError('Property \"node\" must be a Node');\n if (typeof visible !== 'boolean') throw new TypeError('Property \"visible\" must be a boolean');\n return {\n node: node,\n visible: visible\n };\n });\n }\n\n BlockNode.prototype = new Node();\n BlockNode.prototype.type = 'BlockNode';\n BlockNode.prototype.isBlockNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n BlockNode.prototype._compile = function (math, argNames) {\n var evalBlocks = map(this.blocks, function (block) {\n return {\n evaluate: block.node._compile(math, argNames),\n visible: block.visible\n };\n });\n return function evalBlockNodes(scope, args, context) {\n var results = [];\n forEach(evalBlocks, function evalBlockNode(block) {\n var result = block.evaluate(scope, args, context);\n\n if (block.visible) {\n results.push(result);\n }\n });\n return new ResultSet(results);\n };\n };\n /**\n * Execute a callback for each of the child blocks of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n BlockNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.blocks.length; i++) {\n callback(this.blocks[i].node, 'blocks[' + i + '].node', this);\n }\n };\n /**\n * Create a new BlockNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {BlockNode} Returns a transformed copy of the node\n */\n\n\n BlockNode.prototype.map = function (callback) {\n var blocks = [];\n\n for (var i = 0; i < this.blocks.length; i++) {\n var block = this.blocks[i];\n\n var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this));\n\n blocks[i] = {\n node: node,\n visible: block.visible\n };\n }\n\n return new BlockNode(blocks);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {BlockNode}\n */\n\n\n BlockNode.prototype.clone = function () {\n var blocks = this.blocks.map(function (block) {\n return {\n node: block.node,\n visible: block.visible\n };\n });\n return new BlockNode(blocks);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n BlockNode.prototype._toString = function (options) {\n return this.blocks.map(function (param) {\n return param.node.toString(options) + (param.visible ? '' : ';');\n }).join('\\n');\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n BlockNode.prototype.toJSON = function () {\n return {\n mathjs: 'BlockNode',\n blocks: this.blocks\n };\n };\n /**\n * Instantiate an BlockNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"BlockNode\", blocks: [{node: ..., visible: false}, ...]}`,\n * where mathjs is optional\n * @returns {BlockNode}\n */\n\n\n BlockNode.fromJSON = function (json) {\n return new BlockNode(json.blocks);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n BlockNode.prototype.toHTML = function (options) {\n return this.blocks.map(function (param) {\n return param.node.toHTML(options) + (param.visible ? '' : ';');\n }).join('
');\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n BlockNode.prototype._toTex = function (options) {\n return this.blocks.map(function (param) {\n return param.node.toTex(options) + (param.visible ? '' : ';');\n }).join('\\\\;\\\\;\\n');\n };\n\n return BlockNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isBigNumber, isComplex, isNode, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'ConditionalNode';\nvar dependencies = ['Node'];\nexport var createConditionalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr'\n *\n * @param {Node} condition Condition, must result in a boolean\n * @param {Node} trueExpr Expression evaluated when condition is true\n * @param {Node} falseExpr Expression evaluated when condition is true\n *\n * @constructor ConditionalNode\n * @extends {Node}\n */\n function ConditionalNode(condition, trueExpr, falseExpr) {\n if (!(this instanceof ConditionalNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!isNode(condition)) throw new TypeError('Parameter condition must be a Node');\n if (!isNode(trueExpr)) throw new TypeError('Parameter trueExpr must be a Node');\n if (!isNode(falseExpr)) throw new TypeError('Parameter falseExpr must be a Node');\n this.condition = condition;\n this.trueExpr = trueExpr;\n this.falseExpr = falseExpr;\n }\n\n ConditionalNode.prototype = new Node();\n ConditionalNode.prototype.type = 'ConditionalNode';\n ConditionalNode.prototype.isConditionalNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ConditionalNode.prototype._compile = function (math, argNames) {\n var evalCondition = this.condition._compile(math, argNames);\n\n var evalTrueExpr = this.trueExpr._compile(math, argNames);\n\n var evalFalseExpr = this.falseExpr._compile(math, argNames);\n\n return function evalConditionalNode(scope, args, context) {\n return testCondition(evalCondition(scope, args, context)) ? evalTrueExpr(scope, args, context) : evalFalseExpr(scope, args, context);\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ConditionalNode.prototype.forEach = function (callback) {\n callback(this.condition, 'condition', this);\n callback(this.trueExpr, 'trueExpr', this);\n callback(this.falseExpr, 'falseExpr', this);\n };\n /**\n * Create a new ConditionalNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ConditionalNode} Returns a transformed copy of the node\n */\n\n\n ConditionalNode.prototype.map = function (callback) {\n return new ConditionalNode(this._ifNode(callback(this.condition, 'condition', this)), this._ifNode(callback(this.trueExpr, 'trueExpr', this)), this._ifNode(callback(this.falseExpr, 'falseExpr', this)));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConditionalNode}\n */\n\n\n ConditionalNode.prototype.clone = function () {\n return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConditionalNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis); // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n\n var condition = this.condition.toString(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis);\n\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n\n var trueExpr = this.trueExpr.toString(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis);\n\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n\n var falseExpr = this.falseExpr.toString(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis);\n\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n\n return condition + ' ? ' + trueExpr + ' : ' + falseExpr;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ConditionalNode.prototype.toJSON = function () {\n return {\n mathjs: 'ConditionalNode',\n condition: this.condition,\n trueExpr: this.trueExpr,\n falseExpr: this.falseExpr\n };\n };\n /**\n * Instantiate an ConditionalNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ConditionalNode\", \"condition\": ..., \"trueExpr\": ..., \"falseExpr\": ...}`,\n * where mathjs is optional\n * @returns {ConditionalNode}\n */\n\n\n ConditionalNode.fromJSON = function (json) {\n return new ConditionalNode(json.condition, json.trueExpr, json.falseExpr);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConditionalNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis); // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n\n var condition = this.condition.toHTML(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis);\n\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n\n var trueExpr = this.trueExpr.toHTML(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis);\n\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n\n var falseExpr = this.falseExpr.toHTML(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis);\n\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n\n return condition + '?' + trueExpr + ':' + falseExpr;\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConditionalNode.prototype._toTex = function (options) {\n return '\\\\begin{cases} {' + this.trueExpr.toTex(options) + '}, &\\\\quad{\\\\text{if }\\\\;' + this.condition.toTex(options) + '}\\\\\\\\{' + this.falseExpr.toTex(options) + '}, &\\\\quad{\\\\text{otherwise}}\\\\end{cases}';\n };\n /**\n * Test whether a condition is met\n * @param {*} condition\n * @returns {boolean} true if condition is true or non-zero, else false\n */\n\n\n function testCondition(condition) {\n if (typeof condition === 'number' || typeof condition === 'boolean' || typeof condition === 'string') {\n return !!condition;\n }\n\n if (condition) {\n if (isBigNumber(condition)) {\n return !condition.isZero();\n }\n\n if (isComplex(condition)) {\n return !!(condition.re || condition.im);\n }\n\n if (isUnit(condition)) {\n return !!condition.value;\n }\n }\n\n if (condition === null || condition === undefined) {\n return false;\n }\n\n throw new TypeError('Unsupported type of condition \"' + typeOf(condition) + '\"');\n }\n\n return ConditionalNode;\n}, {\n isClass: true,\n isNode: true\n});","/* eslint no-template-curly-in-string: \"off\" */\nimport escapeLatexLib from 'escape-latex';\nimport { hasOwnProperty } from './object.js';\nexport var latexSymbols = {\n // GREEK LETTERS\n Alpha: 'A',\n alpha: '\\\\alpha',\n Beta: 'B',\n beta: '\\\\beta',\n Gamma: '\\\\Gamma',\n gamma: '\\\\gamma',\n Delta: '\\\\Delta',\n delta: '\\\\delta',\n Epsilon: 'E',\n epsilon: '\\\\epsilon',\n varepsilon: '\\\\varepsilon',\n Zeta: 'Z',\n zeta: '\\\\zeta',\n Eta: 'H',\n eta: '\\\\eta',\n Theta: '\\\\Theta',\n theta: '\\\\theta',\n vartheta: '\\\\vartheta',\n Iota: 'I',\n iota: '\\\\iota',\n Kappa: 'K',\n kappa: '\\\\kappa',\n varkappa: '\\\\varkappa',\n Lambda: '\\\\Lambda',\n lambda: '\\\\lambda',\n Mu: 'M',\n mu: '\\\\mu',\n Nu: 'N',\n nu: '\\\\nu',\n Xi: '\\\\Xi',\n xi: '\\\\xi',\n Omicron: 'O',\n omicron: 'o',\n Pi: '\\\\Pi',\n pi: '\\\\pi',\n varpi: '\\\\varpi',\n Rho: 'P',\n rho: '\\\\rho',\n varrho: '\\\\varrho',\n Sigma: '\\\\Sigma',\n sigma: '\\\\sigma',\n varsigma: '\\\\varsigma',\n Tau: 'T',\n tau: '\\\\tau',\n Upsilon: '\\\\Upsilon',\n upsilon: '\\\\upsilon',\n Phi: '\\\\Phi',\n phi: '\\\\phi',\n varphi: '\\\\varphi',\n Chi: 'X',\n chi: '\\\\chi',\n Psi: '\\\\Psi',\n psi: '\\\\psi',\n Omega: '\\\\Omega',\n omega: '\\\\omega',\n // logic\n true: '\\\\mathrm{True}',\n false: '\\\\mathrm{False}',\n // other\n i: 'i',\n // TODO use \\i ??\n inf: '\\\\infty',\n Inf: '\\\\infty',\n infinity: '\\\\infty',\n Infinity: '\\\\infty',\n oo: '\\\\infty',\n lim: '\\\\lim',\n undefined: '\\\\mathbf{?}'\n};\nexport var latexOperators = {\n transpose: '^\\\\top',\n ctranspose: '^H',\n factorial: '!',\n pow: '^',\n dotPow: '.^\\\\wedge',\n // TODO find ideal solution\n unaryPlus: '+',\n unaryMinus: '-',\n bitNot: '\\\\~',\n // TODO find ideal solution\n not: '\\\\neg',\n multiply: '\\\\cdot',\n divide: '\\\\frac',\n // TODO how to handle that properly?\n dotMultiply: '.\\\\cdot',\n // TODO find ideal solution\n dotDivide: '.:',\n // TODO find ideal solution\n mod: '\\\\mod',\n add: '+',\n subtract: '-',\n to: '\\\\rightarrow',\n leftShift: '<<',\n rightArithShift: '>>',\n rightLogShift: '>>>',\n equal: '=',\n unequal: '\\\\neq',\n smaller: '<',\n larger: '>',\n smallerEq: '\\\\leq',\n largerEq: '\\\\geq',\n bitAnd: '\\\\&',\n bitXor: '\\\\underline{|}',\n bitOr: '|',\n and: '\\\\wedge',\n xor: '\\\\veebar',\n or: '\\\\vee'\n};\nexport var latexFunctions = {\n // arithmetic\n abs: {\n 1: '\\\\left|${args[0]}\\\\right|'\n },\n add: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.add, \"${args[1]}\\\\right)\")\n },\n cbrt: {\n 1: '\\\\sqrt[3]{${args[0]}}'\n },\n ceil: {\n 1: '\\\\left\\\\lceil${args[0]}\\\\right\\\\rceil'\n },\n cube: {\n 1: '\\\\left(${args[0]}\\\\right)^3'\n },\n divide: {\n 2: '\\\\frac{${args[0]}}{${args[1]}}'\n },\n dotDivide: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotDivide, \"${args[1]}\\\\right)\")\n },\n dotMultiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotMultiply, \"${args[1]}\\\\right)\")\n },\n dotPow: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotPow, \"${args[1]}\\\\right)\")\n },\n exp: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n expm1: \"\\\\left(e\".concat(latexOperators.pow, \"{${args[0]}}-1\\\\right)\"),\n fix: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n floor: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rfloor'\n },\n gcd: '\\\\gcd\\\\left(${args}\\\\right)',\n hypot: '\\\\hypot\\\\left(${args}\\\\right)',\n log: {\n 1: '\\\\ln\\\\left(${args[0]}\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}\\\\right)'\n },\n log10: {\n 1: '\\\\log_{10}\\\\left(${args[0]}\\\\right)'\n },\n log1p: {\n 1: '\\\\ln\\\\left(${args[0]}+1\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}+1\\\\right)'\n },\n log2: '\\\\log_{2}\\\\left(${args[0]}\\\\right)',\n mod: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.mod, \"${args[1]}\\\\right)\")\n },\n multiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.multiply, \"${args[1]}\\\\right)\")\n },\n norm: {\n 1: '\\\\left\\\\|${args[0]}\\\\right\\\\|',\n 2: undefined // use default template\n\n },\n nthRoot: {\n 2: '\\\\sqrt[${args[1]}]{${args[0]}}'\n },\n nthRoots: {\n 2: '\\\\{y : $y^{args[1]} = {${args[0]}}\\\\}'\n },\n pow: {\n 2: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.pow, \"{${args[1]}}\")\n },\n round: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rceil',\n 2: undefined // use default template\n\n },\n sign: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n sqrt: {\n 1: '\\\\sqrt{${args[0]}}'\n },\n square: {\n 1: '\\\\left(${args[0]}\\\\right)^2'\n },\n subtract: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.subtract, \"${args[1]}\\\\right)\")\n },\n unaryMinus: {\n 1: \"\".concat(latexOperators.unaryMinus, \"\\\\left(${args[0]}\\\\right)\")\n },\n unaryPlus: {\n 1: \"\".concat(latexOperators.unaryPlus, \"\\\\left(${args[0]}\\\\right)\")\n },\n // bitwise\n bitAnd: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitAnd, \"${args[1]}\\\\right)\")\n },\n bitNot: {\n 1: latexOperators.bitNot + '\\\\left(${args[0]}\\\\right)'\n },\n bitOr: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitOr, \"${args[1]}\\\\right)\")\n },\n bitXor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitXor, \"${args[1]}\\\\right)\")\n },\n leftShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.leftShift, \"${args[1]}\\\\right)\")\n },\n rightArithShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightArithShift, \"${args[1]}\\\\right)\")\n },\n rightLogShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightLogShift, \"${args[1]}\\\\right)\")\n },\n // combinatorics\n bellNumbers: {\n 1: '\\\\mathrm{B}_{${args[0]}}'\n },\n catalan: {\n 1: '\\\\mathrm{C}_{${args[0]}}'\n },\n stirlingS2: {\n 2: '\\\\mathrm{S}\\\\left(${args}\\\\right)'\n },\n // complex\n arg: {\n 1: '\\\\arg\\\\left(${args[0]}\\\\right)'\n },\n conj: {\n 1: '\\\\left(${args[0]}\\\\right)^*'\n },\n im: {\n 1: '\\\\Im\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n re: {\n 1: '\\\\Re\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n // logical\n and: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.and, \"${args[1]}\\\\right)\")\n },\n not: {\n 1: latexOperators.not + '\\\\left(${args[0]}\\\\right)'\n },\n or: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.or, \"${args[1]}\\\\right)\")\n },\n xor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.xor, \"${args[1]}\\\\right)\")\n },\n // matrix\n cross: {\n 2: '\\\\left(${args[0]}\\\\right)\\\\times\\\\left(${args[1]}\\\\right)'\n },\n ctranspose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.ctranspose)\n },\n det: {\n 1: '\\\\det\\\\left(${args[0]}\\\\right)'\n },\n dot: {\n 2: '\\\\left(${args[0]}\\\\cdot${args[1]}\\\\right)'\n },\n expm: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n inv: {\n 1: '\\\\left(${args[0]}\\\\right)^{-1}'\n },\n sqrtm: {\n 1: \"{${args[0]}}\".concat(latexOperators.pow, \"{\\\\frac{1}{2}}\")\n },\n trace: {\n 1: '\\\\mathrm{tr}\\\\left(${args[0]}\\\\right)'\n },\n transpose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.transpose)\n },\n // probability\n combinations: {\n 2: '\\\\binom{${args[0]}}{${args[1]}}'\n },\n combinationsWithRep: {\n 2: '\\\\left(\\\\!\\\\!{\\\\binom{${args[0]}}{${args[1]}}}\\\\!\\\\!\\\\right)'\n },\n factorial: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.factorial)\n },\n gamma: {\n 1: '\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n // relational\n equal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.equal, \"${args[1]}\\\\right)\")\n },\n larger: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.larger, \"${args[1]}\\\\right)\")\n },\n largerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.largerEq, \"${args[1]}\\\\right)\")\n },\n smaller: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smaller, \"${args[1]}\\\\right)\")\n },\n smallerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smallerEq, \"${args[1]}\\\\right)\")\n },\n unequal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.unequal, \"${args[1]}\\\\right)\")\n },\n // special\n erf: {\n 1: 'erf\\\\left(${args[0]}\\\\right)'\n },\n // statistics\n max: '\\\\max\\\\left(${args}\\\\right)',\n min: '\\\\min\\\\left(${args}\\\\right)',\n variance: '\\\\mathrm{Var}\\\\left(${args}\\\\right)',\n // trigonometry\n acos: {\n 1: '\\\\cos^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acosh: {\n 1: '\\\\cosh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acot: {\n 1: '\\\\cot^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acoth: {\n 1: '\\\\coth^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsc: {\n 1: '\\\\csc^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsch: {\n 1: '\\\\mathrm{csch}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asec: {\n 1: '\\\\sec^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asech: {\n 1: '\\\\mathrm{sech}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asin: {\n 1: '\\\\sin^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asinh: {\n 1: '\\\\sinh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan: {\n 1: '\\\\tan^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan2: {\n 2: '\\\\mathrm{atan2}\\\\left(${args}\\\\right)'\n },\n atanh: {\n 1: '\\\\tanh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n cos: {\n 1: '\\\\cos\\\\left(${args[0]}\\\\right)'\n },\n cosh: {\n 1: '\\\\cosh\\\\left(${args[0]}\\\\right)'\n },\n cot: {\n 1: '\\\\cot\\\\left(${args[0]}\\\\right)'\n },\n coth: {\n 1: '\\\\coth\\\\left(${args[0]}\\\\right)'\n },\n csc: {\n 1: '\\\\csc\\\\left(${args[0]}\\\\right)'\n },\n csch: {\n 1: '\\\\mathrm{csch}\\\\left(${args[0]}\\\\right)'\n },\n sec: {\n 1: '\\\\sec\\\\left(${args[0]}\\\\right)'\n },\n sech: {\n 1: '\\\\mathrm{sech}\\\\left(${args[0]}\\\\right)'\n },\n sin: {\n 1: '\\\\sin\\\\left(${args[0]}\\\\right)'\n },\n sinh: {\n 1: '\\\\sinh\\\\left(${args[0]}\\\\right)'\n },\n tan: {\n 1: '\\\\tan\\\\left(${args[0]}\\\\right)'\n },\n tanh: {\n 1: '\\\\tanh\\\\left(${args[0]}\\\\right)'\n },\n // unit\n to: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.to, \"${args[1]}\\\\right)\")\n },\n // utils\n numeric: function numeric(node, options) {\n // Not sure if this is strictly right but should work correctly for the vast majority of use cases.\n return node.args[0].toTex();\n },\n // type\n number: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n },\n string: {\n 0: '\\\\mathtt{\"\"}',\n 1: '\\\\mathrm{string}\\\\left(${args[0]}\\\\right)'\n },\n bignumber: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n complex: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: \"\\\\left(\\\\left(${args[0]}\\\\right)+\".concat(latexSymbols.i, \"\\\\cdot\\\\left(${args[1]}\\\\right)\\\\right)\")\n },\n matrix: {\n 0: '\\\\begin{bmatrix}\\\\end{bmatrix}',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(${args[0]}\\\\right)'\n },\n sparse: {\n 0: '\\\\begin{bsparse}\\\\end{bsparse}',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n unit: {\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n }\n};\nexport var defaultTemplate = '\\\\mathrm{${name}}\\\\left(${args}\\\\right)';\nvar latexUnits = {\n deg: '^\\\\circ'\n};\nexport function escapeLatex(string) {\n return escapeLatexLib(string, {\n preserveFormatting: true\n });\n} // @param {string} name\n// @param {boolean} isUnit\n\nexport function toSymbol(name, isUnit) {\n isUnit = typeof isUnit === 'undefined' ? false : isUnit;\n\n if (isUnit) {\n if (hasOwnProperty(latexUnits, name)) {\n return latexUnits[name];\n }\n\n return '\\\\mathrm{' + escapeLatex(name) + '}';\n }\n\n if (hasOwnProperty(latexSymbols, name)) {\n return latexSymbols[name];\n }\n\n return escapeLatex(name);\n}","import { format } from '../../utils/string.js';\nimport { typeOf } from '../../utils/is.js';\nimport { escapeLatex } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ConstantNode';\nvar dependencies = ['Node'];\nexport var createConstantNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * A ConstantNode holds a constant value like a number or string.\n *\n * Usage:\n *\n * new ConstantNode(2.3)\n * new ConstantNode('hello')\n *\n * @param {*} value Value can be any type (number, BigNumber, string, ...)\n * @constructor ConstantNode\n * @extends {Node}\n */\n function ConstantNode(value) {\n if (!(this instanceof ConstantNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.value = value;\n }\n\n ConstantNode.prototype = new Node();\n ConstantNode.prototype.type = 'ConstantNode';\n ConstantNode.prototype.isConstantNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ConstantNode.prototype._compile = function (math, argNames) {\n var value = this.value;\n return function evalConstantNode() {\n return value;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ConstantNode.prototype.forEach = function (callback) {// nothing to do, we don't have childs\n };\n /**\n * Create a new ConstantNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ConstantNode} Returns a clone of the node\n */\n\n\n ConstantNode.prototype.map = function (callback) {\n return this.clone();\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConstantNode}\n */\n\n\n ConstantNode.prototype.clone = function () {\n return new ConstantNode(this.value);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConstantNode.prototype._toString = function (options) {\n return format(this.value, options);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConstantNode.prototype.toHTML = function (options) {\n var value = this._toString(options);\n\n switch (typeOf(this.value)) {\n case 'number':\n case 'BigNumber':\n case 'Fraction':\n return '' + value + '';\n\n case 'string':\n return '' + value + '';\n\n case 'boolean':\n return '' + value + '';\n\n case 'null':\n return '' + value + '';\n\n case 'undefined':\n return '' + value + '';\n\n default:\n return '' + value + '';\n }\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ConstantNode.prototype.toJSON = function () {\n return {\n mathjs: 'ConstantNode',\n value: this.value\n };\n };\n /**\n * Instantiate a ConstantNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", value: 2.3}`,\n * where mathjs is optional\n * @returns {ConstantNode}\n */\n\n\n ConstantNode.fromJSON = function (json) {\n return new ConstantNode(json.value);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConstantNode.prototype._toTex = function (options) {\n var value = this._toString(options);\n\n switch (typeOf(this.value)) {\n case 'string':\n return '\\\\mathtt{' + escapeLatex(value) + '}';\n\n case 'number':\n case 'BigNumber':\n {\n if (!isFinite(this.value)) {\n return this.value.valueOf() < 0 ? '-\\\\infty' : '\\\\infty';\n }\n\n var index = value.toLowerCase().indexOf('e');\n\n if (index !== -1) {\n return value.substring(0, index) + '\\\\cdot10^{' + value.substring(index + 1) + '}';\n }\n }\n return value;\n\n case 'Fraction':\n return this.value.toLatex();\n\n default:\n return value;\n }\n };\n\n return ConstantNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { escape } from '../../utils/string.js';\nimport { forEach, join } from '../../utils/array.js';\nimport { toSymbol } from '../../utils/latex.js';\nimport { getPrecedence } from '../operators.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'FunctionAssignmentNode';\nvar dependencies = ['typed', 'Node'];\nexport var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Node\n } = _ref;\n\n /**\n * @constructor FunctionAssignmentNode\n * @extends {Node}\n * Function assignment\n *\n * @param {string} name Function name\n * @param {string[] | Array.<{name: string, type: string}>} params\n * Array with function parameter names, or an\n * array with objects containing the name\n * and type of the parameter\n * @param {Node} expr The function expression\n */\n function FunctionAssignmentNode(name, params, expr) {\n if (!(this instanceof FunctionAssignmentNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (typeof name !== 'string') throw new TypeError('String expected for parameter \"name\"');\n if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter \"params\"');\n if (!isNode(expr)) throw new TypeError('Node expected for parameter \"expr\"');\n if (keywords.has(name)) throw new Error('Illegal function name, \"' + name + '\" is a reserved keyword');\n this.name = name;\n this.params = params.map(function (param) {\n return param && param.name || param;\n });\n this.types = params.map(function (param) {\n return param && param.type || 'any';\n });\n this.expr = expr;\n }\n\n FunctionAssignmentNode.prototype = new Node();\n FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode';\n FunctionAssignmentNode.prototype.isFunctionAssignmentNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n FunctionAssignmentNode.prototype._compile = function (math, argNames) {\n var childArgNames = Object.create(argNames);\n forEach(this.params, function (param) {\n childArgNames[param] = true;\n }); // compile the function expression with the child args\n\n var evalExpr = this.expr._compile(math, childArgNames);\n\n var name = this.name;\n var params = this.params;\n var signature = join(this.types, ',');\n var syntax = name + '(' + join(this.params, ', ') + ')';\n return function evalFunctionAssignmentNode(scope, args, context) {\n var signatures = {};\n\n signatures[signature] = function () {\n var childArgs = Object.create(args);\n\n for (var i = 0; i < params.length; i++) {\n childArgs[params[i]] = arguments[i];\n }\n\n return evalExpr(scope, childArgs, context);\n };\n\n var fn = typed(name, signatures);\n fn.syntax = syntax;\n scope.set(name, fn);\n return fn;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n FunctionAssignmentNode.prototype.forEach = function (callback) {\n callback(this.expr, 'expr', this);\n };\n /**\n * Create a new FunctionAssignmentNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionAssignmentNode} Returns a transformed copy of the node\n */\n\n\n FunctionAssignmentNode.prototype.map = function (callback) {\n var expr = this._ifNode(callback(this.expr, 'expr', this));\n\n return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionAssignmentNode}\n */\n\n\n FunctionAssignmentNode.prototype.clone = function () {\n return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);\n };\n /**\n * Is parenthesis needed?\n * @param {Node} node\n * @param {Object} parenthesis\n * @private\n */\n\n\n function needParenthesis(node, parenthesis) {\n var precedence = getPrecedence(node, parenthesis);\n var exprPrecedence = getPrecedence(node.expr, parenthesis);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n /**\n * get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionAssignmentNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toString(options);\n\n if (needParenthesis(this, parenthesis)) {\n expr = '(' + expr + ')';\n }\n\n return this.name + '(' + this.params.join(', ') + ') = ' + expr;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n FunctionAssignmentNode.prototype.toJSON = function () {\n var types = this.types;\n return {\n mathjs: 'FunctionAssignmentNode',\n name: this.name,\n params: this.params.map(function (param, index) {\n return {\n name: param,\n type: types[index]\n };\n }),\n expr: this.expr\n };\n };\n /**\n * Instantiate an FunctionAssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionAssignmentNode\", name: ..., params: ..., expr: ...}`,\n * where mathjs is optional\n * @returns {FunctionAssignmentNode}\n */\n\n\n FunctionAssignmentNode.fromJSON = function (json) {\n return new FunctionAssignmentNode(json.name, json.params, json.expr);\n };\n /**\n * get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionAssignmentNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var params = [];\n\n for (var i = 0; i < this.params.length; i++) {\n params.push('' + escape(this.params[i]) + '');\n }\n\n var expr = this.expr.toHTML(options);\n\n if (needParenthesis(this, parenthesis)) {\n expr = '(' + expr + ')';\n }\n\n return '' + escape(this.name) + '' + '(' + params.join(',') + ')=' + expr;\n };\n /**\n * get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionAssignmentNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toTex(options);\n\n if (needParenthesis(this, parenthesis)) {\n expr = \"\\\\left(\".concat(expr, \"\\\\right)\");\n }\n\n return '\\\\mathrm{' + this.name + '}\\\\left(' + this.params.map(toSymbol).join(',') + '\\\\right):=' + expr;\n };\n\n return FunctionAssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isBigNumber, isConstantNode, isNode, isRangeNode, isSymbolNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { escape } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nvar name = 'IndexNode';\nvar dependencies = ['Range', 'Node', 'size'];\nexport var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Range,\n Node,\n size\n } = _ref;\n\n /**\n * @constructor IndexNode\n * @extends Node\n *\n * Describes a subset of a matrix or an object property.\n * Cannot be used on its own, needs to be used within an AccessorNode or\n * AssignmentNode.\n *\n * @param {Node[]} dimensions\n * @param {boolean} [dotNotation=false] Optional property describing whether\n * this index was written using dot\n * notation like `a.b`, or using bracket\n * notation like `a[\"b\"]` (default).\n * Used to stringify an IndexNode.\n */\n function IndexNode(dimensions, dotNotation) {\n if (!(this instanceof IndexNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.dimensions = dimensions;\n this.dotNotation = dotNotation || false; // validate input\n\n if (!Array.isArray(dimensions) || !dimensions.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"dimensions\"');\n }\n\n if (this.dotNotation && !this.isObjectProperty()) {\n throw new Error('dotNotation only applicable for object properties');\n }\n }\n\n IndexNode.prototype = new Node();\n IndexNode.prototype.type = 'IndexNode';\n IndexNode.prototype.isIndexNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n IndexNode.prototype._compile = function (math, argNames) {\n // TODO: implement support for bignumber (currently bignumbers are silently\n // reduced to numbers when changing the value to zero-based)\n // TODO: Optimization: when the range values are ConstantNodes,\n // we can beforehand resolve the zero-based value\n // optimization for a simple object property\n var evalDimensions = map(this.dimensions, function (range, i) {\n if (isRangeNode(range)) {\n if (range.needsEnd()) {\n // create a range containing end (like '4:end')\n var childArgNames = Object.create(argNames);\n childArgNames.end = true;\n\n var evalStart = range.start._compile(math, childArgNames);\n\n var evalEnd = range.end._compile(math, childArgNames);\n\n var evalStep = range.step ? range.step._compile(math, childArgNames) : function () {\n return 1;\n };\n return function evalDimension(scope, args, context) {\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return createRange(evalStart(scope, childArgs, context), evalEnd(scope, childArgs, context), evalStep(scope, childArgs, context));\n };\n } else {\n // create range\n var _evalStart = range.start._compile(math, argNames);\n\n var _evalEnd = range.end._compile(math, argNames);\n\n var _evalStep = range.step ? range.step._compile(math, argNames) : function () {\n return 1;\n };\n\n return function evalDimension(scope, args, context) {\n return createRange(_evalStart(scope, args, context), _evalEnd(scope, args, context), _evalStep(scope, args, context));\n };\n }\n } else if (isSymbolNode(range) && range.name === 'end') {\n // SymbolNode 'end'\n var _childArgNames = Object.create(argNames);\n\n _childArgNames.end = true;\n\n var evalRange = range._compile(math, _childArgNames);\n\n return function evalDimension(scope, args, context) {\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return evalRange(scope, childArgs, context);\n };\n } else {\n // ConstantNode\n var _evalRange = range._compile(math, argNames);\n\n return function evalDimension(scope, args, context) {\n return _evalRange(scope, args, context);\n };\n }\n });\n var index = getSafeProperty(math, 'index');\n return function evalIndexNode(scope, args, context) {\n var dimensions = map(evalDimensions, function (evalDimension) {\n return evalDimension(scope, args, context);\n });\n return index(...dimensions);\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n IndexNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.dimensions.length; i++) {\n callback(this.dimensions[i], 'dimensions[' + i + ']', this);\n }\n };\n /**\n * Create a new IndexNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {IndexNode} Returns a transformed copy of the node\n */\n\n\n IndexNode.prototype.map = function (callback) {\n var dimensions = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this._ifNode(callback(this.dimensions[i], 'dimensions[' + i + ']', this));\n }\n\n return new IndexNode(dimensions, this.dotNotation);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {IndexNode}\n */\n\n\n IndexNode.prototype.clone = function () {\n return new IndexNode(this.dimensions.slice(0), this.dotNotation);\n };\n /**\n * Test whether this IndexNode contains a single property name\n * @return {boolean}\n */\n\n\n IndexNode.prototype.isObjectProperty = function () {\n return this.dimensions.length === 1 && isConstantNode(this.dimensions[0]) && typeof this.dimensions[0].value === 'string';\n };\n /**\n * Returns the property name if IndexNode contains a property.\n * If not, returns null.\n * @return {string | null}\n */\n\n\n IndexNode.prototype.getObjectProperty = function () {\n return this.isObjectProperty() ? this.dimensions[0].value : null;\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n IndexNode.prototype._toString = function (options) {\n // format the parameters like \"[1, 0:5]\"\n return this.dotNotation ? '.' + this.getObjectProperty() : '[' + this.dimensions.join(', ') + ']';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n IndexNode.prototype.toJSON = function () {\n return {\n mathjs: 'IndexNode',\n dimensions: this.dimensions,\n dotNotation: this.dotNotation\n };\n };\n /**\n * Instantiate an IndexNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"IndexNode\", dimensions: [...], dotNotation: false}`,\n * where mathjs is optional\n * @returns {IndexNode}\n */\n\n\n IndexNode.fromJSON = function (json) {\n return new IndexNode(json.dimensions, json.dotNotation);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n IndexNode.prototype.toHTML = function (options) {\n // format the parameters like \"[1, 0:5]\"\n var dimensions = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this.dimensions[i].toHTML();\n }\n\n if (this.dotNotation) {\n return '.' + '' + escape(this.getObjectProperty()) + '';\n } else {\n return '[' + dimensions.join(',') + ']';\n }\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n IndexNode.prototype._toTex = function (options) {\n var dimensions = this.dimensions.map(function (range) {\n return range.toTex(options);\n });\n return this.dotNotation ? '.' + this.getObjectProperty() + '' : '_{' + dimensions.join(',') + '}';\n }; // helper function to create a Range from start, step and end\n\n\n function createRange(start, end, step) {\n return new Range(isBigNumber(start) ? start.toNumber() : start, isBigNumber(end) ? end.toNumber() : end, isBigNumber(step) ? step.toNumber() : step);\n }\n\n return IndexNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is.js';\nimport { escape, stringify } from '../../utils/string.js';\nimport { isSafeProperty } from '../../utils/customs.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ObjectNode';\nvar dependencies = ['Node'];\nexport var createObjectNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * @constructor ObjectNode\n * @extends {Node}\n * Holds an object with keys/values\n * @param {Object.} [properties] object with key/value pairs\n */\n function ObjectNode(properties) {\n if (!(this instanceof ObjectNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.properties = properties || {}; // validate input\n\n if (properties) {\n if (!(typeof properties === 'object') || !Object.keys(properties).every(function (key) {\n return isNode(properties[key]);\n })) {\n throw new TypeError('Object containing Nodes expected');\n }\n }\n }\n\n ObjectNode.prototype = new Node();\n ObjectNode.prototype.type = 'ObjectNode';\n ObjectNode.prototype.isObjectNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ObjectNode.prototype._compile = function (math, argNames) {\n var evalEntries = {};\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n // we stringify/parse the key here to resolve unicode characters,\n // so you cannot create a key like {\"co\\\\u006Estructor\": null}\n var stringifiedKey = stringify(key);\n var parsedKey = JSON.parse(stringifiedKey);\n\n if (!isSafeProperty(this.properties, parsedKey)) {\n throw new Error('No access to property \"' + parsedKey + '\"');\n }\n\n evalEntries[parsedKey] = this.properties[key]._compile(math, argNames);\n }\n }\n\n return function evalObjectNode(scope, args, context) {\n var obj = {};\n\n for (var _key in evalEntries) {\n if (hasOwnProperty(evalEntries, _key)) {\n obj[_key] = evalEntries[_key](scope, args, context);\n }\n }\n\n return obj;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ObjectNode.prototype.forEach = function (callback) {\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n callback(this.properties[key], 'properties[' + stringify(key) + ']', this);\n }\n }\n };\n /**\n * Create a new ObjectNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ObjectNode} Returns a transformed copy of the node\n */\n\n\n ObjectNode.prototype.map = function (callback) {\n var properties = {};\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this._ifNode(callback(this.properties[key], 'properties[' + stringify(key) + ']', this));\n }\n }\n\n return new ObjectNode(properties);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ObjectNode}\n */\n\n\n ObjectNode.prototype.clone = function () {\n var properties = {};\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this.properties[key];\n }\n }\n\n return new ObjectNode(properties);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ObjectNode.prototype._toString = function (options) {\n var entries = [];\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push(stringify(key) + ': ' + this.properties[key].toString(options));\n }\n }\n\n return '{' + entries.join(', ') + '}';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ObjectNode.prototype.toJSON = function () {\n return {\n mathjs: 'ObjectNode',\n properties: this.properties\n };\n };\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ObjectNode\", \"properties\": {...}}`,\n * where mathjs is optional\n * @returns {ObjectNode}\n */\n\n\n ObjectNode.fromJSON = function (json) {\n return new ObjectNode(json.properties);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ObjectNode.prototype.toHTML = function (options) {\n var entries = [];\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('' + escape(key) + '' + ':' + this.properties[key].toHTML(options));\n }\n }\n\n return '{' + entries.join(',') + '}';\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ObjectNode.prototype._toTex = function (options) {\n var entries = [];\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('\\\\mathbf{' + key + ':} & ' + this.properties[key].toTex(options) + '\\\\\\\\');\n }\n }\n\n return \"\\\\left\\\\{\\\\begin{array}{ll}\".concat(entries.join('\\n'), \"\\\\end{array}\\\\right\\\\}\");\n };\n\n return ObjectNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty, isSafeMethod } from '../../utils/customs.js';\nimport { getAssociativity, getPrecedence, isAssociativeWith, properties } from '../operators.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'OperatorNode';\nvar dependencies = ['Node'];\nexport var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * @constructor OperatorNode\n * @extends {Node}\n * An operator with two arguments, like 2+3\n *\n * @param {string} op Operator name, for example '+'\n * @param {string} fn Function name, for example 'add'\n * @param {Node[]} args Operator arguments\n * @param {boolean} [implicit] Is this an implicit multiplication?\n * @param {boolean} [isPercentage] Is this an percentage Operation?\n */\n function OperatorNode(op, fn, args, implicit, isPercentage) {\n if (!(this instanceof OperatorNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (typeof op !== 'string') {\n throw new TypeError('string expected for parameter \"op\"');\n }\n\n if (typeof fn !== 'string') {\n throw new TypeError('string expected for parameter \"fn\"');\n }\n\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n\n this.implicit = implicit === true;\n this.isPercentage = isPercentage === true;\n this.op = op;\n this.fn = fn;\n this.args = args || [];\n }\n\n OperatorNode.prototype = new Node();\n OperatorNode.prototype.type = 'OperatorNode';\n OperatorNode.prototype.isOperatorNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n OperatorNode.prototype._compile = function (math, argNames) {\n // validate fn\n if (typeof this.fn !== 'string' || !isSafeMethod(math, this.fn)) {\n if (!math[this.fn]) {\n throw new Error('Function ' + this.fn + ' missing in provided namespace \"math\"');\n } else {\n throw new Error('No access to function \"' + this.fn + '\"');\n }\n }\n\n var fn = getSafeProperty(math, this.fn);\n var evalArgs = map(this.args, function (arg) {\n return arg._compile(math, argNames);\n });\n\n if (evalArgs.length === 1) {\n var evalArg0 = evalArgs[0];\n return function evalOperatorNode(scope, args, context) {\n return fn(evalArg0(scope, args, context));\n };\n } else if (evalArgs.length === 2) {\n var _evalArg = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return function evalOperatorNode(scope, args, context) {\n return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));\n };\n } else {\n return function evalOperatorNode(scope, args, context) {\n return fn.apply(null, map(evalArgs, function (evalArg) {\n return evalArg(scope, args, context);\n }));\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n OperatorNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n };\n /**\n * Create a new OperatorNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n\n\n OperatorNode.prototype.map = function (callback) {\n var args = [];\n\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n\n return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {OperatorNode}\n */\n\n\n OperatorNode.prototype.clone = function () {\n return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);\n };\n /**\n * Check whether this is an unary OperatorNode:\n * has exactly one argument, like `-a`.\n * @return {boolean} Returns true when an unary operator node, false otherwise.\n */\n\n\n OperatorNode.prototype.isUnary = function () {\n return this.args.length === 1;\n };\n /**\n * Check whether this is a binary OperatorNode:\n * has exactly two arguments, like `a + b`.\n * @return {boolean} Returns true when a binary operator node, false otherwise.\n */\n\n\n OperatorNode.prototype.isBinary = function () {\n return this.args.length === 2;\n };\n /**\n * Calculate which parentheses are necessary. Gets an OperatorNode\n * (which is the root of the tree) and an Array of Nodes\n * (this.args) and returns an array where 'true' means that an argument\n * has to be enclosed in parentheses whereas 'false' means the opposite.\n *\n * @param {OperatorNode} root\n * @param {string} parenthesis\n * @param {Node[]} args\n * @param {boolean} latex\n * @return {boolean[]}\n * @private\n */\n\n\n function calculateNecessaryParentheses(root, parenthesis, implicit, args, latex) {\n // precedence of the root OperatorNode\n var precedence = getPrecedence(root, parenthesis);\n var associativity = getAssociativity(root, parenthesis);\n\n if (parenthesis === 'all' || args.length > 2 && root.getIdentifier() !== 'OperatorNode:add' && root.getIdentifier() !== 'OperatorNode:multiply') {\n return args.map(function (arg) {\n switch (arg.getContent().type) {\n // Nodes that don't need extra parentheses\n case 'ArrayNode':\n case 'ConstantNode':\n case 'SymbolNode':\n case 'ParenthesisNode':\n return false;\n\n default:\n return true;\n }\n });\n }\n\n var result;\n\n switch (args.length) {\n case 0:\n result = [];\n break;\n\n case 1:\n // unary operators\n {\n // precedence of the operand\n var operandPrecedence = getPrecedence(args[0], parenthesis); // handle special cases for LaTeX, where some of the parentheses aren't needed\n\n if (latex && operandPrecedence !== null) {\n var operandIdentifier;\n var rootIdentifier;\n\n if (parenthesis === 'keep') {\n operandIdentifier = args[0].getIdentifier();\n rootIdentifier = root.getIdentifier();\n } else {\n // Ignore Parenthesis Nodes when not in 'keep' mode\n operandIdentifier = args[0].getContent().getIdentifier();\n rootIdentifier = root.getContent().getIdentifier();\n }\n\n if (properties[precedence][rootIdentifier].latexLeftParens === false) {\n result = [false];\n break;\n }\n\n if (properties[operandPrecedence][operandIdentifier].latexParens === false) {\n result = [false];\n break;\n }\n }\n\n if (operandPrecedence === null) {\n // if the operand has no defined precedence, no parens are needed\n result = [false];\n break;\n }\n\n if (operandPrecedence <= precedence) {\n // if the operands precedence is lower, parens are needed\n result = [true];\n break;\n } // otherwise, no parens needed\n\n\n result = [false];\n }\n break;\n\n case 2:\n // binary operators\n {\n var lhsParens; // left hand side needs parenthesis?\n // precedence of the left hand side\n\n var lhsPrecedence = getPrecedence(args[0], parenthesis); // is the root node associative with the left hand side\n\n var assocWithLhs = isAssociativeWith(root, args[0], parenthesis);\n\n if (lhsPrecedence === null) {\n // if the left hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n lhsParens = false;\n } else if (lhsPrecedence === precedence && associativity === 'right' && !assocWithLhs) {\n // In case of equal precedence, if the root node is left associative\n // parens are **never** necessary for the left hand side.\n // If it is right associative however, parens are necessary\n // if the root node isn't associative with the left hand side\n lhsParens = true;\n } else if (lhsPrecedence < precedence) {\n lhsParens = true;\n } else {\n lhsParens = false;\n }\n\n var rhsParens; // right hand side needs parenthesis?\n // precedence of the right hand side\n\n var rhsPrecedence = getPrecedence(args[1], parenthesis); // is the root node associative with the right hand side?\n\n var assocWithRhs = isAssociativeWith(root, args[1], parenthesis);\n\n if (rhsPrecedence === null) {\n // if the right hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n rhsParens = false;\n } else if (rhsPrecedence === precedence && associativity === 'left' && !assocWithRhs) {\n // In case of equal precedence, if the root node is right associative\n // parens are **never** necessary for the right hand side.\n // If it is left associative however, parens are necessary\n // if the root node isn't associative with the right hand side\n rhsParens = true;\n } else if (rhsPrecedence < precedence) {\n rhsParens = true;\n } else {\n rhsParens = false;\n } // handle special cases for LaTeX, where some of the parentheses aren't needed\n\n\n if (latex) {\n var _rootIdentifier;\n\n var lhsIdentifier;\n var rhsIdentifier;\n\n if (parenthesis === 'keep') {\n _rootIdentifier = root.getIdentifier();\n lhsIdentifier = root.args[0].getIdentifier();\n rhsIdentifier = root.args[1].getIdentifier();\n } else {\n // Ignore ParenthesisNodes when not in 'keep' mode\n _rootIdentifier = root.getContent().getIdentifier();\n lhsIdentifier = root.args[0].getContent().getIdentifier();\n rhsIdentifier = root.args[1].getContent().getIdentifier();\n }\n\n if (lhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexLeftParens === false) {\n lhsParens = false;\n }\n\n if (properties[lhsPrecedence][lhsIdentifier].latexParens === false) {\n lhsParens = false;\n }\n }\n\n if (rhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexRightParens === false) {\n rhsParens = false;\n }\n\n if (properties[rhsPrecedence][rhsIdentifier].latexParens === false) {\n rhsParens = false;\n }\n }\n }\n\n result = [lhsParens, rhsParens];\n }\n break;\n\n default:\n if (root.getIdentifier() === 'OperatorNode:add' || root.getIdentifier() === 'OperatorNode:multiply') {\n result = args.map(function (arg) {\n var argPrecedence = getPrecedence(arg, parenthesis);\n var assocWithArg = isAssociativeWith(root, arg, parenthesis);\n var argAssociativity = getAssociativity(arg, parenthesis);\n\n if (argPrecedence === null) {\n // if the argument has no defined precedence, no parens are needed\n return false;\n } else if (precedence === argPrecedence && associativity === argAssociativity && !assocWithArg) {\n return true;\n } else if (argPrecedence < precedence) {\n return true;\n }\n\n return false;\n });\n }\n\n break;\n } // handles an edge case of 'auto' parentheses with implicit multiplication of ConstantNode\n // In that case print parentheses for ParenthesisNodes even though they normally wouldn't be\n // printed.\n\n\n if (args.length >= 2 && root.getIdentifier() === 'OperatorNode:multiply' && root.implicit && parenthesis === 'auto' && implicit === 'hide') {\n result = args.map(function (arg, index) {\n var isParenthesisNode = arg.getIdentifier() === 'ParenthesisNode';\n\n if (result[index] || isParenthesisNode) {\n // put in parenthesis?\n return true;\n }\n\n return false;\n });\n }\n\n return result;\n }\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n\n\n OperatorNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toString(options);\n\n if (parens[0]) {\n operand = '(' + operand + ')';\n } // for example for \"not\", we want a space between operand and argument\n\n\n var opIsNamed = /[a-zA-Z]+/.test(this.op);\n\n if (assoc === 'right') {\n // prefix operator\n return this.op + (opIsNamed ? ' ' : '') + operand;\n } else if (assoc === 'left') {\n // postfix\n return operand + (opIsNamed ? ' ' : '') + this.op;\n } // fall back to postfix\n\n\n return operand + this.op;\n } else if (args.length === 2) {\n var lhs = args[0].toString(options); // left hand side\n\n var rhs = args[1].toString(options); // right hand side\n\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + ' ' + rhs;\n }\n\n return lhs + ' ' + this.op + ' ' + rhs;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toString(options);\n\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n\n return arg;\n });\n\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join(' ');\n }\n\n return stringifiedArgs.join(' ' + this.op + ' ');\n } else {\n // fallback to formatting as a function call\n return this.fn + '(' + this.args.join(', ') + ')';\n }\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n OperatorNode.prototype.toJSON = function () {\n return {\n mathjs: 'OperatorNode',\n op: this.op,\n fn: this.fn,\n args: this.args,\n implicit: this.implicit,\n isPercentage: this.isPercentage\n };\n };\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"OperatorNode\", \"op\": \"+\", \"fn\": \"add\", \"args\": [...], \"implicit\": false, \"isPercentage\":false}`,\n * where mathjs is optional\n * @returns {OperatorNode}\n */\n\n\n OperatorNode.fromJSON = function (json) {\n return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);\n };\n /**\n * Get HTML representation.\n * @param {Object} options\n * @return {string} str\n */\n\n\n OperatorNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toHTML(options);\n\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n\n if (assoc === 'right') {\n // prefix operator\n return '' + escape(this.op) + '' + operand;\n } else {\n // postfix when assoc === 'left' or undefined\n return operand + '' + escape(this.op) + '';\n }\n } else if (args.length === 2) {\n // binary operatoes\n var lhs = args[0].toHTML(options); // left hand side\n\n var rhs = args[1].toHTML(options); // right hand side\n\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + '' + rhs;\n }\n\n return lhs + '' + escape(this.op) + '' + rhs;\n } else {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toHTML(options);\n\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n\n return arg;\n });\n\n if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join('');\n }\n\n return stringifiedArgs.join('' + escape(this.op) + '');\n } else {\n // fallback to formatting as a function call\n return '' + escape(this.fn) + '(' + stringifiedArgs.join(',') + ')';\n }\n }\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n OperatorNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, true);\n var op = latexOperators[this.fn];\n op = typeof op === 'undefined' ? this.op : op; // fall back to using this.op\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toTex(options);\n\n if (parens[0]) {\n operand = \"\\\\left(\".concat(operand, \"\\\\right)\");\n }\n\n if (assoc === 'right') {\n // prefix operator\n return op + operand;\n } else if (assoc === 'left') {\n // postfix operator\n return operand + op;\n } // fall back to postfix\n\n\n return operand + op;\n } else if (args.length === 2) {\n // binary operators\n var lhs = args[0]; // left hand side\n\n var lhsTex = lhs.toTex(options);\n\n if (parens[0]) {\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n\n var rhs = args[1]; // right hand side\n\n var rhsTex = rhs.toTex(options);\n\n if (parens[1]) {\n rhsTex = \"\\\\left(\".concat(rhsTex, \"\\\\right)\");\n } // handle some exceptions (due to the way LaTeX works)\n\n\n var lhsIdentifier;\n\n if (parenthesis === 'keep') {\n lhsIdentifier = lhs.getIdentifier();\n } else {\n // Ignore ParenthesisNodes if in 'keep' mode\n lhsIdentifier = lhs.getContent().getIdentifier();\n }\n\n switch (this.getIdentifier()) {\n case 'OperatorNode:divide':\n // op contains '\\\\frac' at this point\n return op + '{' + lhsTex + '}' + '{' + rhsTex + '}';\n\n case 'OperatorNode:pow':\n lhsTex = '{' + lhsTex + '}';\n rhsTex = '{' + rhsTex + '}';\n\n switch (lhsIdentifier) {\n case 'ConditionalNode': //\n\n case 'OperatorNode:divide':\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n\n break;\n\n case 'OperatorNode:multiply':\n if (this.implicit && implicit === 'hide') {\n return lhsTex + '~' + rhsTex;\n }\n\n }\n\n return lhsTex + op + rhsTex;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var texifiedArgs = args.map(function (arg, index) {\n arg = arg.toTex(options);\n\n if (parens[index]) {\n arg = \"\\\\left(\".concat(arg, \"\\\\right)\");\n }\n\n return arg;\n });\n\n if (this.getIdentifier() === 'OperatorNode:multiply' && this.implicit) {\n return texifiedArgs.join('~');\n }\n\n return texifiedArgs.join(op);\n } else {\n // fall back to formatting as a function call\n // as this is a fallback, it doesn't use\n // fancy function names\n return '\\\\mathrm{' + this.fn + '}\\\\left(' + args.map(function (arg) {\n return arg.toTex(options);\n }).join(',') + '\\\\right)';\n }\n };\n /**\n * Get identifier.\n * @return {string}\n */\n\n\n OperatorNode.prototype.getIdentifier = function () {\n return this.type + ':' + this.fn;\n };\n\n return OperatorNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ParenthesisNode';\nvar dependencies = ['Node'];\nexport var createParenthesisNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * @constructor ParenthesisNode\n * @extends {Node}\n * A parenthesis node describes manual parenthesis from the user input\n * @param {Node} content\n * @extends {Node}\n */\n function ParenthesisNode(content) {\n if (!(this instanceof ParenthesisNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (!isNode(content)) {\n throw new TypeError('Node expected for parameter \"content\"');\n }\n\n this.content = content;\n }\n\n ParenthesisNode.prototype = new Node();\n ParenthesisNode.prototype.type = 'ParenthesisNode';\n ParenthesisNode.prototype.isParenthesisNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ParenthesisNode.prototype._compile = function (math, argNames) {\n return this.content._compile(math, argNames);\n };\n /**\n * Get the content of the current Node.\n * @return {Node} content\n * @override\n **/\n\n\n ParenthesisNode.prototype.getContent = function () {\n return this.content.getContent();\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ParenthesisNode.prototype.forEach = function (callback) {\n callback(this.content, 'content', this);\n };\n /**\n * Create a new ParenthesisNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ParenthesisNode} Returns a clone of the node\n */\n\n\n ParenthesisNode.prototype.map = function (callback) {\n var content = callback(this.content, 'content', this);\n return new ParenthesisNode(content);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ParenthesisNode}\n */\n\n\n ParenthesisNode.prototype.clone = function () {\n return new ParenthesisNode(this.content);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ParenthesisNode.prototype._toString = function (options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toString(options) + ')';\n }\n\n return this.content.toString(options);\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ParenthesisNode.prototype.toJSON = function () {\n return {\n mathjs: 'ParenthesisNode',\n content: this.content\n };\n };\n /**\n * Instantiate an ParenthesisNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ParenthesisNode\", \"content\": ...}`,\n * where mathjs is optional\n * @returns {ParenthesisNode}\n */\n\n\n ParenthesisNode.fromJSON = function (json) {\n return new ParenthesisNode(json.content);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ParenthesisNode.prototype.toHTML = function (options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toHTML(options) + ')';\n }\n\n return this.content.toHTML(options);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ParenthesisNode.prototype._toTex = function (options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return \"\\\\left(\".concat(this.content.toTex(options), \"\\\\right)\");\n }\n\n return this.content.toTex(options);\n };\n\n return ParenthesisNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'RangeNode';\nvar dependencies = ['Node'];\nexport var createRangeNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * @constructor RangeNode\n * @extends {Node}\n * create a range\n * @param {Node} start included lower-bound\n * @param {Node} end included upper-bound\n * @param {Node} [step] optional step\n */\n function RangeNode(start, end, step) {\n if (!(this instanceof RangeNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate inputs\n\n\n if (!isNode(start)) throw new TypeError('Node expected');\n if (!isNode(end)) throw new TypeError('Node expected');\n if (step && !isNode(step)) throw new TypeError('Node expected');\n if (arguments.length > 3) throw new Error('Too many arguments');\n this.start = start; // included lower-bound\n\n this.end = end; // included upper-bound\n\n this.step = step || null; // optional step\n }\n\n RangeNode.prototype = new Node();\n RangeNode.prototype.type = 'RangeNode';\n RangeNode.prototype.isRangeNode = true;\n /**\n * Check whether the RangeNode needs the `end` symbol to be defined.\n * This end is the size of the Matrix in current dimension.\n * @return {boolean}\n */\n\n RangeNode.prototype.needsEnd = function () {\n // find all `end` symbols in this RangeNode\n var endSymbols = this.filter(function (node) {\n return isSymbolNode(node) && node.name === 'end';\n });\n return endSymbols.length > 0;\n };\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n\n RangeNode.prototype._compile = function (math, argNames) {\n var range = math.range;\n\n var evalStart = this.start._compile(math, argNames);\n\n var evalEnd = this.end._compile(math, argNames);\n\n if (this.step) {\n var evalStep = this.step._compile(math, argNames);\n\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));\n };\n } else {\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context));\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n RangeNode.prototype.forEach = function (callback) {\n callback(this.start, 'start', this);\n callback(this.end, 'end', this);\n\n if (this.step) {\n callback(this.step, 'step', this);\n }\n };\n /**\n * Create a new RangeNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RangeNode} Returns a transformed copy of the node\n */\n\n\n RangeNode.prototype.map = function (callback) {\n return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {RangeNode}\n */\n\n\n RangeNode.prototype.clone = function () {\n return new RangeNode(this.start, this.end, this.step && this.step);\n };\n /**\n * Calculate the necessary parentheses\n * @param {Node} node\n * @param {string} parenthesis\n * @return {Object} parentheses\n * @private\n */\n\n\n function calculateNecessaryParentheses(node, parenthesis) {\n var precedence = getPrecedence(node, parenthesis);\n var parens = {};\n var startPrecedence = getPrecedence(node.start, parenthesis);\n parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';\n\n if (node.step) {\n var stepPrecedence = getPrecedence(node.step, parenthesis);\n parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';\n }\n\n var endPrecedence = getPrecedence(node.end, parenthesis);\n parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';\n return parens;\n }\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RangeNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop\n\n var str;\n var start = this.start.toString(options);\n\n if (parens.start) {\n start = '(' + start + ')';\n }\n\n str = start;\n\n if (this.step) {\n var step = this.step.toString(options);\n\n if (parens.step) {\n step = '(' + step + ')';\n }\n\n str += ':' + step;\n }\n\n var end = this.end.toString(options);\n\n if (parens.end) {\n end = '(' + end + ')';\n }\n\n str += ':' + end;\n return str;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n RangeNode.prototype.toJSON = function () {\n return {\n mathjs: 'RangeNode',\n start: this.start,\n end: this.end,\n step: this.step\n };\n };\n /**\n * Instantiate an RangeNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"RangeNode\", \"start\": ..., \"end\": ..., \"step\": ...}`,\n * where mathjs is optional\n * @returns {RangeNode}\n */\n\n\n RangeNode.fromJSON = function (json) {\n return new RangeNode(json.start, json.end, json.step);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RangeNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop\n\n var str;\n var start = this.start.toHTML(options);\n\n if (parens.start) {\n start = '(' + start + ')';\n }\n\n str = start;\n\n if (this.step) {\n var step = this.step.toHTML(options);\n\n if (parens.step) {\n step = '(' + step + ')';\n }\n\n str += ':' + step;\n }\n\n var end = this.end.toHTML(options);\n\n if (parens.end) {\n end = '(' + end + ')';\n }\n\n str += ':' + end;\n return str;\n };\n /**\n * Get LaTeX representation\n * @params {Object} options\n * @return {string} str\n */\n\n\n RangeNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis);\n var str = this.start.toTex(options);\n\n if (parens.start) {\n str = \"\\\\left(\".concat(str, \"\\\\right)\");\n }\n\n if (this.step) {\n var step = this.step.toTex(options);\n\n if (parens.step) {\n step = \"\\\\left(\".concat(step, \"\\\\right)\");\n }\n\n str += ':' + step;\n }\n\n var end = this.end.toTex(options);\n\n if (parens.end) {\n end = \"\\\\left(\".concat(end, \"\\\\right)\");\n }\n\n str += ':' + end;\n return str;\n };\n\n return RangeNode;\n}, {\n isClass: true,\n isNode: true\n});","import { getPrecedence } from '../operators.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'RelationalNode';\nvar dependencies = ['Node'];\nexport var createRelationalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n\n /**\n * A node representing a chained conditional expression, such as 'x > y > z'\n *\n * @param {String[]} conditionals An array of conditional operators used to compare the parameters\n * @param {Node[]} params The parameters that will be compared\n *\n * @constructor RelationalNode\n * @extends {Node}\n */\n function RelationalNode(conditionals, params) {\n if (!(this instanceof RelationalNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!Array.isArray(conditionals)) throw new TypeError('Parameter conditionals must be an array');\n if (!Array.isArray(params)) throw new TypeError('Parameter params must be an array');\n if (conditionals.length !== params.length - 1) throw new TypeError('Parameter params must contain exactly one more element than parameter conditionals');\n this.conditionals = conditionals;\n this.params = params;\n }\n\n RelationalNode.prototype = new Node();\n RelationalNode.prototype.type = 'RelationalNode';\n RelationalNode.prototype.isRelationalNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n RelationalNode.prototype._compile = function (math, argNames) {\n var self = this;\n var compiled = this.params.map(p => p._compile(math, argNames));\n return function evalRelationalNode(scope, args, context) {\n var evalLhs;\n var evalRhs = compiled[0](scope, args, context);\n\n for (var i = 0; i < self.conditionals.length; i++) {\n evalLhs = evalRhs;\n evalRhs = compiled[i + 1](scope, args, context);\n var condFn = getSafeProperty(math, self.conditionals[i]);\n\n if (!condFn(evalLhs, evalRhs)) {\n return false;\n }\n }\n\n return true;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n RelationalNode.prototype.forEach = function (callback) {\n this.params.forEach((n, i) => callback(n, 'params[' + i + ']', this), this);\n };\n /**\n * Create a new RelationalNode having its childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RelationalNode} Returns a transformed copy of the node\n */\n\n\n RelationalNode.prototype.map = function (callback) {\n return new RelationalNode(this.conditionals.slice(), this.params.map((n, i) => this._ifNode(callback(n, 'params[' + i + ']', this)), this));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {RelationalNode}\n */\n\n\n RelationalNode.prototype.clone = function () {\n return new RelationalNode(this.conditionals, this.params);\n };\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n\n\n RelationalNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toString(options) + ')' : p.toString(options);\n });\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n var ret = paramStrings[0];\n\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += ' ' + operatorMap[this.conditionals[i]] + ' ' + paramStrings[i + 1];\n }\n\n return ret;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n RelationalNode.prototype.toJSON = function () {\n return {\n mathjs: 'RelationalNode',\n conditionals: this.conditionals,\n params: this.params\n };\n };\n /**\n * Instantiate a RelationalNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"RelationalNode\", \"condition\": ..., \"trueExpr\": ..., \"falseExpr\": ...}`,\n * where mathjs is optional\n * @returns {RelationalNode}\n */\n\n\n RelationalNode.fromJSON = function (json) {\n return new RelationalNode(json.conditionals, json.params);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RelationalNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toHTML(options) + ')' : p.toHTML(options);\n });\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n var ret = paramStrings[0];\n\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += '' + escape(operatorMap[this.conditionals[i]]) + '' + paramStrings[i + 1];\n }\n\n return ret;\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RelationalNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '\\\\left(' + p.toTex(options) + '\\right)' : p.toTex(options);\n });\n var ret = paramStrings[0];\n\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += latexOperators[this.conditionals[i]] + paramStrings[i + 1];\n }\n\n return ret;\n };\n\n return RelationalNode;\n}, {\n isClass: true,\n isNode: true\n});","import { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { toSymbol } from '../../utils/latex.js';\nvar name = 'SymbolNode';\nvar dependencies = ['math', '?Unit', 'Node'];\nexport var createSymbolNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n math,\n Unit,\n Node\n } = _ref;\n\n /**\n * Check whether some name is a valueless unit like \"inch\".\n * @param {string} name\n * @return {boolean}\n */\n function isValuelessUnit(name) {\n return Unit ? Unit.isValuelessUnit(name) : false;\n }\n /**\n * @constructor SymbolNode\n * @extends {Node}\n * A symbol node can hold and resolve a symbol\n * @param {string} name\n * @extends {Node}\n */\n\n\n function SymbolNode(name) {\n if (!(this instanceof SymbolNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (typeof name !== 'string') throw new TypeError('String expected for parameter \"name\"');\n this.name = name;\n }\n\n SymbolNode.prototype = new Node();\n SymbolNode.prototype.type = 'SymbolNode';\n SymbolNode.prototype.isSymbolNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n SymbolNode.prototype._compile = function (math, argNames) {\n var name = this.name;\n\n if (argNames[name] === true) {\n // this is a FunctionAssignment argument\n // (like an x when inside the expression of a function assignment `f(x) = ...`)\n return function (scope, args, context) {\n return args[name];\n };\n } else if (name in math) {\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : getSafeProperty(math, name);\n };\n } else {\n var isUnit = isValuelessUnit(name);\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : isUnit ? new Unit(null, name) : SymbolNode.onUndefinedSymbol(name);\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n SymbolNode.prototype.forEach = function (callback) {// nothing to do, we don't have childs\n };\n /**\n * Create a new SymbolNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {SymbolNode} Returns a clone of the node\n */\n\n\n SymbolNode.prototype.map = function (callback) {\n return this.clone();\n };\n /**\n * Throws an error 'Undefined symbol {name}'\n * @param {string} name\n */\n\n\n SymbolNode.onUndefinedSymbol = function (name) {\n throw new Error('Undefined symbol ' + name);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {SymbolNode}\n */\n\n\n SymbolNode.prototype.clone = function () {\n return new SymbolNode(this.name);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n SymbolNode.prototype._toString = function (options) {\n return this.name;\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n SymbolNode.prototype.toHTML = function (options) {\n var name = escape(this.name);\n\n if (name === 'true' || name === 'false') {\n return '' + name + '';\n } else if (name === 'i') {\n return '' + name + '';\n } else if (name === 'Infinity') {\n return '' + name + '';\n } else if (name === 'NaN') {\n return '' + name + '';\n } else if (name === 'null') {\n return '' + name + '';\n } else if (name === 'undefined') {\n return '' + name + '';\n }\n\n return '' + name + '';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n SymbolNode.prototype.toJSON = function () {\n return {\n mathjs: 'SymbolNode',\n name: this.name\n };\n };\n /**\n * Instantiate a SymbolNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", name: \"x\"}`,\n * where mathjs is optional\n * @returns {SymbolNode}\n */\n\n\n SymbolNode.fromJSON = function (json) {\n return new SymbolNode(json.name);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n SymbolNode.prototype._toTex = function (options) {\n var isUnit = false;\n\n if (typeof math[this.name] === 'undefined' && isValuelessUnit(this.name)) {\n isUnit = true;\n }\n\n var symbol = toSymbol(this.name, isUnit);\n\n if (symbol[0] === '\\\\') {\n // no space needed if the symbol starts with '\\'\n return symbol;\n } // the space prevents symbols from breaking stuff like '\\cdot' if it's written right before the symbol\n\n\n return ' ' + symbol;\n };\n\n return SymbolNode;\n}, {\n isClass: true,\n isNode: true\n});","import { createEmptyMap, assign } from './map.js';\n/**\n * Create a new scope which can access the parent scope,\n * but does not affect it when written. This is suitable for variable definitions\n * within a block node, or function definition.\n *\n * If parent scope has a createSubScope method, it delegates to that. Otherwise,\n * creates an empty map, and copies the parent scope to it, adding in\n * the remaining `args`.\n *\n * @param {Map} parentScope\n * @param {...any} args\n * @returns {Map}\n */\n\nexport function createSubScope(parentScope) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (typeof parentScope.createSubScope === 'function') {\n return assign(parentScope.createSubScope(), ...args);\n }\n\n return assign(createEmptyMap(), parentScope, ...args);\n}","import { isAccessorNode, isFunctionAssignmentNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { escape } from '../../utils/string.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { getSafeProperty, validateSafeMethod } from '../../utils/customs.js';\nimport { createSubScope } from '../../utils/scope.js';\nimport { factory } from '../../utils/factory.js';\nimport { defaultTemplate, latexFunctions } from '../../utils/latex.js';\nvar name = 'FunctionNode';\nvar dependencies = ['math', 'Node', 'SymbolNode'];\nexport var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n math,\n Node,\n SymbolNode\n } = _ref;\n\n /**\n * @constructor FunctionNode\n * @extends {./Node}\n * invoke a list with arguments on a node\n * @param {./Node | string} fn Node resolving with a function on which to invoke\n * the arguments, typically a SymboNode or AccessorNode\n * @param {./Node[]} args\n */\n function FunctionNode(fn, args) {\n if (!(this instanceof FunctionNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (typeof fn === 'string') {\n fn = new SymbolNode(fn);\n } // validate input\n\n\n if (!isNode(fn)) throw new TypeError('Node expected as parameter \"fn\"');\n\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n\n this.fn = fn;\n this.args = args || []; // readonly property name\n\n Object.defineProperty(this, 'name', {\n get: function () {\n return this.fn.name || '';\n }.bind(this),\n set: function set() {\n throw new Error('Cannot assign a new name, name is read-only');\n }\n });\n }\n\n FunctionNode.prototype = new Node();\n FunctionNode.prototype.type = 'FunctionNode';\n FunctionNode.prototype.isFunctionNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n FunctionNode.prototype._compile = function (math, argNames) {\n if (!(this instanceof FunctionNode)) {\n throw new TypeError('No valid FunctionNode');\n } // compile arguments\n\n\n var evalArgs = this.args.map(arg => arg._compile(math, argNames));\n\n if (isSymbolNode(this.fn)) {\n // we can statically determine whether the function has an rawArgs property\n var _name = this.fn.name;\n var fn = _name in math ? getSafeProperty(math, _name) : undefined;\n var isRaw = typeof fn === 'function' && fn.rawArgs === true;\n\n var resolveFn = scope => {\n if (scope.has(_name)) {\n return scope.get(_name);\n }\n\n if (_name in math) {\n return getSafeProperty(math, _name);\n }\n\n return FunctionNode.onUndefinedFunction(_name);\n };\n\n if (isRaw) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n return fn(rawArgs, math, createSubScope(scope, args), scope);\n };\n } else {\n // \"regular\" evaluation\n switch (evalArgs.length) {\n case 0:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n return fn();\n };\n\n case 1:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n return fn(evalArg0(scope, args, context));\n };\n\n case 2:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));\n };\n\n default:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn(...values);\n };\n }\n }\n } else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {\n // execute the function with the right context: the object of the AccessorNode\n var evalObject = this.fn.object._compile(math, argNames);\n\n var prop = this.fn.index.getObjectProperty();\n var _rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n validateSafeMethod(object, prop);\n var isRaw = object[prop] && object[prop].rawArgs;\n\n if (isRaw) {\n return object[prop](_rawArgs, math, createSubScope(scope, args), scope); // \"raw\" evaluation\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return object[prop].apply(object, values);\n }\n };\n } else {\n // node.fn.isAccessorNode && !node.fn.index.isObjectProperty()\n // we have to dynamically determine whether the function has a rawArgs property\n var evalFn = this.fn._compile(math, argNames);\n\n var _rawArgs2 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = evalFn(scope, args, context);\n var isRaw = fn && fn.rawArgs;\n\n if (isRaw) {\n return fn(_rawArgs2, math, createSubScope(scope, args), scope); // \"raw\" evaluation\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n FunctionNode.prototype.forEach = function (callback) {\n callback(this.fn, 'fn', this);\n\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n };\n /**\n * Create a new FunctionNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionNode} Returns a transformed copy of the node\n */\n\n\n FunctionNode.prototype.map = function (callback) {\n var fn = this._ifNode(callback(this.fn, 'fn', this));\n\n var args = [];\n\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n\n return new FunctionNode(fn, args);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionNode}\n */\n\n\n FunctionNode.prototype.clone = function () {\n return new FunctionNode(this.fn, this.args.slice(0));\n };\n /**\n * Throws an error 'Undefined function {name}'\n * @param {string} name\n */\n\n\n FunctionNode.onUndefinedFunction = function (name) {\n throw new Error('Undefined function ' + name);\n }; // backup Node's toString function\n // @private\n\n\n var nodeToString = FunctionNode.prototype.toString;\n /**\n * Get string representation. (wrapper function)\n * This overrides parts of Node's toString function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toString\n * function.\n *\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n FunctionNode.prototype.toString = function (options) {\n var customString;\n var name = this.fn.toString(options);\n\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, name)) {\n // callback is a map of callback functions\n customString = options.handler[name](this, options);\n }\n\n if (typeof customString !== 'undefined') {\n return customString;\n } // fall back to Node's toString\n\n\n return nodeToString.call(this, options);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionNode.prototype._toString = function (options) {\n var args = this.args.map(function (arg) {\n return arg.toString(options);\n });\n var fn = isFunctionAssignmentNode(this.fn) ? '(' + this.fn.toString(options) + ')' : this.fn.toString(options); // format the arguments like \"add(2, 4.2)\"\n\n return fn + '(' + args.join(', ') + ')';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n FunctionNode.prototype.toJSON = function () {\n return {\n mathjs: 'FunctionNode',\n fn: this.fn,\n args: this.args\n };\n };\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionNode\", fn: ..., args: ...}`,\n * where mathjs is optional\n * @returns {FunctionNode}\n */\n\n\n FunctionNode.fromJSON = function (json) {\n return new FunctionNode(json.fn, json.args);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionNode.prototype.toHTML = function (options) {\n var args = this.args.map(function (arg) {\n return arg.toHTML(options);\n }); // format the arguments like \"add(2, 4.2)\"\n\n return '' + escape(this.fn) + '(' + args.join(',') + ')';\n };\n /*\n * Expand a LaTeX template\n *\n * @param {string} template\n * @param {Node} node\n * @param {Object} options\n * @private\n **/\n\n\n function expandTemplate(template, node, options) {\n var latex = ''; // Match everything of the form ${identifier} or ${identifier[2]} or $$\n // while submatching identifier and 2 (in the second case)\n\n var regex = /\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)/gi;\n var inputPos = 0; // position in the input string\n\n var match;\n\n while ((match = regex.exec(template)) !== null) {\n // go through all matches\n // add everything in front of the match to the LaTeX string\n latex += template.substring(inputPos, match.index);\n inputPos = match.index;\n\n if (match[0] === '$$') {\n // escaped dollar sign\n latex += '$';\n inputPos++;\n } else {\n // template parameter\n inputPos += match[0].length;\n var property = node[match[1]];\n\n if (!property) {\n throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.');\n }\n\n if (match[2] === undefined) {\n // no square brackets\n switch (typeof property) {\n case 'string':\n latex += property;\n break;\n\n case 'object':\n if (isNode(property)) {\n latex += property.toTex(options);\n } else if (Array.isArray(property)) {\n // make array of Nodes into comma separated list\n latex += property.map(function (arg, index) {\n if (isNode(arg)) {\n return arg.toTex(options);\n }\n\n throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.');\n }).join(',');\n } else {\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n\n break;\n\n default:\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n } else {\n // with square brackets\n if (isNode(property[match[2]] && property[match[2]])) {\n latex += property[match[2]].toTex(options);\n } else {\n throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.');\n }\n }\n }\n }\n\n latex += template.slice(inputPos); // append rest of the template\n\n return latex;\n } // backup Node's toTex function\n // @private\n\n\n var nodeToTex = FunctionNode.prototype.toTex;\n /**\n * Get LaTeX representation. (wrapper function)\n * This overrides parts of Node's toTex function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toTex\n * function.\n *\n * @param {Object} options\n * @return {string}\n */\n\n FunctionNode.prototype.toTex = function (options) {\n var customTex;\n\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, this.name)) {\n // callback is a map of callback functions\n customTex = options.handler[this.name](this, options);\n }\n\n if (typeof customTex !== 'undefined') {\n return customTex;\n } // fall back to Node's toTex\n\n\n return nodeToTex.call(this, options);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionNode.prototype._toTex = function (options) {\n var args = this.args.map(function (arg) {\n // get LaTeX of the arguments\n return arg.toTex(options);\n });\n var latexConverter;\n\n if (latexFunctions[this.name]) {\n latexConverter = latexFunctions[this.name];\n } // toTex property on the function itself\n\n\n if (math[this.name] && (typeof math[this.name].toTex === 'function' || typeof math[this.name].toTex === 'object' || typeof math[this.name].toTex === 'string')) {\n // .toTex is a callback function\n latexConverter = math[this.name].toTex;\n }\n\n var customToTex;\n\n switch (typeof latexConverter) {\n case 'function':\n // a callback function\n customToTex = latexConverter(this, options);\n break;\n\n case 'string':\n // a template string\n customToTex = expandTemplate(latexConverter, this, options);\n break;\n\n case 'object':\n // an object with different \"converters\" for different numbers of arguments\n switch (typeof latexConverter[args.length]) {\n case 'function':\n customToTex = latexConverter[args.length](this, options);\n break;\n\n case 'string':\n customToTex = expandTemplate(latexConverter[args.length], this, options);\n break;\n }\n\n }\n\n if (typeof customToTex !== 'undefined') {\n return customToTex;\n }\n\n return expandTemplate(defaultTemplate, this, options);\n };\n /**\n * Get identifier.\n * @return {string}\n */\n\n\n FunctionNode.prototype.getIdentifier = function () {\n return this.type + ':' + this.name;\n };\n\n return FunctionNode;\n}, {\n isClass: true,\n isNode: true\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../utils/factory.js';\nimport { isAccessorNode, isConstantNode, isFunctionNode, isOperatorNode, isSymbolNode } from '../utils/is.js';\nimport { deepMap } from '../utils/collection.js';\nimport { hasOwnProperty } from '../utils/object.js';\nvar name = 'parse';\nvar dependencies = ['typed', 'numeric', 'config', 'AccessorNode', 'ArrayNode', 'AssignmentNode', 'BlockNode', 'ConditionalNode', 'ConstantNode', 'FunctionAssignmentNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'RangeNode', 'RelationalNode', 'SymbolNode'];\nexport var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric,\n config,\n AccessorNode,\n ArrayNode,\n AssignmentNode,\n BlockNode,\n ConditionalNode,\n ConstantNode,\n FunctionAssignmentNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n RangeNode,\n RelationalNode,\n SymbolNode\n } = _ref;\n\n /**\n * Parse an expression. Returns a node tree, which can be evaluated by\n * invoking node.evaluate().\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.parse(expr)\n * math.parse(expr, options)\n * math.parse([expr1, expr2, expr3, ...])\n * math.parse([expr1, expr2, expr3, ...], options)\n *\n * Example:\n *\n * const node1 = math.parse('sqrt(3^2 + 4^2)')\n * node1.compile().evaluate() // 5\n *\n * let scope = {a:3, b:4}\n * const node2 = math.parse('a * b') // 12\n * const code2 = node2.compile()\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.parse(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].compile().evaluate() // 12\n *\n * See also:\n *\n * evaluate, compile\n *\n * @param {string | string[] | Matrix} expr Expression to be parsed\n * @param {{nodes: Object}} [options] Available options:\n * - `nodes` a set of custom nodes\n * @return {Node | Node[]} node\n * @throws {Error}\n */\n var parse = typed(name, {\n string: function string(expression) {\n return parseStart(expression, {});\n },\n 'Array | Matrix': function ArrayMatrix(expressions) {\n return parseMultiple(expressions, {});\n },\n 'string, Object': function stringObject(expression, options) {\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n return parseStart(expression, extraNodes);\n },\n 'Array | Matrix, Object': parseMultiple\n });\n\n function parseMultiple(expressions) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extraNodes = options.nodes !== undefined ? options.nodes : {}; // parse an array or matrix with expressions\n\n return deepMap(expressions, function (elem) {\n if (typeof elem !== 'string') throw new TypeError('String expected');\n return parseStart(elem, extraNodes);\n });\n } // token types enumeration\n\n\n var TOKENTYPE = {\n NULL: 0,\n DELIMITER: 1,\n NUMBER: 2,\n SYMBOL: 3,\n UNKNOWN: 4\n }; // map with all delimiters\n\n var DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n '{': true,\n '}': true,\n '\"': true,\n '\\'': true,\n ';': true,\n '+': true,\n '-': true,\n '*': true,\n '.*': true,\n '/': true,\n './': true,\n '%': true,\n '^': true,\n '.^': true,\n '~': true,\n '!': true,\n '&': true,\n '|': true,\n '^|': true,\n '=': true,\n ':': true,\n '?': true,\n '==': true,\n '!=': true,\n '<': true,\n '>': true,\n '<=': true,\n '>=': true,\n '<<': true,\n '>>': true,\n '>>>': true\n }; // map with all named delimiters\n\n var NAMED_DELIMITERS = {\n mod: true,\n to: true,\n in: true,\n and: true,\n xor: true,\n or: true,\n not: true\n };\n var CONSTANTS = {\n true: true,\n false: false,\n null: null,\n undefined: undefined\n };\n var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];\n\n function initialState() {\n return {\n extraNodes: {},\n // current extra nodes, must be careful not to mutate\n expression: '',\n // current expression\n comment: '',\n // last parsed comment\n index: 0,\n // current index in expr\n token: '',\n // current token\n tokenType: TOKENTYPE.NULL,\n // type of the token\n nestingLevel: 0,\n // level of nesting inside parameters, used to ignore newline characters\n conditionalLevel: null // when a conditional is being parsed, the level of the conditional is stored here\n\n };\n }\n /**\n * View upto `length` characters of the expression starting at the current character.\n *\n * @param {Object} state\n * @param {number} [length=1] Number of characters to view\n * @returns {string}\n * @private\n */\n\n\n function currentString(state, length) {\n return state.expression.substr(state.index, length);\n }\n /**\n * View the current character. Returns '' if end of expression is reached.\n *\n * @param {Object} state\n * @returns {string}\n * @private\n */\n\n\n function currentCharacter(state) {\n return currentString(state, 1);\n }\n /**\n * Get the next character from the expression.\n * The character is stored into the char c. If the end of the expression is\n * reached, the function puts an empty string in c.\n * @private\n */\n\n\n function next(state) {\n state.index++;\n }\n /**\n * Preview the previous character from the expression.\n * @return {string} cNext\n * @private\n */\n\n\n function prevCharacter(state) {\n return state.expression.charAt(state.index - 1);\n }\n /**\n * Preview the next character from the expression.\n * @return {string} cNext\n * @private\n */\n\n\n function nextCharacter(state) {\n return state.expression.charAt(state.index + 1);\n }\n /**\n * Get next token in the current string expr.\n * The token and token type are available as token and tokenType\n * @private\n */\n\n\n function getToken(state) {\n state.tokenType = TOKENTYPE.NULL;\n state.token = '';\n state.comment = ''; // skip over whitespaces\n // space, tab, and newline when inside parameters\n\n while (parse.isWhitespace(currentCharacter(state), state.nestingLevel)) {\n next(state);\n } // skip comment\n\n\n if (currentCharacter(state) === '#') {\n while (currentCharacter(state) !== '\\n' && currentCharacter(state) !== '') {\n state.comment += currentCharacter(state);\n next(state);\n }\n } // check for end of expression\n\n\n if (currentCharacter(state) === '') {\n // token is still empty\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n } // check for new line character\n\n\n if (currentCharacter(state) === '\\n' && !state.nestingLevel) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = currentCharacter(state);\n next(state);\n return;\n }\n\n var c1 = currentCharacter(state);\n var c2 = currentString(state, 2);\n var c3 = currentString(state, 3);\n\n if (c3.length === 3 && DELIMITERS[c3]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c3;\n next(state);\n next(state);\n next(state);\n return;\n } // check for delimiters consisting of 2 characters\n\n\n if (c2.length === 2 && DELIMITERS[c2]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c2;\n next(state);\n next(state);\n return;\n } // check for delimiters consisting of 1 character\n\n\n if (DELIMITERS[c1]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c1;\n next(state);\n return;\n } // check for a number\n\n\n if (parse.isDigitDot(c1)) {\n state.tokenType = TOKENTYPE.NUMBER; // check for binary, octal, or hex\n\n var _c = currentString(state, 2);\n\n if (_c === '0b' || _c === '0o' || _c === '0x') {\n state.token += currentCharacter(state);\n next(state);\n state.token += currentCharacter(state);\n next(state);\n\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (currentCharacter(state) === '.') {\n // this number has a radix point\n state.token += '.';\n next(state); // get the digits after the radix\n\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n } else if (currentCharacter(state) === 'i') {\n // this number has a word size suffix\n state.token += 'i';\n next(state); // get the word size\n\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n\n return;\n } // get number, can have a single dot\n\n\n if (currentCharacter(state) === '.') {\n state.token += currentCharacter(state);\n next(state);\n\n if (!parse.isDigit(currentCharacter(state))) {\n // this is no number, it is just a dot (can be dot notation)\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n } else {\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n } // check for exponential notation like \"2.3e-4\", \"1.23e50\" or \"2e+4\"\n\n\n if (currentCharacter(state) === 'E' || currentCharacter(state) === 'e') {\n if (parse.isDigit(nextCharacter(state)) || nextCharacter(state) === '-' || nextCharacter(state) === '+') {\n state.token += currentCharacter(state);\n next(state);\n\n if (currentCharacter(state) === '+' || currentCharacter(state) === '-') {\n state.token += currentCharacter(state);\n next(state);\n } // Scientific notation MUST be followed by an exponent\n\n\n if (!parse.isDigit(currentCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n } else if (nextCharacter(state) === '.') {\n next(state);\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n }\n\n return;\n } // check for variables, functions, named operators\n\n\n if (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state))) {\n while (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state)) || parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (hasOwnProperty(NAMED_DELIMITERS, state.token)) {\n state.tokenType = TOKENTYPE.DELIMITER;\n } else {\n state.tokenType = TOKENTYPE.SYMBOL;\n }\n\n return;\n } // something unknown is found, wrong characters -> a syntax error\n\n\n state.tokenType = TOKENTYPE.UNKNOWN;\n\n while (currentCharacter(state) !== '') {\n state.token += currentCharacter(state);\n next(state);\n }\n\n throw createSyntaxError(state, 'Syntax error in part \"' + state.token + '\"');\n }\n /**\n * Get next token and skip newline tokens\n */\n\n\n function getTokenSkipNewline(state) {\n do {\n getToken(state);\n } while (state.token === '\\n'); // eslint-disable-line no-unmodified-loop-condition\n\n }\n /**\n * Open parameters.\n * New line characters will be ignored until closeParams(state) is called\n */\n\n\n function openParams(state) {\n state.nestingLevel++;\n }\n /**\n * Close parameters.\n * New line characters will no longer be ignored\n */\n\n\n function closeParams(state) {\n state.nestingLevel--;\n }\n /**\n * Checks whether the current character `c` is a valid alpha character:\n *\n * - A latin letter (upper or lower case) Ascii: a-z, A-Z\n * - An underscore Ascii: _\n * - A dollar sign Ascii: $\n * - A latin letter with accents Unicode: \\u00C0 - \\u02AF\n * - A greek letter Unicode: \\u0370 - \\u03FF\n * - A mathematical alphanumeric symbol Unicode: \\u{1D400} - \\u{1D7FF} excluding invalid code points\n *\n * The previous and next characters are needed to determine whether\n * this character is part of a unicode surrogate pair.\n *\n * @param {string} c Current character in the expression\n * @param {string} cPrev Previous character\n * @param {string} cNext Next character\n * @return {boolean}\n */\n\n\n parse.isAlpha = function isAlpha(c, cPrev, cNext) {\n return parse.isValidLatinOrGreek(c) || parse.isValidMathSymbol(c, cNext) || parse.isValidMathSymbol(cPrev, c);\n };\n /**\n * Test whether a character is a valid latin, greek, or letter-like character\n * @param {string} c\n * @return {boolean}\n */\n\n\n parse.isValidLatinOrGreek = function isValidLatinOrGreek(c) {\n return /^[a-zA-Z_$\\u00C0-\\u02AF\\u0370-\\u03FF\\u2100-\\u214F]$/.test(c);\n };\n /**\n * Test whether two given 16 bit characters form a surrogate pair of a\n * unicode math symbol.\n *\n * https://unicode-table.com/en/\n * https://www.wikiwand.com/en/Mathematical_operators_and_symbols_in_Unicode\n *\n * Note: In ES6 will be unicode aware:\n * https://stackoverflow.com/questions/280712/javascript-unicode-regexes\n * https://mathiasbynens.be/notes/es6-unicode-regex\n *\n * @param {string} high\n * @param {string} low\n * @return {boolean}\n */\n\n\n parse.isValidMathSymbol = function isValidMathSymbol(high, low) {\n return /^[\\uD835]$/.test(high) && /^[\\uDC00-\\uDFFF]$/.test(low) && /^[^\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]$/.test(low);\n };\n /**\n * Check whether given character c is a white space character: space, tab, or enter\n * @param {string} c\n * @param {number} nestingLevel\n * @return {boolean}\n */\n\n\n parse.isWhitespace = function isWhitespace(c, nestingLevel) {\n // TODO: also take '\\r' carriage return as newline? Or does that give problems on mac?\n return c === ' ' || c === '\\t' || c === '\\n' && nestingLevel > 0;\n };\n /**\n * Test whether the character c is a decimal mark (dot).\n * This is the case when it's not the start of a delimiter '.*', './', or '.^'\n * @param {string} c\n * @param {string} cNext\n * @return {boolean}\n */\n\n\n parse.isDecimalMark = function isDecimalMark(c, cNext) {\n return c === '.' && cNext !== '/' && cNext !== '*' && cNext !== '^';\n };\n /**\n * checks if the given char c is a digit or dot\n * @param {string} c a string with one character\n * @return {boolean}\n */\n\n\n parse.isDigitDot = function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n };\n /**\n * checks if the given char c is a digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n\n\n parse.isDigit = function isDigit(c) {\n return c >= '0' && c <= '9';\n };\n /**\n * checks if the given char c is a hex digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n\n\n parse.isHexDigit = function isHexDigit(c) {\n return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';\n };\n /**\n * Start of the parse levels below, in order of precedence\n * @return {Node} node\n * @private\n */\n\n\n function parseStart(expression, extraNodes) {\n var state = initialState();\n\n _extends(state, {\n expression,\n extraNodes\n });\n\n getToken(state);\n var node = parseBlock(state); // check for garbage at the end of the expression\n // an expression ends with a empty character '' and tokenType DELIMITER\n\n if (state.token !== '') {\n if (state.tokenType === TOKENTYPE.DELIMITER) {\n // user entered a not existing operator like \"//\"\n // TODO: give hints for aliases, for example with \"<>\" give as hint \" did you mean !== ?\"\n throw createError(state, 'Unexpected operator ' + state.token);\n } else {\n throw createSyntaxError(state, 'Unexpected part \"' + state.token + '\"');\n }\n }\n\n return node;\n }\n /**\n * Parse a block with expressions. Expressions can be separated by a newline\n * character '\\n', or by a semicolon ';'. In case of a semicolon, no output\n * of the preceding line is returned.\n * @return {Node} node\n * @private\n */\n\n\n function parseBlock(state) {\n var node;\n var blocks = [];\n var visible;\n\n if (state.token !== '' && state.token !== '\\n' && state.token !== ';') {\n node = parseAssignment(state);\n node.comment = state.comment;\n } // TODO: simplify this loop\n\n\n while (state.token === '\\n' || state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n if (blocks.length === 0 && node) {\n visible = state.token !== ';';\n blocks.push({\n node: node,\n visible: visible\n });\n }\n\n getToken(state);\n\n if (state.token !== '\\n' && state.token !== ';' && state.token !== '') {\n node = parseAssignment(state);\n node.comment = state.comment;\n visible = state.token !== ';';\n blocks.push({\n node: node,\n visible: visible\n });\n }\n }\n\n if (blocks.length > 0) {\n return new BlockNode(blocks);\n } else {\n if (!node) {\n node = new ConstantNode(undefined);\n node.comment = state.comment;\n }\n\n return node;\n }\n }\n /**\n * Assignment of a function or variable,\n * - can be a variable like 'a=2.3'\n * - or a updating an existing variable like 'matrix(2,3:5)=[6,7,8]'\n * - defining a function like 'f(x) = x^2'\n * @return {Node} node\n * @private\n */\n\n\n function parseAssignment(state) {\n var name, args, value, valid;\n var node = parseConditional(state);\n\n if (state.token === '=') {\n if (isSymbolNode(node)) {\n // parse a variable assignment like 'a = 2/3'\n name = node.name;\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(new SymbolNode(name), value);\n } else if (isAccessorNode(node)) {\n // parse a matrix subset assignment like 'A[1,2] = 4'\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(node.object, node.index, value);\n } else if (isFunctionNode(node) && isSymbolNode(node.fn)) {\n // parse function assignment like 'f(x) = x^2'\n valid = true;\n args = [];\n name = node.name;\n node.args.forEach(function (arg, index) {\n if (isSymbolNode(arg)) {\n args[index] = arg.name;\n } else {\n valid = false;\n }\n });\n\n if (valid) {\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new FunctionAssignmentNode(name, args, value);\n }\n }\n\n throw createSyntaxError(state, 'Invalid left hand side of assignment operator =');\n }\n\n return node;\n }\n /**\n * conditional operation\n *\n * condition ? truePart : falsePart\n *\n * Note: conditional operator is right-associative\n *\n * @return {Node} node\n * @private\n */\n\n\n function parseConditional(state) {\n var node = parseLogicalOr(state);\n\n while (state.token === '?') {\n // eslint-disable-line no-unmodified-loop-condition\n // set a conditional level, the range operator will be ignored as long\n // as conditionalLevel === state.nestingLevel.\n var prev = state.conditionalLevel;\n state.conditionalLevel = state.nestingLevel;\n getTokenSkipNewline(state);\n var condition = node;\n var trueExpr = parseAssignment(state);\n if (state.token !== ':') throw createSyntaxError(state, 'False part of conditional expression expected');\n state.conditionalLevel = null;\n getTokenSkipNewline(state);\n var falseExpr = parseAssignment(state); // Note: check for conditional operator again, right associativity\n\n node = new ConditionalNode(condition, trueExpr, falseExpr); // restore the previous conditional level\n\n state.conditionalLevel = prev;\n }\n\n return node;\n }\n /**\n * logical or, 'x or y'\n * @return {Node} node\n * @private\n */\n\n\n function parseLogicalOr(state) {\n var node = parseLogicalXor(state);\n\n while (state.token === 'or') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('or', 'or', [node, parseLogicalXor(state)]);\n }\n\n return node;\n }\n /**\n * logical exclusive or, 'x xor y'\n * @return {Node} node\n * @private\n */\n\n\n function parseLogicalXor(state) {\n var node = parseLogicalAnd(state);\n\n while (state.token === 'xor') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('xor', 'xor', [node, parseLogicalAnd(state)]);\n }\n\n return node;\n }\n /**\n * logical and, 'x and y'\n * @return {Node} node\n * @private\n */\n\n\n function parseLogicalAnd(state) {\n var node = parseBitwiseOr(state);\n\n while (state.token === 'and') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('and', 'and', [node, parseBitwiseOr(state)]);\n }\n\n return node;\n }\n /**\n * bitwise or, 'x | y'\n * @return {Node} node\n * @private\n */\n\n\n function parseBitwiseOr(state) {\n var node = parseBitwiseXor(state);\n\n while (state.token === '|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('|', 'bitOr', [node, parseBitwiseXor(state)]);\n }\n\n return node;\n }\n /**\n * bitwise exclusive or (xor), 'x ^| y'\n * @return {Node} node\n * @private\n */\n\n\n function parseBitwiseXor(state) {\n var node = parseBitwiseAnd(state);\n\n while (state.token === '^|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('^|', 'bitXor', [node, parseBitwiseAnd(state)]);\n }\n\n return node;\n }\n /**\n * bitwise and, 'x & y'\n * @return {Node} node\n * @private\n */\n\n\n function parseBitwiseAnd(state) {\n var node = parseRelational(state);\n\n while (state.token === '&') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('&', 'bitAnd', [node, parseRelational(state)]);\n }\n\n return node;\n }\n /**\n * Parse a chained conditional, like 'a > b >= c'\n * @return {Node} node\n */\n\n\n function parseRelational(state) {\n var params = [parseShift(state)];\n var conditionals = [];\n var operators = {\n '==': 'equal',\n '!=': 'unequal',\n '<': 'smaller',\n '>': 'larger',\n '<=': 'smallerEq',\n '>=': 'largerEq'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n // eslint-disable-line no-unmodified-loop-condition\n var cond = {\n name: state.token,\n fn: operators[state.token]\n };\n conditionals.push(cond);\n getTokenSkipNewline(state);\n params.push(parseShift(state));\n }\n\n if (params.length === 1) {\n return params[0];\n } else if (params.length === 2) {\n return new OperatorNode(conditionals[0].name, conditionals[0].fn, params);\n } else {\n return new RelationalNode(conditionals.map(c => c.fn), params);\n }\n }\n /**\n * Bitwise left shift, bitwise right arithmetic shift, bitwise right logical shift\n * @return {Node} node\n * @private\n */\n\n\n function parseShift(state) {\n var node, name, fn, params;\n node = parseConversion(state);\n var operators = {\n '<<': 'leftShift',\n '>>': 'rightArithShift',\n '>>>': 'rightLogShift'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n params = [node, parseConversion(state)];\n node = new OperatorNode(name, fn, params);\n }\n\n return node;\n }\n /**\n * conversion operators 'to' and 'in'\n * @return {Node} node\n * @private\n */\n\n\n function parseConversion(state) {\n var node, name, fn, params;\n node = parseRange(state);\n var operators = {\n to: 'to',\n in: 'to' // alias of 'to'\n\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n\n if (name === 'in' && state.token === '') {\n // end of expression -> this is the unit 'in' ('inch')\n node = new OperatorNode('*', 'multiply', [node, new SymbolNode('in')], true);\n } else {\n // operator 'a to b' or 'a in b'\n params = [node, parseRange(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n\n return node;\n }\n /**\n * parse range, \"start:end\", \"start:step:end\", \":\", \"start:\", \":end\", etc\n * @return {Node} node\n * @private\n */\n\n\n function parseRange(state) {\n var node;\n var params = [];\n\n if (state.token === ':') {\n // implicit start=1 (one-based)\n node = new ConstantNode(1);\n } else {\n // explicit start\n node = parseAddSubtract(state);\n }\n\n if (state.token === ':' && state.conditionalLevel !== state.nestingLevel) {\n // we ignore the range operator when a conditional operator is being processed on the same level\n params.push(node); // parse step and end\n\n while (state.token === ':' && params.length < 3) {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n\n if (state.token === ')' || state.token === ']' || state.token === ',' || state.token === '') {\n // implicit end\n params.push(new SymbolNode('end'));\n } else {\n // explicit end\n params.push(parseAddSubtract(state));\n }\n }\n\n if (params.length === 3) {\n // params = [start, step, end]\n node = new RangeNode(params[0], params[2], params[1]); // start, end, step\n } else {\n // length === 2\n // params = [start, end]\n node = new RangeNode(params[0], params[1]); // start, end\n }\n }\n\n return node;\n }\n /**\n * add or subtract\n * @return {Node} node\n * @private\n */\n\n\n function parseAddSubtract(state) {\n var node, name, fn, params;\n node = parseMultiplyDivide(state);\n var operators = {\n '+': 'add',\n '-': 'subtract'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n var rightNode = parseMultiplyDivide(state);\n\n if (rightNode.isPercentage) {\n params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];\n } else {\n params = [node, rightNode];\n }\n\n node = new OperatorNode(name, fn, params);\n }\n\n return node;\n }\n /**\n * multiply, divide, modulus\n * @return {Node} node\n * @private\n */\n\n\n function parseMultiplyDivide(state) {\n var node, last, name, fn;\n node = parseImplicitMultiplication(state);\n last = node;\n var operators = {\n '*': 'multiply',\n '.*': 'dotMultiply',\n '/': 'divide',\n './': 'dotDivide'\n };\n\n while (true) {\n if (hasOwnProperty(operators, state.token)) {\n // explicit operators\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n last = parseImplicitMultiplication(state);\n node = new OperatorNode(name, fn, [node, last]);\n } else {\n break;\n }\n }\n\n return node;\n }\n /**\n * implicit multiplication\n * @return {Node} node\n * @private\n */\n\n\n function parseImplicitMultiplication(state) {\n var node, last;\n node = parseRule2(state);\n last = node;\n\n while (true) {\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && isConstantNode(node) || state.tokenType === TOKENTYPE.NUMBER && !isConstantNode(last) && (!isOperatorNode(last) || last.op === '!') || state.token === '(') {\n // parse implicit multiplication\n //\n // symbol: implicit multiplication like '2a', '(2+3)a', 'a b'\n // number: implicit multiplication like '(2+3)2'\n // parenthesis: implicit multiplication like '2(3+4)', '(3+4)(1+2)'\n last = parseRule2(state);\n node = new OperatorNode('*', 'multiply', [node, last], true\n /* implicit */\n );\n } else {\n break;\n }\n }\n\n return node;\n }\n /**\n * Infamous \"rule 2\" as described in https://github.com/josdejong/mathjs/issues/792#issuecomment-361065370\n * Explicit division gets higher precedence than implicit multiplication\n * when the division matches this pattern: [number] / [number] [symbol]\n * @return {Node} node\n * @private\n */\n\n\n function parseRule2(state) {\n var node = parsePercentage(state);\n var last = node;\n var tokenStates = [];\n\n while (true) {\n // Match the \"number /\" part of the pattern \"number / number symbol\"\n if (state.token === '/' && isConstantNode(last)) {\n // Look ahead to see if the next token is a number\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state); // Match the \"number / number\" part of the pattern\n\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // Look ahead again\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state); // Match the \"symbol\" part of the pattern, or a left parenthesis\n\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(') {\n // We've matched the pattern \"number / number symbol\".\n // Rewind once and build the \"number / number\" node; the symbol will be consumed later\n _extends(state, tokenStates.pop());\n\n tokenStates.pop();\n last = parsePercentage(state);\n node = new OperatorNode('/', 'divide', [node, last]);\n } else {\n // Not a match, so rewind\n tokenStates.pop();\n\n _extends(state, tokenStates.pop());\n\n break;\n }\n } else {\n // Not a match, so rewind\n _extends(state, tokenStates.pop());\n\n break;\n }\n } else {\n break;\n }\n }\n\n return node;\n }\n /**\n * percentage or mod\n * @return {Node} node\n * @private\n */\n\n\n function parsePercentage(state) {\n var node, name, fn, params;\n node = parseUnary(state);\n var operators = {\n '%': 'mod',\n mod: 'mod'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n\n if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {\n // If the expression contains only %, then treat that as /100\n node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);\n } else {\n params = [node, parseUnary(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n\n return node;\n }\n /**\n * Unary plus and minus, and logical and bitwise not\n * @return {Node} node\n * @private\n */\n\n\n function parseUnary(state) {\n var name, params, fn;\n var operators = {\n '-': 'unaryMinus',\n '+': 'unaryPlus',\n '~': 'bitNot',\n not: 'not'\n };\n\n if (hasOwnProperty(operators, state.token)) {\n fn = operators[state.token];\n name = state.token;\n getTokenSkipNewline(state);\n params = [parseUnary(state)];\n return new OperatorNode(name, fn, params);\n }\n\n return parsePow(state);\n }\n /**\n * power\n * Note: power operator is right associative\n * @return {Node} node\n * @private\n */\n\n\n function parsePow(state) {\n var node, name, fn, params;\n node = parseLeftHandOperators(state);\n\n if (state.token === '^' || state.token === '.^') {\n name = state.token;\n fn = name === '^' ? 'pow' : 'dotPow';\n getTokenSkipNewline(state);\n params = [node, parseUnary(state)]; // Go back to unary, we can have '2^-3'\n\n node = new OperatorNode(name, fn, params);\n }\n\n return node;\n }\n /**\n * Left hand operators: factorial x!, ctranspose x'\n * @return {Node} node\n * @private\n */\n\n\n function parseLeftHandOperators(state) {\n var node, name, fn, params;\n node = parseCustomNodes(state);\n var operators = {\n '!': 'factorial',\n '\\'': 'ctranspose'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getToken(state);\n params = [node];\n node = new OperatorNode(name, fn, params);\n node = parseAccessors(state, node);\n }\n\n return node;\n }\n /**\n * Parse a custom node handler. A node handler can be used to process\n * nodes in a custom way, for example for handling a plot.\n *\n * A handler must be passed as second argument of the parse function.\n * - must extend math.Node\n * - must contain a function _compile(defs: Object) : string\n * - must contain a function find(filter: Object) : Node[]\n * - must contain a function toString() : string\n * - the constructor is called with a single argument containing all parameters\n *\n * For example:\n *\n * nodes = {\n * 'plot': PlotHandler\n * }\n *\n * The constructor of the handler is called as:\n *\n * node = new PlotHandler(params)\n *\n * The handler will be invoked when evaluating an expression like:\n *\n * node = math.parse('plot(sin(x), x)', nodes)\n *\n * @return {Node} node\n * @private\n */\n\n\n function parseCustomNodes(state) {\n var params = [];\n\n if (state.tokenType === TOKENTYPE.SYMBOL && hasOwnProperty(state.extraNodes, state.token)) {\n var CustomNode = state.extraNodes[state.token];\n getToken(state); // parse parameters\n\n if (state.token === '(') {\n params = [];\n openParams(state);\n getToken(state);\n\n if (state.token !== ')') {\n params.push(parseAssignment(state)); // parse a list with parameters\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n\n closeParams(state);\n getToken(state);\n } // create a new custom node\n // noinspection JSValidateTypes\n\n\n return new CustomNode(params);\n }\n\n return parseSymbol(state);\n }\n /**\n * parse symbols: functions, variables, constants, units\n * @return {Node} node\n * @private\n */\n\n\n function parseSymbol(state) {\n var node, name;\n\n if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n name = state.token;\n getToken(state);\n\n if (hasOwnProperty(CONSTANTS, name)) {\n // true, false, null, ...\n node = new ConstantNode(CONSTANTS[name]);\n } else if (NUMERIC_CONSTANTS.indexOf(name) !== -1) {\n // NaN, Infinity\n node = new ConstantNode(numeric(name, 'number'));\n } else {\n node = new SymbolNode(name);\n } // parse function parameters and matrix index\n\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseDoubleQuotesString(state);\n }\n /**\n * parse accessors:\n * - function invocation in round brackets (...), for example sqrt(2)\n * - index enclosed in square brackets [...], for example A[2,3]\n * - dot notation for properties, like foo.bar\n * @param {Object} state\n * @param {Node} node Node on which to apply the parameters. If there\n * are no parameters in the expression, the node\n * itself is returned\n * @param {string[]} [types] Filter the types of notations\n * can be ['(', '[', '.']\n * @return {Node} node\n * @private\n */\n\n\n function parseAccessors(state, node, types) {\n var params;\n\n while ((state.token === '(' || state.token === '[' || state.token === '.') && (!types || types.indexOf(state.token) !== -1)) {\n // eslint-disable-line no-unmodified-loop-condition\n params = [];\n\n if (state.token === '(') {\n if (isSymbolNode(node) || isAccessorNode(node)) {\n // function invocation like fn(2, 3) or obj.fn(2, 3)\n openParams(state);\n getToken(state);\n\n if (state.token !== ')') {\n params.push(parseAssignment(state)); // parse a list with parameters\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n\n closeParams(state);\n getToken(state);\n node = new FunctionNode(node, params);\n } else {\n // implicit multiplication like (2+3)(4+5) or sqrt(2)(1+2)\n // don't parse it here but let it be handled by parseImplicitMultiplication\n // with correct precedence\n return node;\n }\n } else if (state.token === '[') {\n // index notation like variable[2, 3]\n openParams(state);\n getToken(state);\n\n if (state.token !== ']') {\n params.push(parseAssignment(state)); // parse a list with parameters\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n\n if (state.token !== ']') {\n throw createSyntaxError(state, 'Parenthesis ] expected');\n }\n\n closeParams(state);\n getToken(state);\n node = new AccessorNode(node, new IndexNode(params));\n } else {\n // dot notation like variable.prop\n getToken(state);\n\n if (state.tokenType !== TOKENTYPE.SYMBOL) {\n throw createSyntaxError(state, 'Property name expected after dot');\n }\n\n params.push(new ConstantNode(state.token));\n getToken(state);\n var dotNotation = true;\n node = new AccessorNode(node, new IndexNode(params, dotNotation));\n }\n }\n\n return node;\n }\n /**\n * Parse a double quotes string.\n * @return {Node} node\n * @private\n */\n\n\n function parseDoubleQuotesString(state) {\n var node, str;\n\n if (state.token === '\"') {\n str = parseDoubleQuotesStringToken(state); // create constant\n\n node = new ConstantNode(str); // parse index parameters\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseSingleQuotesString(state);\n }\n /**\n * Parse a string surrounded by double quotes \"...\"\n * @return {string}\n */\n\n\n function parseDoubleQuotesStringToken(state) {\n var str = '';\n\n while (currentCharacter(state) !== '' && currentCharacter(state) !== '\"') {\n if (currentCharacter(state) === '\\\\') {\n // escape character, immediately process the next\n // character to prevent stopping at a next '\\\"'\n str += currentCharacter(state);\n next(state);\n }\n\n str += currentCharacter(state);\n next(state);\n }\n\n getToken(state);\n\n if (state.token !== '\"') {\n throw createSyntaxError(state, 'End of string \" expected');\n }\n\n getToken(state);\n return JSON.parse('\"' + str + '\"'); // unescape escaped characters\n }\n /**\n * Parse a single quotes string.\n * @return {Node} node\n * @private\n */\n\n\n function parseSingleQuotesString(state) {\n var node, str;\n\n if (state.token === '\\'') {\n str = parseSingleQuotesStringToken(state); // create constant\n\n node = new ConstantNode(str); // parse index parameters\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseMatrix(state);\n }\n /**\n * Parse a string surrounded by single quotes '...'\n * @return {string}\n */\n\n\n function parseSingleQuotesStringToken(state) {\n var str = '';\n\n while (currentCharacter(state) !== '' && currentCharacter(state) !== '\\'') {\n if (currentCharacter(state) === '\\\\') {\n // escape character, immediately process the next\n // character to prevent stopping at a next '\\''\n str += currentCharacter(state);\n next(state);\n }\n\n str += currentCharacter(state);\n next(state);\n }\n\n getToken(state);\n\n if (state.token !== '\\'') {\n throw createSyntaxError(state, 'End of string \\' expected');\n }\n\n getToken(state);\n return JSON.parse('\"' + str + '\"'); // unescape escaped characters\n }\n /**\n * parse the matrix\n * @return {Node} node\n * @private\n */\n\n\n function parseMatrix(state) {\n var array, params, rows, cols;\n\n if (state.token === '[') {\n // matrix [...]\n openParams(state);\n getToken(state);\n\n if (state.token !== ']') {\n // this is a non-empty matrix\n var row = parseRow(state);\n\n if (state.token === ';') {\n // 2 dimensional array\n rows = 1;\n params = [row]; // the rows of the matrix are separated by dot-comma's\n\n while (state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params[rows] = parseRow(state);\n rows++;\n }\n\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n\n closeParams(state);\n getToken(state); // check if the number of columns matches in all rows\n\n cols = params[0].items.length;\n\n for (var r = 1; r < rows; r++) {\n if (params[r].items.length !== cols) {\n throw createError(state, 'Column dimensions mismatch ' + '(' + params[r].items.length + ' !== ' + cols + ')');\n }\n }\n\n array = new ArrayNode(params);\n } else {\n // 1 dimensional vector\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n\n closeParams(state);\n getToken(state);\n array = row;\n }\n } else {\n // this is an empty matrix \"[ ]\"\n closeParams(state);\n getToken(state);\n array = new ArrayNode([]);\n }\n\n return parseAccessors(state, array);\n }\n\n return parseObject(state);\n }\n /**\n * Parse a single comma-separated row from a matrix, like 'a, b, c'\n * @return {ArrayNode} node\n */\n\n\n function parseRow(state) {\n var params = [parseAssignment(state)];\n var len = 1;\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state); // parse expression\n\n params[len] = parseAssignment(state);\n len++;\n }\n\n return new ArrayNode(params);\n }\n /**\n * parse an object, enclosed in angle brackets{...}, for example {value: 2}\n * @return {Node} node\n * @private\n */\n\n\n function parseObject(state) {\n if (state.token === '{') {\n openParams(state);\n var key;\n var properties = {};\n\n do {\n getToken(state);\n\n if (state.token !== '}') {\n // parse key\n if (state.token === '\"') {\n key = parseDoubleQuotesStringToken(state);\n } else if (state.token === '\\'') {\n key = parseSingleQuotesStringToken(state);\n } else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n key = state.token;\n getToken(state);\n } else {\n throw createSyntaxError(state, 'Symbol or string expected as object key');\n } // parse key/value separator\n\n\n if (state.token !== ':') {\n throw createSyntaxError(state, 'Colon : expected after object key');\n }\n\n getToken(state); // parse key\n\n properties[key] = parseAssignment(state);\n }\n } while (state.token === ','); // eslint-disable-line no-unmodified-loop-condition\n\n\n if (state.token !== '}') {\n throw createSyntaxError(state, 'Comma , or bracket } expected after object value');\n }\n\n closeParams(state);\n getToken(state);\n var node = new ObjectNode(properties); // parse index parameters\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseNumber(state);\n }\n /**\n * parse a number\n * @return {Node} node\n * @private\n */\n\n\n function parseNumber(state) {\n var numberStr;\n\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // this is a number\n numberStr = state.token;\n getToken(state);\n return new ConstantNode(numeric(numberStr, config.number));\n }\n\n return parseParentheses(state);\n }\n /**\n * parentheses\n * @return {Node} node\n * @private\n */\n\n\n function parseParentheses(state) {\n var node; // check if it is a parenthesized expression\n\n if (state.token === '(') {\n // parentheses (...)\n openParams(state);\n getToken(state);\n node = parseAssignment(state); // start again\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n\n closeParams(state);\n getToken(state);\n node = new ParenthesisNode(node);\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseEnd(state);\n }\n /**\n * Evaluated when the expression is not yet ended but expected to end\n * @return {Node} res\n * @private\n */\n\n\n function parseEnd(state) {\n if (state.token === '') {\n // syntax error or unexpected end of expression\n throw createSyntaxError(state, 'Unexpected end of expression');\n } else {\n throw createSyntaxError(state, 'Value expected');\n }\n }\n /**\n * Shortcut for getting the current row value (one based)\n * Returns the line of the currently handled expression\n * @private\n */\n\n /* TODO: implement keeping track on the row number\n function row () {\n return null\n }\n */\n\n /**\n * Shortcut for getting the current col value (one based)\n * Returns the column (position) where the last state.token starts\n * @private\n */\n\n\n function col(state) {\n return state.index - state.token.length + 1;\n }\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {SyntaxError} instantiated error\n * @private\n */\n\n\n function createSyntaxError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {Error} instantiated error\n * @private\n */\n\n\n function createError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n return parse;\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compile';\nvar dependencies = ['typed', 'parse'];\nexport var createCompile = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n\n /**\n * Parse and compile an expression.\n * Returns a an object with a function `evaluate([scope])` to evaluate the\n * compiled expression.\n *\n * Syntax:\n *\n * math.compile(expr) // returns one node\n * math.compile([expr1, expr2, expr3, ...]) // returns an array with nodes\n *\n * Examples:\n *\n * const code1 = math.compile('sqrt(3^2 + 4^2)')\n * code1.evaluate() // 5\n *\n * let scope = {a: 3, b: 4}\n * const code2 = math.compile('a * b') // 12\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.compile(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].evaluate() // 12\n *\n * See also:\n *\n * parse, evaluate\n *\n * @param {string | string[] | Array | Matrix} expr\n * The expression to be compiled\n * @return {{evaluate: Function} | Array.<{evaluate: Function}>} code\n * An object with the compiled expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n return parse(expr).compile();\n },\n 'Array | Matrix': function ArrayMatrix(expr) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile();\n });\n }\n });\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { createEmptyMap } from '../../utils/map.js';\nvar name = 'evaluate';\nvar dependencies = ['typed', 'parse'];\nexport var createEvaluate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n\n /**\n * Evaluate an expression.\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.evaluate(expr)\n * math.evaluate(expr, scope)\n * math.evaluate([expr1, expr2, expr3, ...])\n * math.evaluate([expr1, expr2, expr3, ...], scope)\n *\n * Example:\n *\n * math.evaluate('(2+3)/4') // 1.25\n * math.evaluate('sqrt(3^2 + 4^2)') // 5\n * math.evaluate('sqrt(-4)') // 2i\n * math.evaluate(['a=3', 'b=4', 'a*b']) // [3, 4, 12]\n *\n * let scope = {a:3, b:4}\n * math.evaluate('a * b', scope) // 12\n *\n * See also:\n *\n * parse, compile\n *\n * @param {string | string[] | Matrix} expr The expression to be evaluated\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} The result of the expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n var scope = createEmptyMap();\n return parse(expr).compile().evaluate(scope);\n },\n 'string, Map | Object': function stringMapObject(expr, scope) {\n return parse(expr).compile().evaluate(scope);\n },\n 'Array | Matrix': function ArrayMatrix(expr) {\n var scope = createEmptyMap();\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n },\n 'Array | Matrix, Map | Object': function ArrayMatrixMapObject(expr, scope) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n }\n });\n});","import { factory } from '../utils/factory.js';\nimport { createEmptyMap, toObject } from '../utils/map.js';\nvar name = 'Parser';\nvar dependencies = ['evaluate'];\nexport var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n evaluate\n } = _ref;\n\n /**\n * @constructor Parser\n * Parser contains methods to evaluate or parse expressions, and has a number\n * of convenience methods to get, set, and remove variables from memory. Parser\n * keeps a scope containing variables in memory, which is used for all\n * evaluations.\n *\n * Methods:\n * const result = parser.evaluate(expr) // evaluate an expression\n * const value = parser.get(name) // retrieve a variable from the parser\n * const values = parser.getAll() // retrieve all defined variables\n * parser.set(name, value) // set a variable in the parser\n * parser.remove(name) // clear a variable from the\n * // parsers scope\n * parser.clear() // clear the parsers scope\n *\n * Example usage:\n * const parser = new Parser()\n * // Note: there is a convenience method which can be used instead:\n * // const parser = new math.parser()\n *\n * // evaluate expressions\n * parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * parser.evaluate('sqrt(-4)') // 2i\n * parser.evaluate('2 inch in cm') // 5.08 cm\n * parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 7\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n */\n function Parser() {\n if (!(this instanceof Parser)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n Object.defineProperty(this, 'scope', {\n value: createEmptyMap(),\n writable: false\n });\n }\n /**\n * Attach type information\n */\n\n\n Parser.prototype.type = 'Parser';\n Parser.prototype.isParser = true;\n /**\n * Parse and evaluate the given expression\n * @param {string | string[]} expr A string containing an expression,\n * for example \"2+3\", or a list with expressions\n * @return {*} result The result, or undefined when the expression was empty\n * @throws {Error}\n */\n\n Parser.prototype.evaluate = function (expr) {\n // TODO: validate arguments\n return evaluate(expr, this.scope);\n };\n /**\n * Get a variable (a function or variable) by name from the parsers scope.\n * Returns undefined when not found\n * @param {string} name\n * @return {* | undefined} value\n */\n\n\n Parser.prototype.get = function (name) {\n // TODO: validate arguments\n if (this.scope.has(name)) {\n return this.scope.get(name);\n }\n };\n /**\n * Get a map with all defined variables\n * @return {Object} values\n */\n\n\n Parser.prototype.getAll = function () {\n return toObject(this.scope);\n };\n /**\n * Get a map with all defined variables\n * @return {Map} values\n */\n\n\n Parser.prototype.getAllAsMap = function () {\n return this.scope;\n };\n /**\n * Set a symbol (a function or variable) by name from the parsers scope.\n * @param {string} name\n * @param {* | undefined} value\n */\n\n\n Parser.prototype.set = function (name, value) {\n this.scope.set(name, value);\n return value;\n };\n /**\n * Remove a variable from the parsers scope\n * @param {string} name\n */\n\n\n Parser.prototype.remove = function (name) {\n this.scope.delete(name);\n };\n /**\n * Clear the scope with variables and functions\n */\n\n\n Parser.prototype.clear = function () {\n this.scope.clear();\n };\n\n return Parser;\n}, {\n isClass: true\n});","import { factory } from '../../utils/factory.js';\nvar name = 'parser';\nvar dependencies = ['typed', 'Parser'];\nexport var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Parser\n } = _ref;\n\n /**\n * Create a parser. The function creates a new `math.Parser` object.\n *\n * Syntax:\n *\n * math.parser()\n *\n * Examples:\n *\n * const parser = new math.parser()\n *\n * // evaluate expressions\n * const a = parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * const b = parser.evaluate('sqrt(-4)') // 2i\n * const c = parser.evaluate('2 inch in cm') // 5.08 cm\n * const d = parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 7\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n * See also:\n *\n * evaluate, compile, parse\n *\n * @return {Parser} Parser\n */\n return typed(name, {\n '': function _() {\n return new Parser();\n }\n });\n});","import { clone } from '../../../utils/object.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'lup';\nvar dependencies = ['typed', 'matrix', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtract', 'larger', 'equalScalar', 'unaryMinus', 'DenseMatrix', 'SparseMatrix', 'Spa'];\nexport var createLup = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n abs,\n addScalar,\n divideScalar,\n multiplyScalar,\n subtract,\n larger,\n equalScalar,\n unaryMinus,\n DenseMatrix,\n SparseMatrix,\n Spa\n } = _ref;\n\n /**\n * Calculate the Matrix LU decomposition with partial pivoting. Matrix `A` is decomposed in two matrices (`L`, `U`) and a\n * row permutation vector `p` where `A[p,:] = L * U`\n *\n * Syntax:\n *\n * math.lup(A)\n *\n * Example:\n *\n * const m = [[2, 1], [1, 4]]\n * const r = math.lup(m)\n * // r = {\n * // L: [[1, 0], [0.5, 1]],\n * // U: [[2, 1], [0, 3.5]],\n * // P: [0, 1]\n * // }\n *\n * See also:\n *\n * slu, lsolve, lusolve, usolve\n *\n * @param {Matrix | Array} A A two dimensional matrix or array for which to get the LUP decomposition.\n *\n * @return {{L: Array | Matrix, U: Array | Matrix, P: Array.}} The lower triangular matrix, the upper triangular matrix and the permutation matrix.\n */\n return typed(name, {\n DenseMatrix: function DenseMatrix(m) {\n return _denseLUP(m);\n },\n SparseMatrix: function SparseMatrix(m) {\n return _sparseLUP(m);\n },\n Array: function Array(a) {\n // create dense matrix from array\n var m = matrix(a); // lup, use matrix implementation\n\n var r = _denseLUP(m); // result\n\n\n return {\n L: r.L.valueOf(),\n U: r.U.valueOf(),\n p: r.p\n };\n }\n });\n\n function _denseLUP(m) {\n // rows & columns\n var rows = m._size[0];\n var columns = m._size[1]; // minimum rows and columns\n\n var n = Math.min(rows, columns); // matrix array, clone original data\n\n var data = clone(m._data); // l matrix arrays\n\n var ldata = [];\n var lsize = [rows, n]; // u matrix arrays\n\n var udata = [];\n var usize = [n, columns]; // vars\n\n var i, j, k; // permutation vector\n\n var p = [];\n\n for (i = 0; i < rows; i++) {\n p[i] = i;\n } // loop columns\n\n\n for (j = 0; j < columns; j++) {\n // skip first column in upper triangular matrix\n if (j > 0) {\n // loop rows\n for (i = 0; i < rows; i++) {\n // min i,j\n var min = Math.min(i, j); // v[i, j]\n\n var s = 0; // loop up to min\n\n for (k = 0; k < min; k++) {\n // s = l[i, k] - data[k, j]\n s = addScalar(s, multiplyScalar(data[i][k], data[k][j]));\n }\n\n data[i][j] = subtract(data[i][j], s);\n }\n } // row with larger value in cvector, row >= j\n\n\n var pi = j;\n var pabsv = 0;\n var vjj = 0; // loop rows\n\n for (i = j; i < rows; i++) {\n // data @ i, j\n var v = data[i][j]; // absolute value\n\n var absv = abs(v); // value is greater than pivote value\n\n if (larger(absv, pabsv)) {\n // store row\n pi = i; // update max value\n\n pabsv = absv; // value @ [j, j]\n\n vjj = v;\n }\n } // swap rows (j <-> pi)\n\n\n if (j !== pi) {\n // swap values j <-> pi in p\n p[j] = [p[pi], p[pi] = p[j]][0]; // swap j <-> pi in data\n\n DenseMatrix._swapRows(j, pi, data);\n } // check column is in lower triangular matrix\n\n\n if (j < rows) {\n // loop rows (lower triangular matrix)\n for (i = j + 1; i < rows; i++) {\n // value @ i, j\n var vij = data[i][j];\n\n if (!equalScalar(vij, 0)) {\n // update data\n data[i][j] = divideScalar(data[i][j], vjj);\n }\n }\n }\n } // loop columns\n\n\n for (j = 0; j < columns; j++) {\n // loop rows\n for (i = 0; i < rows; i++) {\n // initialize row in arrays\n if (j === 0) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i] = [];\n } // L\n\n\n ldata[i] = [];\n } // check we are in the upper triangular matrix\n\n\n if (i < j) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = data[i][j];\n } // check column exists in lower triangular matrix\n\n\n if (j < rows) {\n // L\n ldata[i][j] = 0;\n }\n\n continue;\n } // diagonal value\n\n\n if (i === j) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = data[i][j];\n } // check column exists in lower triangular matrix\n\n\n if (j < rows) {\n // L\n ldata[i][j] = 1;\n }\n\n continue;\n } // check row exists in upper triangular matrix\n\n\n if (i < columns) {\n // U\n udata[i][j] = 0;\n } // check column exists in lower triangular matrix\n\n\n if (j < rows) {\n // L\n ldata[i][j] = data[i][j];\n }\n }\n } // l matrix\n\n\n var l = new DenseMatrix({\n data: ldata,\n size: lsize\n }); // u matrix\n\n var u = new DenseMatrix({\n data: udata,\n size: usize\n }); // p vector\n\n var pv = [];\n\n for (i = 0, n = p.length; i < n; i++) {\n pv[p[i]] = i;\n } // return matrices\n\n\n return {\n L: l,\n U: u,\n p: pv,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\nP: ' + this.p;\n }\n };\n }\n\n function _sparseLUP(m) {\n // rows & columns\n var rows = m._size[0];\n var columns = m._size[1]; // minimum rows and columns\n\n var n = Math.min(rows, columns); // matrix arrays (will not be modified, thanks to permutation vector)\n\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr; // l matrix arrays\n\n var lvalues = [];\n var lindex = [];\n var lptr = [];\n var lsize = [rows, n]; // u matrix arrays\n\n var uvalues = [];\n var uindex = [];\n var uptr = [];\n var usize = [n, columns]; // vars\n\n var i, j, k; // permutation vectors, (current index -> original index) and (original index -> current index)\n\n var pvCo = [];\n var pvOc = [];\n\n for (i = 0; i < rows; i++) {\n pvCo[i] = i;\n pvOc[i] = i;\n } // swap indices in permutation vectors (condition x < y)!\n\n\n var swapIndeces = function swapIndeces(x, y) {\n // find pv indeces getting data from x and y\n var kx = pvOc[x];\n var ky = pvOc[y]; // update permutation vector current -> original\n\n pvCo[kx] = y;\n pvCo[ky] = x; // update permutation vector original -> current\n\n pvOc[x] = ky;\n pvOc[y] = kx;\n }; // loop columns\n\n\n var _loop = function _loop() {\n // sparse accumulator\n var spa = new Spa(); // check lower triangular matrix has a value @ column j\n\n if (j < rows) {\n // update ptr\n lptr.push(lvalues.length); // first value in j column for lower triangular matrix\n\n lvalues.push(1);\n lindex.push(j);\n } // update ptr\n\n\n uptr.push(uvalues.length); // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n\n var k0 = ptr[j];\n var k1 = ptr[j + 1]; // copy column j into sparse accumulator\n\n for (k = k0; k < k1; k++) {\n // row\n i = index[k]; // copy column values into sparse accumulator (use permutation vector)\n\n spa.set(pvCo[i], values[k]);\n } // skip first column in upper triangular matrix\n\n\n if (j > 0) {\n // loop rows in column j (above diagonal)\n spa.forEach(0, j - 1, function (k, vkj) {\n // loop rows in column k (L)\n SparseMatrix._forEachRow(k, lvalues, lindex, lptr, function (i, vik) {\n // check row is below k\n if (i > k) {\n // update spa value\n spa.accumulate(i, unaryMinus(multiplyScalar(vik, vkj)));\n }\n });\n });\n } // row with larger value in spa, row >= j\n\n\n var pi = j;\n var vjj = spa.get(j);\n var pabsv = abs(vjj); // loop values in spa (order by row, below diagonal)\n\n spa.forEach(j + 1, rows - 1, function (x, v) {\n // absolute value\n var absv = abs(v); // value is greater than pivote value\n\n if (larger(absv, pabsv)) {\n // store row\n pi = x; // update max value\n\n pabsv = absv; // value @ [j, j]\n\n vjj = v;\n }\n }); // swap rows (j <-> pi)\n\n if (j !== pi) {\n // swap values j <-> pi in L\n SparseMatrix._swapRows(j, pi, lsize[1], lvalues, lindex, lptr); // swap values j <-> pi in U\n\n\n SparseMatrix._swapRows(j, pi, usize[1], uvalues, uindex, uptr); // swap values in spa\n\n\n spa.swap(j, pi); // update permutation vector (swap values @ j, pi)\n\n swapIndeces(j, pi);\n } // loop values in spa (order by row)\n\n\n spa.forEach(0, rows - 1, function (x, v) {\n // check we are above diagonal\n if (x <= j) {\n // update upper triangular matrix\n uvalues.push(v);\n uindex.push(x);\n } else {\n // update value\n v = divideScalar(v, vjj); // check value is non zero\n\n if (!equalScalar(v, 0)) {\n // update lower triangular matrix\n lvalues.push(v);\n lindex.push(x);\n }\n }\n });\n };\n\n for (j = 0; j < columns; j++) {\n _loop();\n } // update ptrs\n\n\n uptr.push(uvalues.length);\n lptr.push(lvalues.length); // return matrices\n\n return {\n L: new SparseMatrix({\n values: lvalues,\n index: lindex,\n ptr: lptr,\n size: lsize\n }),\n U: new SparseMatrix({\n values: uvalues,\n index: uindex,\n ptr: uptr,\n size: usize\n }),\n p: pvCo,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\nP: ' + this.p;\n }\n };\n }\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../../../utils/factory.js';\nvar name = 'qr';\nvar dependencies = ['typed', 'matrix', 'zeros', 'identity', 'isZero', 'equal', 'sign', 'sqrt', 'conj', 'unaryMinus', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtract', 'complex'];\nexport var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n identity,\n isZero,\n equal,\n sign,\n sqrt,\n conj,\n unaryMinus,\n addScalar,\n divideScalar,\n multiplyScalar,\n subtract,\n complex\n } = _ref;\n\n /**\n * Calculate the Matrix QR decomposition. Matrix `A` is decomposed in\n * two matrices (`Q`, `R`) where `Q` is an\n * orthogonal matrix and `R` is an upper triangular matrix.\n *\n * Syntax:\n *\n * math.qr(A)\n *\n * Example:\n *\n * const m = [\n * [1, -1, 4],\n * [1, 4, -2],\n * [1, 4, 2],\n * [1, -1, 0]\n * ]\n * const result = math.qr(m)\n * // r = {\n * // Q: [\n * // [0.5, -0.5, 0.5],\n * // [0.5, 0.5, -0.5],\n * // [0.5, 0.5, 0.5],\n * // [0.5, -0.5, -0.5],\n * // ],\n * // R: [\n * // [2, 3, 2],\n * // [0, 5, -2],\n * // [0, 0, 4],\n * // [0, 0, 0]\n * // ]\n * // }\n *\n * See also:\n *\n * lup, lusolve\n *\n * @param {Matrix | Array} A A two dimensional matrix or array\n * for which to get the QR decomposition.\n *\n * @return {{Q: Array | Matrix, R: Array | Matrix}} Q: the orthogonal\n * matrix and R: the upper triangular matrix\n */\n return _extends(typed(name, {\n DenseMatrix: function DenseMatrix(m) {\n return _denseQR(m);\n },\n SparseMatrix: function SparseMatrix(m) {\n return _sparseQR(m);\n },\n Array: function Array(a) {\n // create dense matrix from array\n var m = matrix(a); // lup, use matrix implementation\n\n var r = _denseQR(m); // result\n\n\n return {\n Q: r.Q.valueOf(),\n R: r.R.valueOf()\n };\n }\n }), {\n _denseQRimpl\n });\n\n function _denseQRimpl(m) {\n // rows & columns (m x n)\n var rows = m._size[0]; // m\n\n var cols = m._size[1]; // n\n\n var Q = identity([rows], 'dense');\n var Qdata = Q._data;\n var R = m.clone();\n var Rdata = R._data; // vars\n\n var i, j, k;\n var w = zeros([rows], '');\n\n for (k = 0; k < Math.min(cols, rows); ++k) {\n /*\n * **k-th Household matrix**\n *\n * The matrix I - 2*v*transpose(v)\n * x = first column of A\n * x1 = first element of x\n * alpha = x1 / |x1| * |x|\n * e1 = tranpose([1, 0, 0, ...])\n * u = x - alpha * e1\n * v = u / |u|\n *\n * Household matrix = I - 2 * v * tranpose(v)\n *\n * * Initially Q = I and R = A.\n * * Household matrix is a reflection in a plane normal to v which\n * will zero out all but the top right element in R.\n * * Appplying reflection to both Q and R will not change product.\n * * Repeat this process on the (1,1) minor to get R as an upper\n * triangular matrix.\n * * Reflections leave the magnitude of the columns of Q unchanged\n * so Q remains othoganal.\n *\n */\n var pivot = Rdata[k][k];\n var sgn = unaryMinus(equal(pivot, 0) ? 1 : sign(pivot));\n var conjSgn = conj(sgn);\n var alphaSquared = 0;\n\n for (i = k; i < rows; i++) {\n alphaSquared = addScalar(alphaSquared, multiplyScalar(Rdata[i][k], conj(Rdata[i][k])));\n }\n\n var alpha = multiplyScalar(sgn, sqrt(alphaSquared));\n\n if (!isZero(alpha)) {\n // first element in vector u\n var u1 = subtract(pivot, alpha); // w = v * u1 / |u| (only elements k to (rows-1) are used)\n\n w[k] = 1;\n\n for (i = k + 1; i < rows; i++) {\n w[i] = divideScalar(Rdata[i][k], u1);\n } // tau = - conj(u1 / alpha)\n\n\n var tau = unaryMinus(conj(divideScalar(u1, alpha)));\n var s = void 0;\n /*\n * tau and w have been choosen so that\n *\n * 2 * v * tranpose(v) = tau * w * tranpose(w)\n */\n\n /*\n * -- calculate R = R - tau * w * tranpose(w) * R --\n * Only do calculation with rows k to (rows-1)\n * Additionally columns 0 to (k-1) will not be changed by this\n * multiplication so do not bother recalculating them\n */\n\n for (j = k; j < cols; j++) {\n s = 0.0; // calculate jth element of [tranpose(w) * R]\n\n for (i = k; i < rows; i++) {\n s = addScalar(s, multiplyScalar(conj(w[i]), Rdata[i][j]));\n } // calculate the jth element of [tau * transpose(w) * R]\n\n\n s = multiplyScalar(s, tau);\n\n for (i = k; i < rows; i++) {\n Rdata[i][j] = multiplyScalar(subtract(Rdata[i][j], multiplyScalar(w[i], s)), conjSgn);\n }\n }\n /*\n * -- calculate Q = Q - tau * Q * w * transpose(w) --\n * Q is a square matrix (rows x rows)\n * Only do calculation with columns k to (rows-1)\n * Additionally rows 0 to (k-1) will not be changed by this\n * multiplication so do not bother recalculating them\n */\n\n\n for (i = 0; i < rows; i++) {\n s = 0.0; // calculate ith element of [Q * w]\n\n for (j = k; j < rows; j++) {\n s = addScalar(s, multiplyScalar(Qdata[i][j], w[j]));\n } // calculate the ith element of [tau * Q * w]\n\n\n s = multiplyScalar(s, tau);\n\n for (j = k; j < rows; ++j) {\n Qdata[i][j] = divideScalar(subtract(Qdata[i][j], multiplyScalar(s, conj(w[j]))), conjSgn);\n }\n }\n }\n } // return matrices\n\n\n return {\n Q: Q,\n R: R,\n toString: function toString() {\n return 'Q: ' + this.Q.toString() + '\\nR: ' + this.R.toString();\n }\n };\n }\n\n function _denseQR(m) {\n var ret = _denseQRimpl(m);\n\n var Rdata = ret.R._data;\n\n if (m._data.length > 0) {\n var zero = Rdata[0][0].type === 'Complex' ? complex(0) : 0;\n\n for (var i = 0; i < Rdata.length; ++i) {\n for (var j = 0; j < i && j < (Rdata[0] || []).length; ++j) {\n Rdata[i][j] = zero;\n }\n }\n }\n\n return ret;\n }\n\n function _sparseQR(m) {\n throw new Error('qr not implemented for sparse matrices yet');\n }\n});","/**\n * Depth-first search and postorder of a tree rooted at node j\n *\n * @param {Number} j The tree node\n * @param {Number} k\n * @param {Array} w The workspace array\n * @param {Number} head The index offset within the workspace for the head array\n * @param {Number} next The index offset within the workspace for the next array\n * @param {Array} post The post ordering array\n * @param {Number} stack The index offset within the workspace for the stack array\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csTdfs(j, k, w, head, next, post, stack) {\n // variables\n var top = 0; // place j on the stack\n\n w[stack] = j; // while (stack is not empty)\n\n while (top >= 0) {\n // p = top of stack\n var p = w[stack + top]; // i = youngest child of p\n\n var i = w[head + p];\n\n if (i === -1) {\n // p has no unordered children left\n top--; // node p is the kth postordered node\n\n post[k++] = p;\n } else {\n // remove i from children of p\n w[head + p] = w[next + i]; // increment top\n\n ++top; // start dfs on child node i\n\n w[stack + top] = i;\n }\n }\n\n return k;\n}","/**\n * This function \"flips\" its input about the integer -1.\n *\n * @param {Number} i The value to flip\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csFlip(i) {\n // flip the value\n return -i - 2;\n}","import { factory } from '../../../utils/factory.js';\nimport { csFkeep } from './csFkeep.js';\nimport { csFlip } from './csFlip.js';\nimport { csTdfs } from './csTdfs.js';\nvar name = 'csAmd';\nvar dependencies = ['add', 'multiply', 'transpose'];\nexport var createCsAmd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n add,\n multiply,\n transpose\n } = _ref;\n\n /**\n * Approximate minimum degree ordering. The minimum degree algorithm is a widely used\n * heuristic for finding a permutation P so that P*A*P' has fewer nonzeros in its factorization\n * than A. It is a gready method that selects the sparsest pivot row and column during the course\n * of a right looking sparse Cholesky factorization.\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n *\n * @param {Number} order 0: Natural, 1: Cholesky, 2: LU, 3: QR\n * @param {Matrix} m Sparse Matrix\n */\n return function csAmd(order, a) {\n // check input parameters\n if (!a || order <= 0 || order > 3) {\n return null;\n } // a matrix arrays\n\n\n var asize = a._size; // rows and columns\n\n var m = asize[0];\n var n = asize[1]; // initialize vars\n\n var lemax = 0; // dense threshold\n\n var dense = Math.max(16, 10 * Math.sqrt(n));\n dense = Math.min(n - 2, dense); // create target matrix C\n\n var cm = _createTargetMatrix(order, a, m, n, dense); // drop diagonal entries\n\n\n csFkeep(cm, _diag, null); // C matrix arrays\n\n var cindex = cm._index;\n var cptr = cm._ptr; // number of nonzero elements in C\n\n var cnz = cptr[n]; // allocate result (n+1)\n\n var P = []; // create workspace (8 * (n + 1))\n\n var W = [];\n var len = 0; // first n + 1 entries\n\n var nv = n + 1; // next n + 1 entries\n\n var next = 2 * (n + 1); // next n + 1 entries\n\n var head = 3 * (n + 1); // next n + 1 entries\n\n var elen = 4 * (n + 1); // next n + 1 entries\n\n var degree = 5 * (n + 1); // next n + 1 entries\n\n var w = 6 * (n + 1); // next n + 1 entries\n\n var hhead = 7 * (n + 1); // last n + 1 entries\n // use P as workspace for last\n\n var last = P; // initialize quotient graph\n\n var mark = _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree); // initialize degree lists\n\n\n var nel = _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next); // minimum degree node\n\n\n var mindeg = 0; // vars\n\n var i, j, k, k1, k2, e, pj, ln, nvi, pk, eln, p1, p2, pn, h, d; // while (selecting pivots) do\n\n while (nel < n) {\n // select node of minimum approximate degree. amd() is now ready to start eliminating the graph. It first\n // finds a node k of minimum degree and removes it from its degree list. The variable nel keeps track of thow\n // many nodes have been eliminated.\n for (k = -1; mindeg < n && (k = W[head + mindeg]) === -1; mindeg++) {\n ;\n }\n\n if (W[next + k] !== -1) {\n last[W[next + k]] = -1;\n } // remove k from degree list\n\n\n W[head + mindeg] = W[next + k]; // elenk = |Ek|\n\n var elenk = W[elen + k]; // # of nodes k represents\n\n var nvk = W[nv + k]; // W[nv + k] nodes of A eliminated\n\n nel += nvk; // Construct a new element. The new element Lk is constructed in place if |Ek| = 0. nv[i] is\n // negated for all nodes i in Lk to flag them as members of this set. Each node i is removed from the\n // degree lists. All elements e in Ek are absorved into element k.\n\n var dk = 0; // flag k as in Lk\n\n W[nv + k] = -nvk;\n var p = cptr[k]; // do in place if W[elen + k] === 0\n\n var pk1 = elenk === 0 ? p : cnz;\n var pk2 = pk1;\n\n for (k1 = 1; k1 <= elenk + 1; k1++) {\n if (k1 > elenk) {\n // search the nodes in k\n e = k; // list of nodes starts at cindex[pj]\n\n pj = p; // length of list of nodes in k\n\n ln = W[len + k] - elenk;\n } else {\n // search the nodes in e\n e = cindex[p++];\n pj = cptr[e]; // length of list of nodes in e\n\n ln = W[len + e];\n }\n\n for (k2 = 1; k2 <= ln; k2++) {\n i = cindex[pj++]; // check node i dead, or seen\n\n if ((nvi = W[nv + i]) <= 0) {\n continue;\n } // W[degree + Lk] += size of node i\n\n\n dk += nvi; // negate W[nv + i] to denote i in Lk\n\n W[nv + i] = -nvi; // place i in Lk\n\n cindex[pk2++] = i;\n\n if (W[next + i] !== -1) {\n last[W[next + i]] = last[i];\n } // check we need to remove i from degree list\n\n\n if (last[i] !== -1) {\n W[next + last[i]] = W[next + i];\n } else {\n W[head + W[degree + i]] = W[next + i];\n }\n }\n\n if (e !== k) {\n // absorb e into k\n cptr[e] = csFlip(k); // e is now a dead element\n\n W[w + e] = 0;\n }\n } // cindex[cnz...nzmax] is free\n\n\n if (elenk !== 0) {\n cnz = pk2;\n } // external degree of k - |Lk\\i|\n\n\n W[degree + k] = dk; // element k is in cindex[pk1..pk2-1]\n\n cptr[k] = pk1;\n W[len + k] = pk2 - pk1; // k is now an element\n\n W[elen + k] = -2; // Find set differences. The scan1 function now computes the set differences |Le \\ Lk| for all elements e. At the start of the\n // scan, no entry in the w array is greater than or equal to mark.\n // clear w if necessary\n\n mark = _wclear(mark, lemax, W, w, n); // scan 1: find |Le\\Lk|\n\n for (pk = pk1; pk < pk2; pk++) {\n i = cindex[pk]; // check if W[elen + i] empty, skip it\n\n if ((eln = W[elen + i]) <= 0) {\n continue;\n } // W[nv + i] was negated\n\n\n nvi = -W[nv + i];\n var wnvi = mark - nvi; // scan Ei\n\n for (p = cptr[i], p1 = cptr[i] + eln - 1; p <= p1; p++) {\n e = cindex[p];\n\n if (W[w + e] >= mark) {\n // decrement |Le\\Lk|\n W[w + e] -= nvi;\n } else if (W[w + e] !== 0) {\n // ensure e is a live element, 1st time e seen in scan 1\n W[w + e] = W[degree + e] + wnvi;\n }\n }\n } // degree update\n // The second pass computes the approximate degree di, prunes the sets Ei and Ai, and computes a hash\n // function h(i) for all nodes in Lk.\n // scan2: degree update\n\n\n for (pk = pk1; pk < pk2; pk++) {\n // consider node i in Lk\n i = cindex[pk];\n p1 = cptr[i];\n p2 = p1 + W[elen + i] - 1;\n pn = p1; // scan Ei\n\n for (h = 0, d = 0, p = p1; p <= p2; p++) {\n e = cindex[p]; // check e is an unabsorbed element\n\n if (W[w + e] !== 0) {\n // dext = |Le\\Lk|\n var dext = W[w + e] - mark;\n\n if (dext > 0) {\n // sum up the set differences\n d += dext; // keep e in Ei\n\n cindex[pn++] = e; // compute the hash of node i\n\n h += e;\n } else {\n // aggressive absorb. e->k\n cptr[e] = csFlip(k); // e is a dead element\n\n W[w + e] = 0;\n }\n }\n } // W[elen + i] = |Ei|\n\n\n W[elen + i] = pn - p1 + 1;\n var p3 = pn;\n var p4 = p1 + W[len + i]; // prune edges in Ai\n\n for (p = p2 + 1; p < p4; p++) {\n j = cindex[p]; // check node j dead or in Lk\n\n var nvj = W[nv + j];\n\n if (nvj <= 0) {\n continue;\n } // degree(i) += |j|\n\n\n d += nvj; // place j in node list of i\n\n cindex[pn++] = j; // compute hash for node i\n\n h += j;\n } // check for mass elimination\n\n\n if (d === 0) {\n // absorb i into k\n cptr[i] = csFlip(k);\n nvi = -W[nv + i]; // |Lk| -= |i|\n\n dk -= nvi; // |k| += W[nv + i]\n\n nvk += nvi;\n nel += nvi;\n W[nv + i] = 0; // node i is dead\n\n W[elen + i] = -1;\n } else {\n // update degree(i)\n W[degree + i] = Math.min(W[degree + i], d); // move first node to end\n\n cindex[pn] = cindex[p3]; // move 1st el. to end of Ei\n\n cindex[p3] = cindex[p1]; // add k as 1st element in of Ei\n\n cindex[p1] = k; // new len of adj. list of node i\n\n W[len + i] = pn - p1 + 1; // finalize hash of i\n\n h = (h < 0 ? -h : h) % n; // place i in hash bucket\n\n W[next + i] = W[hhead + h];\n W[hhead + h] = i; // save hash of i in last[i]\n\n last[i] = h;\n }\n } // finalize |Lk|\n\n\n W[degree + k] = dk;\n lemax = Math.max(lemax, dk); // clear w\n\n mark = _wclear(mark + lemax, lemax, W, w, n); // Supernode detection. Supernode detection relies on the hash function h(i) computed for each node i.\n // If two nodes have identical adjacency lists, their hash functions wil be identical.\n\n for (pk = pk1; pk < pk2; pk++) {\n i = cindex[pk]; // check i is dead, skip it\n\n if (W[nv + i] >= 0) {\n continue;\n } // scan hash bucket of node i\n\n\n h = last[i];\n i = W[hhead + h]; // hash bucket will be empty\n\n W[hhead + h] = -1;\n\n for (; i !== -1 && W[next + i] !== -1; i = W[next + i], mark++) {\n ln = W[len + i];\n eln = W[elen + i];\n\n for (p = cptr[i] + 1; p <= cptr[i] + ln - 1; p++) {\n W[w + cindex[p]] = mark;\n }\n\n var jlast = i; // compare i with all j\n\n for (j = W[next + i]; j !== -1;) {\n var ok = W[len + j] === ln && W[elen + j] === eln;\n\n for (p = cptr[j] + 1; ok && p <= cptr[j] + ln - 1; p++) {\n // compare i and j\n if (W[w + cindex[p]] !== mark) {\n ok = 0;\n }\n } // check i and j are identical\n\n\n if (ok) {\n // absorb j into i\n cptr[j] = csFlip(i);\n W[nv + i] += W[nv + j];\n W[nv + j] = 0; // node j is dead\n\n W[elen + j] = -1; // delete j from hash bucket\n\n j = W[next + j];\n W[next + jlast] = j;\n } else {\n // j and i are different\n jlast = j;\n j = W[next + j];\n }\n }\n }\n } // Finalize new element. The elimination of node k is nearly complete. All nodes i in Lk are scanned one last time.\n // Node i is removed from Lk if it is dead. The flagged status of nv[i] is cleared.\n\n\n for (p = pk1, pk = pk1; pk < pk2; pk++) {\n i = cindex[pk]; // check i is dead, skip it\n\n if ((nvi = -W[nv + i]) <= 0) {\n continue;\n } // restore W[nv + i]\n\n\n W[nv + i] = nvi; // compute external degree(i)\n\n d = W[degree + i] + dk - nvi;\n d = Math.min(d, n - nel - nvi);\n\n if (W[head + d] !== -1) {\n last[W[head + d]] = i;\n } // put i back in degree list\n\n\n W[next + i] = W[head + d];\n last[i] = -1;\n W[head + d] = i; // find new minimum degree\n\n mindeg = Math.min(mindeg, d);\n W[degree + i] = d; // place i in Lk\n\n cindex[p++] = i;\n } // # nodes absorbed into k\n\n\n W[nv + k] = nvk; // length of adj list of element k\n\n if ((W[len + k] = p - pk1) === 0) {\n // k is a root of the tree\n cptr[k] = -1; // k is now a dead element\n\n W[w + k] = 0;\n }\n\n if (elenk !== 0) {\n // free unused space in Lk\n cnz = p;\n }\n } // Postordering. The elimination is complete, but no permutation has been computed. All that is left\n // of the graph is the assembly tree (ptr) and a set of dead nodes and elements (i is a dead node if\n // nv[i] is zero and a dead element if nv[i] > 0). It is from this information only that the final permutation\n // is computed. The tree is restored by unflipping all of ptr.\n // fix assembly tree\n\n\n for (i = 0; i < n; i++) {\n cptr[i] = csFlip(cptr[i]);\n }\n\n for (j = 0; j <= n; j++) {\n W[head + j] = -1;\n } // place unordered nodes in lists\n\n\n for (j = n; j >= 0; j--) {\n // skip if j is an element\n if (W[nv + j] > 0) {\n continue;\n } // place j in list of its parent\n\n\n W[next + j] = W[head + cptr[j]];\n W[head + cptr[j]] = j;\n } // place elements in lists\n\n\n for (e = n; e >= 0; e--) {\n // skip unless e is an element\n if (W[nv + e] <= 0) {\n continue;\n }\n\n if (cptr[e] !== -1) {\n // place e in list of its parent\n W[next + e] = W[head + cptr[e]];\n W[head + cptr[e]] = e;\n }\n } // postorder the assembly tree\n\n\n for (k = 0, i = 0; i <= n; i++) {\n if (cptr[i] === -1) {\n k = csTdfs(i, k, W, head, next, P, w);\n }\n } // remove last item in array\n\n\n P.splice(P.length - 1, 1); // return P\n\n return P;\n };\n /**\n * Creates the matrix that will be used by the approximate minimum degree ordering algorithm. The function accepts the matrix M as input and returns a permutation\n * vector P. The amd algorithm operates on a symmetrix matrix, so one of three symmetric matrices is formed.\n *\n * Order: 0\n * A natural ordering P=null matrix is returned.\n *\n * Order: 1\n * Matrix must be square. This is appropriate for a Cholesky or LU factorization.\n * P = M + M'\n *\n * Order: 2\n * Dense columns from M' are dropped, M recreated from M'. This is appropriatefor LU factorization of unsymmetric matrices.\n * P = M' * M\n *\n * Order: 3\n * This is best used for QR factorization or LU factorization is matrix M has no dense rows. A dense row is a row with more than 10*sqr(columns) entries.\n * P = M' * M\n */\n\n function _createTargetMatrix(order, a, m, n, dense) {\n // compute A'\n var at = transpose(a); // check order = 1, matrix must be square\n\n if (order === 1 && n === m) {\n // C = A + A'\n return add(a, at);\n } // check order = 2, drop dense columns from M'\n\n\n if (order === 2) {\n // transpose arrays\n var tindex = at._index;\n var tptr = at._ptr; // new column index\n\n var p2 = 0; // loop A' columns (rows)\n\n for (var j = 0; j < m; j++) {\n // column j of AT starts here\n var p = tptr[j]; // new column j starts here\n\n tptr[j] = p2; // skip dense col j\n\n if (tptr[j + 1] - p > dense) {\n continue;\n } // map rows in column j of A\n\n\n for (var p1 = tptr[j + 1]; p < p1; p++) {\n tindex[p2++] = tindex[p];\n }\n } // finalize AT\n\n\n tptr[m] = p2; // recreate A from new transpose matrix\n\n a = transpose(at); // use A' * A\n\n return multiply(at, a);\n } // use A' * A, square or rectangular matrix\n\n\n return multiply(at, a);\n }\n /**\n * Initialize quotient graph. There are four kind of nodes and elements that must be represented:\n *\n * - A live node is a node i (or a supernode) that has not been selected as a pivot nad has not been merged into another supernode.\n * - A dead node i is one that has been removed from the graph, having been absorved into r = flip(ptr[i]).\n * - A live element e is one that is in the graph, having been formed when node e was selected as the pivot.\n * - A dead element e is one that has benn absorved into a subsequent element s = flip(ptr[e]).\n */\n\n\n function _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree) {\n // Initialize quotient graph\n for (var k = 0; k < n; k++) {\n W[len + k] = cptr[k + 1] - cptr[k];\n }\n\n W[len + n] = 0; // initialize workspace\n\n for (var i = 0; i <= n; i++) {\n // degree list i is empty\n W[head + i] = -1;\n last[i] = -1;\n W[next + i] = -1; // hash list i is empty\n\n W[hhead + i] = -1; // node i is just one node\n\n W[nv + i] = 1; // node i is alive\n\n W[w + i] = 1; // Ek of node i is empty\n\n W[elen + i] = 0; // degree of node i\n\n W[degree + i] = W[len + i];\n } // clear w\n\n\n var mark = _wclear(0, 0, W, w, n); // n is a dead element\n\n\n W[elen + n] = -2; // n is a root of assembly tree\n\n cptr[n] = -1; // n is a dead element\n\n W[w + n] = 0; // return mark\n\n return mark;\n }\n /**\n * Initialize degree lists. Each node is placed in its degree lists. Nodes of zero degree are eliminated immediately. Nodes with\n * degree >= dense are alsol eliminated and merged into a placeholder node n, a dead element. Thes nodes will appera last in the\n * output permutation p.\n */\n\n\n function _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next) {\n // result\n var nel = 0; // loop columns\n\n for (var i = 0; i < n; i++) {\n // degree @ i\n var d = W[degree + i]; // check node i is empty\n\n if (d === 0) {\n // element i is dead\n W[elen + i] = -2;\n nel++; // i is a root of assembly tree\n\n cptr[i] = -1;\n W[w + i] = 0;\n } else if (d > dense) {\n // absorb i into element n\n W[nv + i] = 0; // node i is dead\n\n W[elen + i] = -1;\n nel++;\n cptr[i] = csFlip(n);\n W[nv + n]++;\n } else {\n var h = W[head + d];\n\n if (h !== -1) {\n last[h] = i;\n } // put node i in degree list d\n\n\n W[next + i] = W[head + d];\n W[head + d] = i;\n }\n }\n\n return nel;\n }\n\n function _wclear(mark, lemax, W, w, n) {\n if (mark < 2 || mark + lemax < 0) {\n for (var k = 0; k < n; k++) {\n if (W[w + k] !== 0) {\n W[w + k] = 1;\n }\n }\n\n mark = 2;\n } // at this point, W [0..n-1] < mark holds\n\n\n return mark;\n }\n\n function _diag(i, j) {\n return i !== j;\n }\n});","/**\n * Keeps entries in the matrix when the callback function returns true, removes the entry otherwise\n *\n * @param {Matrix} a The sparse matrix\n * @param {function} callback The callback function, function will be invoked with the following args:\n * - The entry row\n * - The entry column\n * - The entry value\n * - The state parameter\n * @param {any} other The state\n *\n * @return The number of nonzero elements in the matrix\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csFkeep(a, callback, other) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size; // columns\n\n var n = asize[1]; // nonzero items\n\n var nz = 0; // loop columns\n\n for (var j = 0; j < n; j++) {\n // get current location of col j\n var p = aptr[j]; // record new location of col j\n\n aptr[j] = nz;\n\n for (; p < aptr[j + 1]; p++) {\n // check we need to keep this item\n if (callback(aindex[p], j, avalues ? avalues[p] : 1, other)) {\n // keep A(i,j)\n aindex[nz] = aindex[p]; // check we need to process values (pattern only)\n\n if (avalues) {\n avalues[nz] = avalues[p];\n } // increment nonzero items\n\n\n nz++;\n }\n }\n } // finalize A\n\n\n aptr[n] = nz; // trim arrays\n\n aindex.splice(nz, aindex.length - nz); // check we need to process values (pattern only)\n\n if (avalues) {\n avalues.splice(nz, avalues.length - nz);\n } // return number of nonzero items\n\n\n return nz;\n}","/**\n * This function determines if j is a leaf of the ith row subtree.\n * Consider A(i,j), node j in ith row subtree and return lca(jprev,j)\n *\n * @param {Number} i The ith row subtree\n * @param {Number} j The node to test\n * @param {Array} w The workspace array\n * @param {Number} first The index offset within the workspace for the first array\n * @param {Number} maxfirst The index offset within the workspace for the maxfirst array\n * @param {Number} prevleaf The index offset within the workspace for the prevleaf array\n * @param {Number} ancestor The index offset within the workspace for the ancestor array\n *\n * @return {Object}\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor) {\n var s, sparent; // our result\n\n var jleaf = 0;\n var q; // check j is a leaf\n\n if (i <= j || w[first + j] <= w[maxfirst + i]) {\n return -1;\n } // update max first[j] seen so far\n\n\n w[maxfirst + i] = w[first + j]; // jprev = previous leaf of ith subtree\n\n var jprev = w[prevleaf + i];\n w[prevleaf + i] = j; // check j is first or subsequent leaf\n\n if (jprev === -1) {\n // 1st leaf, q = root of ith subtree\n jleaf = 1;\n q = i;\n } else {\n // update jleaf\n jleaf = 2; // q = least common ancester (jprev,j)\n\n for (q = jprev; q !== w[ancestor + q]; q = w[ancestor + q]) {\n ;\n }\n\n for (s = jprev; s !== q; s = sparent) {\n // path compression\n sparent = w[ancestor + s];\n w[ancestor + s] = q;\n }\n }\n\n return {\n jleaf: jleaf,\n q: q\n };\n}","import { factory } from '../../../utils/factory.js';\nimport { csLeaf } from './csLeaf.js';\nvar name = 'csCounts';\nvar dependencies = ['transpose'];\nexport var createCsCounts = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n transpose\n } = _ref;\n\n /**\n * Computes the column counts using the upper triangular part of A.\n * It transposes A internally, none of the input parameters are modified.\n *\n * @param {Matrix} a The sparse matrix A\n *\n * @param {Matrix} ata Count the columns of A'A instead\n *\n * @return An array of size n of the column counts or null on error\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n return function (a, parent, post, ata) {\n // check inputs\n if (!a || !parent || !post) {\n return null;\n } // a matrix arrays\n\n\n var asize = a._size; // rows and columns\n\n var m = asize[0];\n var n = asize[1]; // variables\n\n var i, j, k, J, p, p0, p1; // workspace size\n\n var s = 4 * n + (ata ? n + m + 1 : 0); // allocate workspace\n\n var w = []; // (s)\n\n var ancestor = 0; // first n entries\n\n var maxfirst = n; // next n entries\n\n var prevleaf = 2 * n; // next n entries\n\n var first = 3 * n; // next n entries\n\n var head = 4 * n; // next n + 1 entries (used when ata is true)\n\n var next = 5 * n + 1; // last entries in workspace\n // clear workspace w[0..s-1]\n\n for (k = 0; k < s; k++) {\n w[k] = -1;\n } // allocate result\n\n\n var colcount = []; // (n)\n // AT = A'\n\n var at = transpose(a); // at arrays\n\n var tindex = at._index;\n var tptr = at._ptr; // find w[first + j]\n\n for (k = 0; k < n; k++) {\n j = post[k]; // colcount[j]=1 if j is a leaf\n\n colcount[j] = w[first + j] === -1 ? 1 : 0;\n\n for (; j !== -1 && w[first + j] === -1; j = parent[j]) {\n w[first + j] = k;\n }\n } // initialize ata if needed\n\n\n if (ata) {\n // invert post\n for (k = 0; k < n; k++) {\n w[post[k]] = k;\n } // loop rows (columns in AT)\n\n\n for (i = 0; i < m; i++) {\n // values in column i of AT\n for (k = n, p0 = tptr[i], p1 = tptr[i + 1], p = p0; p < p1; p++) {\n k = Math.min(k, w[tindex[p]]);\n } // place row i in linked list k\n\n\n w[next + i] = w[head + k];\n w[head + k] = i;\n }\n } // each node in its own set\n\n\n for (i = 0; i < n; i++) {\n w[ancestor + i] = i;\n }\n\n for (k = 0; k < n; k++) {\n // j is the kth node in postordered etree\n j = post[k]; // check j is not a root\n\n if (parent[j] !== -1) {\n colcount[parent[j]]--;\n } // J=j for LL'=A case\n\n\n for (J = ata ? w[head + k] : j; J !== -1; J = ata ? w[next + J] : -1) {\n for (p = tptr[J]; p < tptr[J + 1]; p++) {\n i = tindex[p];\n var r = csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor); // check A(i,j) is in skeleton\n\n if (r.jleaf >= 1) {\n colcount[j]++;\n } // check account for overlap in q\n\n\n if (r.jleaf === 2) {\n colcount[r.q]--;\n }\n }\n }\n\n if (parent[j] !== -1) {\n w[ancestor + j] = parent[j];\n }\n } // sum up colcount's of each child\n\n\n for (j = 0; j < n; j++) {\n if (parent[j] !== -1) {\n colcount[parent[j]] += colcount[j];\n }\n }\n\n return colcount;\n };\n});","import { csPermute } from './csPermute.js';\nimport { csPost } from './csPost.js';\nimport { csEtree } from './csEtree.js';\nimport { createCsAmd } from './csAmd.js';\nimport { createCsCounts } from './csCounts.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'csSqr';\nvar dependencies = ['add', 'multiply', 'transpose'];\nexport var createCsSqr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n add,\n multiply,\n transpose\n } = _ref;\n var csAmd = createCsAmd({\n add,\n multiply,\n transpose\n });\n var csCounts = createCsCounts({\n transpose\n });\n /**\n * Symbolic ordering and analysis for QR and LU decompositions.\n *\n * @param {Number} order The ordering strategy (see csAmd for more details)\n * @param {Matrix} a The A matrix\n * @param {boolean} qr Symbolic ordering and analysis for QR decomposition (true) or\n * symbolic ordering and analysis for LU decomposition (false)\n *\n * @return {Object} The Symbolic ordering and analysis for matrix A\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\n return function csSqr(order, a, qr) {\n // a arrays\n var aptr = a._ptr;\n var asize = a._size; // columns\n\n var n = asize[1]; // vars\n\n var k; // symbolic analysis result\n\n var s = {}; // fill-reducing ordering\n\n s.q = csAmd(order, a); // validate results\n\n if (order && !s.q) {\n return null;\n } // QR symbolic analysis\n\n\n if (qr) {\n // apply permutations if needed\n var c = order ? csPermute(a, null, s.q, 0) : a; // etree of C'*C, where C=A(:,q)\n\n s.parent = csEtree(c, 1); // post order elimination tree\n\n var post = csPost(s.parent, n); // col counts chol(C'*C)\n\n s.cp = csCounts(c, s.parent, post, 1); // check we have everything needed to calculate number of nonzero elements\n\n if (c && s.parent && s.cp && _vcount(c, s)) {\n // calculate number of nonzero elements\n for (s.unz = 0, k = 0; k < n; k++) {\n s.unz += s.cp[k];\n }\n }\n } else {\n // for LU factorization only, guess nnz(L) and nnz(U)\n s.unz = 4 * aptr[n] + n;\n s.lnz = s.unz;\n } // return result S\n\n\n return s;\n };\n /**\n * Compute nnz(V) = s.lnz, s.pinv, s.leftmost, s.m2 from A and s.parent\n */\n\n function _vcount(a, s) {\n // a arrays\n var aptr = a._ptr;\n var aindex = a._index;\n var asize = a._size; // rows & columns\n\n var m = asize[0];\n var n = asize[1]; // initialize s arrays\n\n s.pinv = []; // (m + n)\n\n s.leftmost = []; // (m)\n // vars\n\n var parent = s.parent;\n var pinv = s.pinv;\n var leftmost = s.leftmost; // workspace, next: first m entries, head: next n entries, tail: next n entries, nque: next n entries\n\n var w = []; // (m + 3 * n)\n\n var next = 0;\n var head = m;\n var tail = m + n;\n var nque = m + 2 * n; // vars\n\n var i, k, p, p0, p1; // initialize w\n\n for (k = 0; k < n; k++) {\n // queue k is empty\n w[head + k] = -1;\n w[tail + k] = -1;\n w[nque + k] = 0;\n } // initialize row arrays\n\n\n for (i = 0; i < m; i++) {\n leftmost[i] = -1;\n } // loop columns backwards\n\n\n for (k = n - 1; k >= 0; k--) {\n // values & index for column k\n for (p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {\n // leftmost[i] = min(find(A(i,:)))\n leftmost[aindex[p]] = k;\n }\n } // scan rows in reverse order\n\n\n for (i = m - 1; i >= 0; i--) {\n // row i is not yet ordered\n pinv[i] = -1;\n k = leftmost[i]; // check row i is empty\n\n if (k === -1) {\n continue;\n } // first row in queue k\n\n\n if (w[nque + k]++ === 0) {\n w[tail + k] = i;\n } // put i at head of queue k\n\n\n w[next + i] = w[head + k];\n w[head + k] = i;\n }\n\n s.lnz = 0;\n s.m2 = m; // find row permutation and nnz(V)\n\n for (k = 0; k < n; k++) {\n // remove row i from queue k\n i = w[head + k]; // count V(k,k) as nonzero\n\n s.lnz++; // add a fictitious row\n\n if (i < 0) {\n i = s.m2++;\n } // associate row i with V(:,k)\n\n\n pinv[i] = k; // skip if V(k+1:m,k) is empty\n\n if (--nque[k] <= 0) {\n continue;\n } // nque[k] is nnz (V(k+1:m,k))\n\n\n s.lnz += w[nque + k]; // move all rows to parent of k\n\n var pa = parent[k];\n\n if (pa !== -1) {\n if (w[nque + pa] === 0) {\n w[tail + pa] = w[tail + k];\n }\n\n w[next + w[tail + k]] = w[head + pa];\n w[head + pa] = w[next + i];\n w[nque + pa] += w[nque + k];\n }\n }\n\n for (i = 0; i < m; i++) {\n if (pinv[i] < 0) {\n pinv[i] = k++;\n }\n }\n\n return true;\n }\n});","/**\n * Permutes a sparse matrix C = P * A * Q\n *\n * @param {SparseMatrix} a The Matrix A\n * @param {Array} pinv The row permutation vector\n * @param {Array} q The column permutation vector\n * @param {boolean} values Create a pattern matrix (false), values and pattern otherwise\n *\n * @return {Matrix} C = P * A * Q, null on error\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csPermute(a, pinv, q, values) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype; // rows & columns\n\n var m = asize[0];\n var n = asize[1]; // c arrays\n\n var cvalues = values && a._values ? [] : null;\n var cindex = []; // (aptr[n])\n\n var cptr = []; // (n + 1)\n // initialize vars\n\n var nz = 0; // loop columns\n\n for (var k = 0; k < n; k++) {\n // column k of C is column q[k] of A\n cptr[k] = nz; // apply column permutation\n\n var j = q ? q[k] : k; // loop values in column j of A\n\n for (var t0 = aptr[j], t1 = aptr[j + 1], t = t0; t < t1; t++) {\n // row i of A is row pinv[i] of C\n var r = pinv ? pinv[aindex[t]] : aindex[t]; // index\n\n cindex[nz] = r; // check we need to populate values\n\n if (cvalues) {\n cvalues[nz] = avalues[t];\n } // increment number of nonzero elements\n\n\n nz++;\n }\n } // finalize the last column of C\n\n\n cptr[n] = nz; // return C matrix\n\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [m, n],\n datatype: adt\n });\n}","/**\n * Computes the elimination tree of Matrix A (using triu(A)) or the\n * elimination tree of A'A without forming A'A.\n *\n * @param {Matrix} a The A Matrix\n * @param {boolean} ata A value of true the function computes the etree of A'A\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csEtree(a, ata) {\n // check inputs\n if (!a) {\n return null;\n } // a arrays\n\n\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size; // rows & columns\n\n var m = asize[0];\n var n = asize[1]; // allocate result\n\n var parent = []; // (n)\n // allocate workspace\n\n var w = []; // (n + (ata ? m : 0))\n\n var ancestor = 0; // first n entries in w\n\n var prev = n; // last m entries (ata = true)\n\n var i, inext; // check we are calculating A'A\n\n if (ata) {\n // initialize workspace\n for (i = 0; i < m; i++) {\n w[prev + i] = -1;\n }\n } // loop columns\n\n\n for (var k = 0; k < n; k++) {\n // node k has no parent yet\n parent[k] = -1; // nor does k have an ancestor\n\n w[ancestor + k] = -1; // values in column k\n\n for (var p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {\n // row\n var r = aindex[p]; // node\n\n i = ata ? w[prev + r] : r; // traverse from i to k\n\n for (; i !== -1 && i < k; i = inext) {\n // inext = ancestor of i\n inext = w[ancestor + i]; // path compression\n\n w[ancestor + i] = k; // check no anc., parent is k\n\n if (inext === -1) {\n parent[i] = k;\n }\n }\n\n if (ata) {\n w[prev + r] = k;\n }\n }\n }\n\n return parent;\n}","import { csTdfs } from './csTdfs.js';\n/**\n * Post order a tree of forest\n *\n * @param {Array} parent The tree or forest\n * @param {Number} n Number of columns\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\nexport function csPost(parent, n) {\n // check inputs\n if (!parent) {\n return null;\n } // vars\n\n\n var k = 0;\n var j; // allocate result\n\n var post = []; // (n)\n // workspace, head: first n entries, next: next n entries, stack: last n entries\n\n var w = []; // (3 * n)\n\n var head = 0;\n var next = n;\n var stack = 2 * n; // initialize workspace\n\n for (j = 0; j < n; j++) {\n // empty linked lists\n w[head + j] = -1;\n } // traverse nodes in reverse order\n\n\n for (j = n - 1; j >= 0; j--) {\n // check j is a root\n if (parent[j] === -1) {\n continue;\n } // add j to list of its parent\n\n\n w[next + j] = w[head + parent[j]];\n w[head + parent[j]] = j;\n } // loop nodes\n\n\n for (j = 0; j < n; j++) {\n // skip j if it is not a root\n if (parent[j] !== -1) {\n continue;\n } // depth-first search\n\n\n k = csTdfs(j, k, w, head, next, post, stack);\n }\n\n return post;\n}","/**\n * Checks if the node at w[j] is marked\n *\n * @param {Array} w The array\n * @param {Number} j The array index\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\nexport function csMarked(w, j) {\n // check node is marked\n return w[j] < 0;\n}","import { csFlip } from './csFlip.js';\n/**\n * Marks the node at w[j]\n *\n * @param {Array} w The array\n * @param {Number} j The array index\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\nexport function csMark(w, j) {\n // mark w[j]\n w[j] = csFlip(w[j]);\n}","import { csFlip } from './csFlip.js';\n/**\n * Flips the value if it is negative of returns the same value otherwise.\n *\n * @param {Number} i The value to flip\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\nexport function csUnflip(i) {\n // flip the value if it is negative\n return i < 0 ? csFlip(i) : i;\n}","import { csMarked } from './csMarked.js';\nimport { csMark } from './csMark.js';\nimport { csUnflip } from './csUnflip.js';\n/**\n * Depth-first search computes the nonzero pattern xi of the directed graph G (Matrix) starting\n * at nodes in B (see csReach()).\n *\n * @param {Number} j The starting node for the DFS algorithm\n * @param {Matrix} g The G matrix to search, ptr array modified, then restored\n * @param {Number} top Start index in stack xi[top..n-1]\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} pinv The inverse row permutation vector, must be null for L * x = b\n *\n * @return {Number} New value of top\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\nexport function csDfs(j, g, top, xi, pinv) {\n // g arrays\n var index = g._index;\n var ptr = g._ptr;\n var size = g._size; // columns\n\n var n = size[1]; // vars\n\n var i, p, p2; // initialize head\n\n var head = 0; // initialize the recursion stack\n\n xi[0] = j; // loop\n\n while (head >= 0) {\n // get j from the top of the recursion stack\n j = xi[head]; // apply permutation vector\n\n var jnew = pinv ? pinv[j] : j; // check node j is marked\n\n if (!csMarked(ptr, j)) {\n // mark node j as visited\n csMark(ptr, j); // update stack (last n entries in xi)\n\n xi[n + head] = jnew < 0 ? 0 : csUnflip(ptr[jnew]);\n } // node j done if no unvisited neighbors\n\n\n var done = 1; // examine all neighbors of j, stack (last n entries in xi)\n\n for (p = xi[n + head], p2 = jnew < 0 ? 0 : csUnflip(ptr[jnew + 1]); p < p2; p++) {\n // consider neighbor node i\n i = index[p]; // check we have visited node i, skip it\n\n if (csMarked(ptr, i)) {\n continue;\n } // pause depth-first search of node j, update stack (last n entries in xi)\n\n\n xi[n + head] = p; // start dfs at node i\n\n xi[++head] = i; // node j is not done\n\n done = 0; // break, to start dfs(i)\n\n break;\n } // check depth-first search at node j is done\n\n\n if (done) {\n // remove j from the recursion stack\n head--; // and place in the output stack\n\n xi[--top] = j;\n }\n }\n\n return top;\n}","import { csReach } from './csReach.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'csSpsolve';\nvar dependencies = ['divideScalar', 'multiply', 'subtract'];\nexport var createCsSpsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n divideScalar,\n multiply,\n subtract\n } = _ref;\n\n /**\n * The function csSpsolve() computes the solution to G * x = bk, where bk is the\n * kth column of B. When lo is true, the function assumes G = L is lower triangular with the\n * diagonal entry as the first entry in each column. When lo is true, the function assumes G = U\n * is upper triangular with the diagonal entry as the last entry in each column.\n *\n * @param {Matrix} g The G matrix\n * @param {Matrix} b The B matrix\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} x The soluton to the linear system G * x = b\n * @param {Array} pinv The inverse row permutation vector, must be null for L * x = b\n * @param {boolean} lo The lower (true) upper triangular (false) flag\n *\n * @return {Number} The index for the nonzero pattern\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n return function csSpsolve(g, b, k, xi, x, pinv, lo) {\n // g arrays\n var gvalues = g._values;\n var gindex = g._index;\n var gptr = g._ptr;\n var gsize = g._size; // columns\n\n var n = gsize[1]; // b arrays\n\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr; // vars\n\n var p, p0, p1, q; // xi[top..n-1] = csReach(B(:,k))\n\n var top = csReach(g, b, k, xi, pinv); // clear x\n\n for (p = top; p < n; p++) {\n x[xi[p]] = 0;\n } // scatter b\n\n\n for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {\n x[bindex[p]] = bvalues[p];\n } // loop columns\n\n\n for (var px = top; px < n; px++) {\n // x array index for px\n var j = xi[px]; // apply permutation vector (U x = b), j maps to column J of G\n\n var J = pinv ? pinv[j] : j; // check column J is empty\n\n if (J < 0) {\n continue;\n } // column value indeces in G, p0 <= p < p1\n\n\n p0 = gptr[J];\n p1 = gptr[J + 1]; // x(j) /= G(j,j)\n\n x[j] = divideScalar(x[j], gvalues[lo ? p0 : p1 - 1]); // first entry L(j,j)\n\n p = lo ? p0 + 1 : p0;\n q = lo ? p1 : p1 - 1; // loop\n\n for (; p < q; p++) {\n // row\n var i = gindex[p]; // x(i) -= G(i,j) * x(j)\n\n x[i] = subtract(x[i], multiply(gvalues[p], x[j]));\n }\n } // return top of stack\n\n\n return top;\n };\n});","import { csMarked } from './csMarked.js';\nimport { csMark } from './csMark.js';\nimport { csDfs } from './csDfs.js';\n/**\n * The csReach function computes X = Reach(B), where B is the nonzero pattern of the n-by-1\n * sparse column of vector b. The function returns the set of nodes reachable from any node in B. The\n * nonzero pattern xi of the solution x to the sparse linear system Lx=b is given by X=Reach(B).\n *\n * @param {Matrix} g The G matrix\n * @param {Matrix} b The B matrix\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} pinv The inverse row permutation vector\n *\n * @return {Number} The index for the nonzero pattern\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\nexport function csReach(g, b, k, xi, pinv) {\n // g arrays\n var gptr = g._ptr;\n var gsize = g._size; // b arrays\n\n var bindex = b._index;\n var bptr = b._ptr; // columns\n\n var n = gsize[1]; // vars\n\n var p, p0, p1; // initialize top\n\n var top = n; // loop column indeces in B\n\n for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {\n // node i\n var i = bindex[p]; // check node i is marked\n\n if (!csMarked(gptr, i)) {\n // start a dfs at unmarked node i\n top = csDfs(i, g, top, xi, pinv);\n }\n } // loop columns from top -> n - 1\n\n\n for (p = top; p < n; p++) {\n // restore G\n csMark(gptr, xi[p]);\n }\n\n return top;\n}","import { factory } from '../../../utils/factory.js';\nimport { createCsSpsolve } from './csSpsolve.js';\nvar name = 'csLu';\nvar dependencies = ['abs', 'divideScalar', 'multiply', 'subtract', 'larger', 'largerEq', 'SparseMatrix'];\nexport var createCsLu = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n abs,\n divideScalar,\n multiply,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n } = _ref;\n var csSpsolve = createCsSpsolve({\n divideScalar,\n multiply,\n subtract\n });\n /**\n * Computes the numeric LU factorization of the sparse matrix A. Implements a Left-looking LU factorization\n * algorithm that computes L and U one column at a tume. At the kth step, it access columns 1 to k-1 of L\n * and column k of A. Given the fill-reducing column ordering q (see parameter s) computes L, U and pinv so\n * L * U = A(p, q), where p is the inverse of pinv.\n *\n * @param {Matrix} m The A Matrix to factorize\n * @param {Object} s The symbolic analysis from csSqr(). Provides the fill-reducing\n * column ordering q\n * @param {Number} tol Partial pivoting threshold (1 for partial pivoting)\n *\n * @return {Number} The numeric LU factorization of A or null\n *\n * Reference: http://faculty.cse.tamu.edu/davis/publications.html\n */\n\n return function csLu(m, s, tol) {\n // validate input\n if (!m) {\n return null;\n } // m arrays\n\n\n var size = m._size; // columns\n\n var n = size[1]; // symbolic analysis result\n\n var q;\n var lnz = 100;\n var unz = 100; // update symbolic analysis parameters\n\n if (s) {\n q = s.q;\n lnz = s.lnz || lnz;\n unz = s.unz || unz;\n } // L arrays\n\n\n var lvalues = []; // (lnz)\n\n var lindex = []; // (lnz)\n\n var lptr = []; // (n + 1)\n // L\n\n var L = new SparseMatrix({\n values: lvalues,\n index: lindex,\n ptr: lptr,\n size: [n, n]\n }); // U arrays\n\n var uvalues = []; // (unz)\n\n var uindex = []; // (unz)\n\n var uptr = []; // (n + 1)\n // U\n\n var U = new SparseMatrix({\n values: uvalues,\n index: uindex,\n ptr: uptr,\n size: [n, n]\n }); // inverse of permutation vector\n\n var pinv = []; // (n)\n // vars\n\n var i, p; // allocate arrays\n\n var x = []; // (n)\n\n var xi = []; // (2 * n)\n // initialize variables\n\n for (i = 0; i < n; i++) {\n // clear workspace\n x[i] = 0; // no rows pivotal yet\n\n pinv[i] = -1; // no cols of L yet\n\n lptr[i + 1] = 0;\n } // reset number of nonzero elements in L and U\n\n\n lnz = 0;\n unz = 0; // compute L(:,k) and U(:,k)\n\n for (var k = 0; k < n; k++) {\n // update ptr\n lptr[k] = lnz;\n uptr[k] = unz; // apply column permutations if needed\n\n var col = q ? q[k] : k; // solve triangular system, x = L\\A(:,col)\n\n var top = csSpsolve(L, m, col, xi, x, pinv, 1); // find pivot\n\n var ipiv = -1;\n var a = -1; // loop xi[] from top -> n\n\n for (p = top; p < n; p++) {\n // x[i] is nonzero\n i = xi[p]; // check row i is not yet pivotal\n\n if (pinv[i] < 0) {\n // absolute value of x[i]\n var xabs = abs(x[i]); // check absoulte value is greater than pivot value\n\n if (larger(xabs, a)) {\n // largest pivot candidate so far\n a = xabs;\n ipiv = i;\n }\n } else {\n // x(i) is the entry U(pinv[i],k)\n uindex[unz] = pinv[i];\n uvalues[unz++] = x[i];\n }\n } // validate we found a valid pivot\n\n\n if (ipiv === -1 || a <= 0) {\n return null;\n } // update actual pivot column, give preference to diagonal value\n\n\n if (pinv[col] < 0 && largerEq(abs(x[col]), multiply(a, tol))) {\n ipiv = col;\n } // the chosen pivot\n\n\n var pivot = x[ipiv]; // last entry in U(:,k) is U(k,k)\n\n uindex[unz] = k;\n uvalues[unz++] = pivot; // ipiv is the kth pivot row\n\n pinv[ipiv] = k; // first entry in L(:,k) is L(k,k) = 1\n\n lindex[lnz] = ipiv;\n lvalues[lnz++] = 1; // L(k+1:n,k) = x / pivot\n\n for (p = top; p < n; p++) {\n // row\n i = xi[p]; // check x(i) is an entry in L(:,k)\n\n if (pinv[i] < 0) {\n // save unpermuted row in L\n lindex[lnz] = i; // scale pivot column\n\n lvalues[lnz++] = divideScalar(x[i], pivot);\n } // x[0..n-1] = 0 for next k\n\n\n x[i] = 0;\n }\n } // update ptr\n\n\n lptr[n] = lnz;\n uptr[n] = unz; // fix row indices of L for final pinv\n\n for (p = 0; p < lnz; p++) {\n lindex[p] = pinv[lindex[p]];\n } // trim arrays\n\n\n lvalues.splice(lnz, lvalues.length - lnz);\n lindex.splice(lnz, lindex.length - lnz);\n uvalues.splice(unz, uvalues.length - unz);\n uindex.splice(unz, uindex.length - unz); // return LU factor\n\n return {\n L: L,\n U: U,\n pinv: pinv\n };\n };\n});","import { isInteger } from '../../../utils/number.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createCsSqr } from '../sparse/csSqr.js';\nimport { createCsLu } from '../sparse/csLu.js';\nvar name = 'slu';\nvar dependencies = ['typed', 'abs', 'add', 'multiply', 'transpose', 'divideScalar', 'subtract', 'larger', 'largerEq', 'SparseMatrix'];\nexport var createSlu = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n multiply,\n transpose,\n divideScalar,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n } = _ref;\n var csSqr = createCsSqr({\n add,\n multiply,\n transpose\n });\n var csLu = createCsLu({\n abs,\n divideScalar,\n multiply,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n });\n /**\n * Calculate the Sparse Matrix LU decomposition with full pivoting. Sparse Matrix `A` is decomposed in two matrices (`L`, `U`) and two permutation vectors (`pinv`, `q`) where\n *\n * `P * A * Q = L * U`\n *\n * Syntax:\n *\n * math.slu(A, order, threshold)\n *\n * Examples:\n *\n * const A = math.sparse([[4,3], [6, 3]])\n * math.slu(A, 1, 0.001)\n * // returns:\n * // {\n * // L: [[1, 0], [1.5, 1]]\n * // U: [[4, 3], [0, -1.5]]\n * // p: [0, 1]\n * // q: [0, 1]\n * // }\n *\n * See also:\n *\n * lup, lsolve, usolve, lusolve\n *\n * @param {SparseMatrix} A A two dimensional sparse matrix for which to get the LU decomposition.\n * @param {Number} order The Symbolic Ordering and Analysis order:\n * 0 - Natural ordering, no permutation vector q is returned\n * 1 - Matrix must be square, symbolic ordering and analisis is performed on M = A + A'\n * 2 - Symbolic ordering and analisis is performed on M = A' * A. Dense columns from A' are dropped, A recreated from A'.\n * This is appropriatefor LU factorization of unsymmetric matrices.\n * 3 - Symbolic ordering and analisis is performed on M = A' * A. This is best used for LU factorization is matrix M has no dense rows.\n * A dense row is a row with more than 10*sqr(columns) entries.\n * @param {Number} threshold Partial pivoting threshold (1 for partial pivoting)\n *\n * @return {Object} The lower triangular matrix, the upper triangular matrix and the permutation vectors.\n */\n\n return typed(name, {\n 'SparseMatrix, number, number': function SparseMatrixNumberNumber(a, order, threshold) {\n // verify order\n if (!isInteger(order) || order < 0 || order > 3) {\n throw new Error('Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]');\n } // verify threshold\n\n\n if (threshold < 0 || threshold > 1) {\n throw new Error('Partial pivoting threshold must be a number from 0 to 1');\n } // perform symbolic ordering and analysis\n\n\n var s = csSqr(order, a, false); // perform lu decomposition\n\n var f = csLu(a, s, threshold); // return decomposition\n\n return {\n L: f.L,\n U: f.U,\n p: f.pinv,\n q: s.q,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\np: ' + this.p.toString() + (this.q ? '\\nq: ' + this.q.toString() : '') + '\\n';\n }\n };\n }\n });\n});","/**\n * Permutes a vector; x = P'b. In MATLAB notation, x(p)=b.\n *\n * @param {Array} p The permutation vector of length n. null value denotes identity\n * @param {Array} b The input vector\n *\n * @return {Array} The output vector x = P'b\n */\nexport function csIpvec(p, b) {\n // vars\n var k;\n var n = b.length;\n var x = []; // check permutation vector was provided, p = null denotes identity\n\n if (p) {\n // loop vector\n for (k = 0; k < n; k++) {\n // apply permutation\n x[p[k]] = b[k];\n }\n } else {\n // loop vector\n for (k = 0; k < n; k++) {\n // x[i] = b[i]\n x[k] = b[k];\n }\n }\n\n return x;\n}","import { isArray, isMatrix } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nimport { csIpvec } from '../sparse/csIpvec.js';\nvar name = 'lusolve';\nvar dependencies = ['typed', 'matrix', 'lup', 'slu', 'usolve', 'lsolve', 'DenseMatrix'];\nexport var createLusolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n lup,\n slu,\n usolve,\n lsolve,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n /**\n * Solves the linear system `A * x = b` where `A` is an [n x n] matrix and `b` is a [n] column vector.\n *\n * Syntax:\n *\n * math.lusolve(A, b) // returns column vector with the solution to the linear system A * x = b\n * math.lusolve(lup, b) // returns column vector with the solution to the linear system A * x = b, lup = math.lup(A)\n *\n * Examples:\n *\n * const m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]]\n *\n * const x = math.lusolve(m, [-1, -1, -1, -1]) // x = [[-1], [-0.5], [-1/3], [-0.25]]\n *\n * const f = math.lup(m)\n * const x1 = math.lusolve(f, [-1, -1, -1, -1]) // x1 = [[-1], [-0.5], [-1/3], [-0.25]]\n * const x2 = math.lusolve(f, [1, 2, 1, -1]) // x2 = [[1], [1], [1/3], [-0.25]]\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = math.lusolve(a, b) // [[2], [5]]\n *\n * See also:\n *\n * lup, slu, lsolve, usolve\n *\n * @param {Matrix | Array | Object} A Invertible Matrix or the Matrix LU decomposition\n * @param {Matrix | Array} b Column Vector\n * @param {number} [order] The Symbolic Ordering and Analysis order, see slu for details. Matrix must be a SparseMatrix\n * @param {Number} [threshold] Partial pivoting threshold (1 for partial pivoting), see slu for details. Matrix must be a SparseMatrix.\n *\n * @return {DenseMatrix | Array} Column vector with the solution to the linear system A * x = b\n */\n\n return typed(name, {\n 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {\n a = matrix(a);\n var d = lup(a);\n\n var x = _lusolve(d.L, d.U, d.p, null, b);\n\n return x.valueOf();\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(a, b) {\n var d = lup(a);\n return _lusolve(d.L, d.U, d.p, null, b);\n },\n 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(a, b) {\n var d = lup(a);\n return _lusolve(d.L, d.U, d.p, null, b);\n },\n 'SparseMatrix, Array | Matrix, number, number': function SparseMatrixArrayMatrixNumberNumber(a, b, order, threshold) {\n var d = slu(a, order, threshold);\n return _lusolve(d.L, d.U, d.p, d.q, b);\n },\n 'Object, Array | Matrix': function ObjectArrayMatrix(d, b) {\n return _lusolve(d.L, d.U, d.p, d.q, b);\n }\n });\n\n function _toMatrix(a) {\n if (isMatrix(a)) {\n return a;\n }\n\n if (isArray(a)) {\n return matrix(a);\n }\n\n throw new TypeError('Invalid Matrix LU decomposition');\n }\n\n function _lusolve(l, u, p, q, b) {\n // verify decomposition\n l = _toMatrix(l);\n u = _toMatrix(u); // apply row permutations if needed (b is a DenseMatrix)\n\n if (p) {\n b = solveValidation(l, b, true);\n b._data = csIpvec(p, b._data);\n } // use forward substitution to resolve L * y = b\n\n\n var y = lsolve(l, b); // use backward substitution to resolve U * x = y\n\n var x = usolve(u, y); // apply column permutations if needed (x is a DenseMatrix)\n\n if (q) {\n x._data = csIpvec(q, x._data);\n }\n\n return x;\n }\n});","import { isHelp } from '../utils/is.js';\nimport { clone } from '../utils/object.js';\nimport { format } from '../utils/string.js';\nimport { factory } from '../utils/factory.js';\nvar name = 'Help';\nvar dependencies = ['parse'];\nexport var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse\n } = _ref;\n\n /**\n * Documentation object\n * @param {Object} doc Object containing properties:\n * {string} name\n * {string} category\n * {string} description\n * {string[]} syntax\n * {string[]} examples\n * {string[]} seealso\n * @constructor\n */\n function Help(doc) {\n if (!(this instanceof Help)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!doc) throw new Error('Argument \"doc\" missing');\n this.doc = doc;\n }\n /**\n * Attach type information\n */\n\n\n Help.prototype.type = 'Help';\n Help.prototype.isHelp = true;\n /**\n * Generate a string representation of the Help object\n * @return {string} Returns a string\n * @private\n */\n\n Help.prototype.toString = function () {\n var doc = this.doc || {};\n var desc = '\\n';\n\n if (doc.name) {\n desc += 'Name: ' + doc.name + '\\n\\n';\n }\n\n if (doc.category) {\n desc += 'Category: ' + doc.category + '\\n\\n';\n }\n\n if (doc.description) {\n desc += 'Description:\\n ' + doc.description + '\\n\\n';\n }\n\n if (doc.syntax) {\n desc += 'Syntax:\\n ' + doc.syntax.join('\\n ') + '\\n\\n';\n }\n\n if (doc.examples) {\n desc += 'Examples:\\n';\n var scope = {};\n\n for (var i = 0; i < doc.examples.length; i++) {\n var expr = doc.examples[i];\n desc += ' ' + expr + '\\n';\n var res = void 0;\n\n try {\n // note: res can be undefined when `expr` is an empty string\n res = parse(expr).compile().evaluate(scope);\n } catch (e) {\n res = e;\n }\n\n if (res !== undefined && !isHelp(res)) {\n desc += ' ' + format(res, {\n precision: 14\n }) + '\\n';\n }\n }\n\n desc += '\\n';\n }\n\n if (doc.seealso && doc.seealso.length) {\n desc += 'See also: ' + doc.seealso.join(', ') + '\\n';\n }\n\n return desc;\n };\n /**\n * Export the help object to JSON\n */\n\n\n Help.prototype.toJSON = function () {\n var obj = clone(this.doc);\n obj.mathjs = 'Help';\n return obj;\n };\n /**\n * Instantiate a Help object from a JSON object\n * @param {Object} json\n * @returns {Help} Returns a new Help object\n */\n\n\n Help.fromJSON = function (json) {\n var doc = {};\n Object.keys(json).filter(prop => prop !== 'mathjs').forEach(prop => {\n doc[prop] = json[prop];\n });\n return new Help(doc);\n };\n /**\n * Returns a string representation of the Help object\n */\n\n\n Help.prototype.valueOf = Help.prototype.toString;\n return Help;\n}, {\n isClass: true\n});","import { isChain } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Chain';\nvar dependencies = ['?on', 'math'];\nexport var createChainClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n math\n } = _ref;\n\n /**\n * @constructor Chain\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing chain.done(), which will return\n * the final value.\n *\n * The Chain has a number of special functions:\n * - done() Finalize the chained operation and return the\n * chain's value.\n * - valueOf() The same as done()\n * - toString() Returns a string representation of the chain's value.\n *\n * @param {*} [value]\n */\n function Chain(value) {\n if (!(this instanceof Chain)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (isChain(value)) {\n this.value = value.value;\n } else {\n this.value = value;\n }\n }\n /**\n * Attach type information\n */\n\n\n Chain.prototype.type = 'Chain';\n Chain.prototype.isChain = true;\n /**\n * Close the chain. Returns the final value.\n * Does the same as method valueOf()\n * @returns {*} value\n */\n\n Chain.prototype.done = function () {\n return this.value;\n };\n /**\n * Close the chain. Returns the final value.\n * Does the same as method done()\n * @returns {*} value\n */\n\n\n Chain.prototype.valueOf = function () {\n return this.value;\n };\n /**\n * Get a string representation of the value in the chain\n * @returns {string}\n */\n\n\n Chain.prototype.toString = function () {\n return format(this.value);\n };\n /**\n * Get a JSON representation of the chain\n * @returns {Object}\n */\n\n\n Chain.prototype.toJSON = function () {\n return {\n mathjs: 'Chain',\n value: this.value\n };\n };\n /**\n * Instantiate a Chain from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"Chain\", value: ...}`,\n * where mathjs is optional\n * @returns {Chain}\n */\n\n\n Chain.fromJSON = function (json) {\n return new Chain(json.value);\n };\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {Function} fn The function to be proxied\n * If fn is no function, it is silently ignored.\n * @private\n */\n\n\n function createProxy(name, fn) {\n if (typeof fn === 'function') {\n Chain.prototype[name] = chainify(fn);\n }\n }\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {function} resolver The function resolving with the\n * function to be proxied\n * @private\n */\n\n\n function createLazyProxy(name, resolver) {\n lazy(Chain.prototype, name, function outerResolver() {\n var fn = resolver();\n\n if (typeof fn === 'function') {\n return chainify(fn);\n }\n\n return undefined; // if not a function, ignore\n });\n }\n /**\n * Make a function chainable\n * @param {function} fn\n * @return {Function} chain function\n * @private\n */\n\n\n function chainify(fn) {\n return function () {\n var args = [this.value]; // `this` will be the context of a Chain instance\n\n for (var i = 0; i < arguments.length; i++) {\n args[i + 1] = arguments[i];\n }\n\n return new Chain(fn.apply(fn, args));\n };\n }\n /**\n * Create a proxy for a single method, or an object with multiple methods.\n * Example usage:\n *\n * Chain.createProxy('add', function add (x, y) {...})\n * Chain.createProxy({\n * add: function add (x, y) {...},\n * subtract: function subtract (x, y) {...}\n * }\n *\n * @param {string | Object} arg0 A name (string), or an object with\n * functions\n * @param {*} [arg1] A function, when arg0 is a name\n */\n\n\n Chain.createProxy = function (arg0, arg1) {\n if (typeof arg0 === 'string') {\n // createProxy(name, value)\n createProxy(arg0, arg1);\n } else {\n var _loop = function _loop(_name) {\n if (hasOwnProperty(arg0, _name) && excludedNames[_name] === undefined) {\n createLazyProxy(_name, () => arg0[_name]);\n }\n };\n\n // createProxy(values)\n for (var _name in arg0) {\n _loop(_name);\n }\n }\n };\n\n var excludedNames = {\n expression: true,\n docs: true,\n type: true,\n classes: true,\n json: true,\n error: true,\n isChain: true // conflicts with the property isChain of a Chain instance\n\n }; // create proxy for everything that is in math.js\n\n Chain.createProxy(math); // register on the import event, automatically add a proxy for every imported function.\n\n if (on) {\n on('import', function (name, resolver, path) {\n if (!path) {\n // an imported function (not a data type or something special)\n createLazyProxy(name, resolver);\n }\n });\n }\n\n return Chain;\n}, {\n isClass: true\n});","export var piDocs = {\n name: 'pi',\n category: 'Constants',\n syntax: ['pi'],\n description: 'The number pi is a mathematical constant that is the ratio of a circle\\'s circumference to its diameter, and is approximately equal to 3.14159',\n examples: ['pi', 'sin(pi/2)'],\n seealso: ['tau']\n};","export var eDocs = {\n name: 'e',\n category: 'Constants',\n syntax: ['e'],\n description: 'Euler\\'s number, the base of the natural logarithm. Approximately equal to 2.71828',\n examples: ['e', 'e ^ 2', 'exp(2)', 'log(e)'],\n seealso: ['exp']\n};","import { bignumberDocs } from './construction/bignumber.js';\nimport { typeOfDocs } from './function/utils/typeOf.js';\nimport { isZeroDocs } from './function/utils/isZero.js';\nimport { isPrimeDocs } from './function/utils/isPrime.js';\nimport { isPositiveDocs } from './function/utils/isPositive.js';\nimport { isNumericDocs } from './function/utils/isNumeric.js';\nimport { hasNumericValueDocs } from './function/utils/hasNumericValue.js';\nimport { isNegativeDocs } from './function/utils/isNegative.js';\nimport { isIntegerDocs } from './function/utils/isInteger.js';\nimport { isNaNDocs } from './function/utils/isNaN.js';\nimport { formatDocs } from './function/utils/format.js';\nimport { binDocs } from './function/utils/bin.js';\nimport { octDocs } from './function/utils/oct.js';\nimport { hexDocs } from './function/utils/hex.js';\nimport { cloneDocs } from './function/utils/clone.js';\nimport { toDocs } from './function/units/to.js';\nimport { tanhDocs } from './function/trigonometry/tanh.js';\nimport { tanDocs } from './function/trigonometry/tan.js';\nimport { sinhDocs } from './function/trigonometry/sinh.js';\nimport { sechDocs } from './function/trigonometry/sech.js';\nimport { secDocs } from './function/trigonometry/sec.js';\nimport { cschDocs } from './function/trigonometry/csch.js';\nimport { cscDocs } from './function/trigonometry/csc.js';\nimport { cothDocs } from './function/trigonometry/coth.js';\nimport { cotDocs } from './function/trigonometry/cot.js';\nimport { coshDocs } from './function/trigonometry/cosh.js';\nimport { cosDocs } from './function/trigonometry/cos.js';\nimport { atan2Docs } from './function/trigonometry/atan2.js';\nimport { atanhDocs } from './function/trigonometry/atanh.js';\nimport { atanDocs } from './function/trigonometry/atan.js';\nimport { asinhDocs } from './function/trigonometry/asinh.js';\nimport { asinDocs } from './function/trigonometry/asin.js';\nimport { asechDocs } from './function/trigonometry/asech.js';\nimport { asecDocs } from './function/trigonometry/asec.js';\nimport { acschDocs } from './function/trigonometry/acsch.js';\nimport { acscDocs } from './function/trigonometry/acsc.js';\nimport { acothDocs } from './function/trigonometry/acoth.js';\nimport { acotDocs } from './function/trigonometry/acot.js';\nimport { acoshDocs } from './function/trigonometry/acosh.js';\nimport { acosDocs } from './function/trigonometry/acos.js';\nimport { sumDocs } from './function/statistics/sum.js';\nimport { stdDocs } from './function/statistics/std.js';\nimport { quantileSeqDocs } from './function/statistics/quantileSeq.js';\nimport { prodDocs } from './function/statistics/prod.js';\nimport { modeDocs } from './function/statistics/mode.js';\nimport { minDocs } from './function/statistics/min.js';\nimport { medianDocs } from './function/statistics/median.js';\nimport { meanDocs } from './function/statistics/mean.js';\nimport { maxDocs } from './function/statistics/max.js';\nimport { madDocs } from './function/statistics/mad.js';\nimport { erfDocs } from './function/special/erf.js';\nimport { setUnionDocs } from './function/set/setUnion.js';\nimport { setSymDifferenceDocs } from './function/set/setSymDifference.js';\nimport { setSizeDocs } from './function/set/setSize.js';\nimport { setPowersetDocs } from './function/set/setPowerset.js';\nimport { setMultiplicityDocs } from './function/set/setMultiplicity.js';\nimport { setIsSubsetDocs } from './function/set/setIsSubset.js';\nimport { setIntersectDocs } from './function/set/setIntersect.js';\nimport { setDistinctDocs } from './function/set/setDistinct.js';\nimport { setDifferenceDocs } from './function/set/setDifference.js';\nimport { setCartesianDocs } from './function/set/setCartesian.js';\nimport { unequalDocs } from './function/relational/unequal.js';\nimport { smallerEqDocs } from './function/relational/smallerEq.js';\nimport { smallerDocs } from './function/relational/smaller.js';\nimport { largerEqDocs } from './function/relational/largerEq.js';\nimport { largerDocs } from './function/relational/larger.js';\nimport { equalTextDocs } from './function/relational/equalText.js';\nimport { equalDocs } from './function/relational/equal.js';\nimport { deepEqualDocs } from './function/relational/deepEqual.js';\nimport { compareTextDocs } from './function/relational/compareText.js';\nimport { compareNaturalDocs } from './function/relational/compareNatural.js';\nimport { compareDocs } from './function/relational/compare.js';\nimport { randomIntDocs } from './function/probability/randomInt.js';\nimport { randomDocs } from './function/probability/random.js';\nimport { pickRandomDocs } from './function/probability/pickRandom.js';\nimport { permutationsDocs } from './function/probability/permutations.js';\nimport { multinomialDocs } from './function/probability/multinomial.js';\nimport { kldivergenceDocs } from './function/probability/kldivergence.js';\nimport { gammaDocs } from './function/probability/gamma.js';\nimport { factorialDocs } from './function/probability/factorial.js';\nimport { combinationsDocs } from './function/probability/combinations.js';\nimport { combinationsWithRepDocs } from './function/probability/combinationsWithRep.js';\nimport { zerosDocs } from './function/matrix/zeros.js';\nimport { transposeDocs } from './function/matrix/transpose.js';\nimport { traceDocs } from './function/matrix/trace.js';\nimport { subsetDocs } from './function/matrix/subset.js';\nimport { squeezeDocs } from './function/matrix/squeeze.js';\nimport { sortDocs } from './function/matrix/sort.js';\nimport { sizeDocs } from './function/matrix/size.js';\nimport { diffDocs } from './function/matrix/diff.js';\nimport { reshapeDocs } from './function/matrix/reshape.js';\nimport { resizeDocs } from './function/matrix/resize.js';\nimport { rangeDocs } from './function/matrix/range.js';\nimport { partitionSelectDocs } from './function/matrix/partitionSelect.js';\nimport { onesDocs } from './function/matrix/ones.js';\nimport { mapDocs } from './function/matrix/map.js';\nimport { kronDocs } from './function/matrix/kron.js';\nimport { invDocs } from './function/matrix/inv.js';\nimport { forEachDocs } from './function/matrix/forEach.js';\nimport { flattenDocs } from './function/matrix/flatten.js';\nimport { filterDocs } from './function/matrix/filter.js';\nimport { identityDocs } from './function/matrix/identity.js';\nimport { getMatrixDataTypeDocs } from './function/matrix/getMatrixDataType.js';\nimport { dotDocs } from './function/matrix/dot.js';\nimport { diagDocs } from './function/matrix/diag.js';\nimport { detDocs } from './function/matrix/det.js';\nimport { ctransposeDocs } from './function/matrix/ctranspose.js';\nimport { crossDocs } from './function/matrix/cross.js';\nimport { concatDocs } from './function/matrix/concat.js';\nimport { countDocs } from './function/matrix/count.js';\nimport { xorDocs } from './function/logical/xor.js';\nimport { orDocs } from './function/logical/or.js';\nimport { notDocs } from './function/logical/not.js';\nimport { andDocs } from './function/logical/and.js';\nimport { intersectDocs } from './function/geometry/intersect.js';\nimport { distanceDocs } from './function/geometry/distance.js';\nimport { helpDocs } from './function/expression/help.js';\nimport { evaluateDocs } from './function/expression/evaluate.js';\nimport { imDocs } from './function/complex/im.js';\nimport { reDocs } from './function/complex/re.js';\nimport { conjDocs } from './function/complex/conj.js';\nimport { argDocs } from './function/complex/arg.js';\nimport { typedDocs } from './core/typed.js';\nimport { importDocs } from './core/import.js';\nimport { configDocs } from './core/config.js';\nimport { stirlingS2Docs } from './function/combinatorics/stirlingS2.js';\nimport { compositionDocs } from './function/combinatorics/composition.js';\nimport { catalanDocs } from './function/combinatorics/catalan.js';\nimport { bellNumbersDocs } from './function/combinatorics/bellNumbers.js';\nimport { rightLogShiftDocs } from './function/bitwise/rightLogShift.js';\nimport { rightArithShiftDocs } from './function/bitwise/rightArithShift.js';\nimport { leftShiftDocs } from './function/bitwise/leftShift.js';\nimport { bitXorDocs } from './function/bitwise/bitXor.js';\nimport { bitOrDocs } from './function/bitwise/bitOr.js';\nimport { bitNotDocs } from './function/bitwise/bitNot.js';\nimport { bitAndDocs } from './function/bitwise/bitAnd.js';\nimport { xgcdDocs } from './function/arithmetic/xgcd.js';\nimport { unaryPlusDocs } from './function/arithmetic/unaryPlus.js';\nimport { unaryMinusDocs } from './function/arithmetic/unaryMinus.js';\nimport { squareDocs } from './function/arithmetic/square.js';\nimport { sqrtmDocs } from './function/arithmetic/sqrtm.js';\nimport { sqrtDocs } from './function/arithmetic/sqrt.js';\nimport { signDocs } from './function/arithmetic/sign.js';\nimport { roundDocs } from './function/arithmetic/round.js';\nimport { powDocs } from './function/arithmetic/pow.js';\nimport { nthRootsDocs } from './function/arithmetic/nthRoots.js';\nimport { nthRootDocs } from './function/arithmetic/nthRoot.js';\nimport { normDocs } from './function/arithmetic/norm.js';\nimport { multiplyDocs } from './function/arithmetic/multiply.js';\nimport { modDocs } from './function/arithmetic/mod.js';\nimport { log10Docs } from './function/arithmetic/log10.js';\nimport { log1pDocs } from './function/arithmetic/log1p.js';\nimport { log2Docs } from './function/arithmetic/log2.js';\nimport { logDocs } from './function/arithmetic/log.js';\nimport { lcmDocs } from './function/arithmetic/lcm.js';\nimport { hypotDocs } from './function/arithmetic/hypot.js';\nimport { gcdDocs } from './function/arithmetic/gcd.js';\nimport { floorDocs } from './function/arithmetic/floor.js';\nimport { fixDocs } from './function/arithmetic/fix.js';\nimport { expm1Docs } from './function/arithmetic/expm1.js';\nimport { expmDocs } from './function/arithmetic/expm.js';\nimport { eigsDocs } from './function/matrix/eigs.js';\nimport { expDocs } from './function/arithmetic/exp.js';\nimport { dotMultiplyDocs } from './function/arithmetic/dotMultiply.js';\nimport { dotDivideDocs } from './function/arithmetic/dotDivide.js';\nimport { divideDocs } from './function/arithmetic/divide.js';\nimport { cubeDocs } from './function/arithmetic/cube.js';\nimport { ceilDocs } from './function/arithmetic/ceil.js';\nimport { cbrtDocs } from './function/arithmetic/cbrt.js';\nimport { addDocs } from './function/arithmetic/add.js';\nimport { absDocs } from './function/arithmetic/abs.js';\nimport { qrDocs } from './function/algebra/qr.js';\nimport { usolveDocs } from './function/algebra/usolve.js';\nimport { usolveAllDocs } from './function/algebra/usolveAll.js';\nimport { sluDocs } from './function/algebra/slu.js';\nimport { rationalizeDocs } from './function/algebra/rationalize.js';\nimport { simplifyDocs } from './function/algebra/simplify.js';\nimport { lupDocs } from './function/algebra/lup.js';\nimport { lsolveDocs } from './function/algebra/lsolve.js';\nimport { lsolveAllDocs } from './function/algebra/lsolveAll.js';\nimport { derivativeDocs } from './function/algebra/derivative.js';\nimport { versionDocs } from './constants/version.js';\nimport { trueDocs } from './constants/true.js';\nimport { tauDocs } from './constants/tau.js';\nimport { SQRT2Docs } from './constants/SQRT2.js';\nimport { SQRT12Docs } from './constants/SQRT1_2.js';\nimport { phiDocs } from './constants/phi.js';\nimport { piDocs } from './constants/pi.js';\nimport { nullDocs } from './constants/null.js';\nimport { NaNDocs } from './constants/NaN.js';\nimport { LOG10EDocs } from './constants/LOG10E.js';\nimport { LOG2EDocs } from './constants/LOG2E.js';\nimport { LN10Docs } from './constants/LN10.js';\nimport { LN2Docs } from './constants/LN2.js';\nimport { InfinityDocs } from './constants/Infinity.js';\nimport { iDocs } from './constants/i.js';\nimport { falseDocs } from './constants/false.js';\nimport { eDocs } from './constants/e.js';\nimport { unitDocs } from './construction/unit.js';\nimport { stringDocs } from './construction/string.js';\nimport { splitUnitDocs } from './construction/splitUnit.js';\nimport { sparseDocs } from './construction/sparse.js';\nimport { numberDocs } from './construction/number.js';\nimport { matrixDocs } from './construction/matrix.js';\nimport { matrixFromFunctionDocs } from './function/matrix/matrixFromFunction.js';\nimport { matrixFromRowsDocs } from './function/matrix/matrixFromRows.js';\nimport { matrixFromColumnsDocs } from './function/matrix/matrixFromColumns.js';\nimport { indexDocs } from './construction/index.js';\nimport { fractionDocs } from './construction/fraction.js';\nimport { createUnitDocs } from './construction/createUnit.js';\nimport { complexDocs } from './construction/complex.js';\nimport { booleanDocs } from './construction/boolean.js';\nimport { dotPowDocs } from './function/arithmetic/dotPow.js';\nimport { lusolveDocs } from './function/algebra/lusolve.js';\nimport { subtractDocs } from './function/arithmetic/subtract.js';\nimport { varianceDocs } from './function/statistics/variance.js';\nimport { sinDocs } from './function/trigonometry/sin.js';\nimport { numericDocs } from './function/utils/numeric.js';\nimport { columnDocs } from './function/matrix/column.js';\nimport { rowDocs } from './function/matrix/row.js';\nimport { rotationMatrixDocs } from './function/matrix/rotationMatrix.js';\nimport { rotateDocs } from './function/matrix/rotate.js';\nexport var embeddedDocs = {\n // construction functions\n bignumber: bignumberDocs,\n boolean: booleanDocs,\n complex: complexDocs,\n createUnit: createUnitDocs,\n fraction: fractionDocs,\n index: indexDocs,\n matrix: matrixDocs,\n number: numberDocs,\n sparse: sparseDocs,\n splitUnit: splitUnitDocs,\n string: stringDocs,\n unit: unitDocs,\n // constants\n e: eDocs,\n E: eDocs,\n false: falseDocs,\n i: iDocs,\n Infinity: InfinityDocs,\n LN2: LN2Docs,\n LN10: LN10Docs,\n LOG2E: LOG2EDocs,\n LOG10E: LOG10EDocs,\n NaN: NaNDocs,\n null: nullDocs,\n pi: piDocs,\n PI: piDocs,\n phi: phiDocs,\n SQRT1_2: SQRT12Docs,\n SQRT2: SQRT2Docs,\n tau: tauDocs,\n true: trueDocs,\n version: versionDocs,\n // physical constants\n // TODO: more detailed docs for physical constants\n speedOfLight: {\n description: 'Speed of light in vacuum',\n examples: ['speedOfLight']\n },\n gravitationConstant: {\n description: 'Newtonian constant of gravitation',\n examples: ['gravitationConstant']\n },\n planckConstant: {\n description: 'Planck constant',\n examples: ['planckConstant']\n },\n reducedPlanckConstant: {\n description: 'Reduced Planck constant',\n examples: ['reducedPlanckConstant']\n },\n magneticConstant: {\n description: 'Magnetic constant (vacuum permeability)',\n examples: ['magneticConstant']\n },\n electricConstant: {\n description: 'Electric constant (vacuum permeability)',\n examples: ['electricConstant']\n },\n vacuumImpedance: {\n description: 'Characteristic impedance of vacuum',\n examples: ['vacuumImpedance']\n },\n coulomb: {\n description: 'Coulomb\\'s constant',\n examples: ['coulomb']\n },\n elementaryCharge: {\n description: 'Elementary charge',\n examples: ['elementaryCharge']\n },\n bohrMagneton: {\n description: 'Borh magneton',\n examples: ['bohrMagneton']\n },\n conductanceQuantum: {\n description: 'Conductance quantum',\n examples: ['conductanceQuantum']\n },\n inverseConductanceQuantum: {\n description: 'Inverse conductance quantum',\n examples: ['inverseConductanceQuantum']\n },\n // josephson: {description: 'Josephson constant', examples: ['josephson']},\n magneticFluxQuantum: {\n description: 'Magnetic flux quantum',\n examples: ['magneticFluxQuantum']\n },\n nuclearMagneton: {\n description: 'Nuclear magneton',\n examples: ['nuclearMagneton']\n },\n klitzing: {\n description: 'Von Klitzing constant',\n examples: ['klitzing']\n },\n bohrRadius: {\n description: 'Borh radius',\n examples: ['bohrRadius']\n },\n classicalElectronRadius: {\n description: 'Classical electron radius',\n examples: ['classicalElectronRadius']\n },\n electronMass: {\n description: 'Electron mass',\n examples: ['electronMass']\n },\n fermiCoupling: {\n description: 'Fermi coupling constant',\n examples: ['fermiCoupling']\n },\n fineStructure: {\n description: 'Fine-structure constant',\n examples: ['fineStructure']\n },\n hartreeEnergy: {\n description: 'Hartree energy',\n examples: ['hartreeEnergy']\n },\n protonMass: {\n description: 'Proton mass',\n examples: ['protonMass']\n },\n deuteronMass: {\n description: 'Deuteron Mass',\n examples: ['deuteronMass']\n },\n neutronMass: {\n description: 'Neutron mass',\n examples: ['neutronMass']\n },\n quantumOfCirculation: {\n description: 'Quantum of circulation',\n examples: ['quantumOfCirculation']\n },\n rydberg: {\n description: 'Rydberg constant',\n examples: ['rydberg']\n },\n thomsonCrossSection: {\n description: 'Thomson cross section',\n examples: ['thomsonCrossSection']\n },\n weakMixingAngle: {\n description: 'Weak mixing angle',\n examples: ['weakMixingAngle']\n },\n efimovFactor: {\n description: 'Efimov factor',\n examples: ['efimovFactor']\n },\n atomicMass: {\n description: 'Atomic mass constant',\n examples: ['atomicMass']\n },\n avogadro: {\n description: 'Avogadro\\'s number',\n examples: ['avogadro']\n },\n boltzmann: {\n description: 'Boltzmann constant',\n examples: ['boltzmann']\n },\n faraday: {\n description: 'Faraday constant',\n examples: ['faraday']\n },\n firstRadiation: {\n description: 'First radiation constant',\n examples: ['firstRadiation']\n },\n loschmidt: {\n description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa',\n examples: ['loschmidt']\n },\n gasConstant: {\n description: 'Gas constant',\n examples: ['gasConstant']\n },\n molarPlanckConstant: {\n description: 'Molar Planck constant',\n examples: ['molarPlanckConstant']\n },\n molarVolume: {\n description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa',\n examples: ['molarVolume']\n },\n sackurTetrode: {\n description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa',\n examples: ['sackurTetrode']\n },\n secondRadiation: {\n description: 'Second radiation constant',\n examples: ['secondRadiation']\n },\n stefanBoltzmann: {\n description: 'Stefan-Boltzmann constant',\n examples: ['stefanBoltzmann']\n },\n wienDisplacement: {\n description: 'Wien displacement law constant',\n examples: ['wienDisplacement']\n },\n // spectralRadiance: {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']},\n molarMass: {\n description: 'Molar mass constant',\n examples: ['molarMass']\n },\n molarMassC12: {\n description: 'Molar mass constant of carbon-12',\n examples: ['molarMassC12']\n },\n gravity: {\n description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)',\n examples: ['gravity']\n },\n planckLength: {\n description: 'Planck length',\n examples: ['planckLength']\n },\n planckMass: {\n description: 'Planck mass',\n examples: ['planckMass']\n },\n planckTime: {\n description: 'Planck time',\n examples: ['planckTime']\n },\n planckCharge: {\n description: 'Planck charge',\n examples: ['planckCharge']\n },\n planckTemperature: {\n description: 'Planck temperature',\n examples: ['planckTemperature']\n },\n // functions - algebra\n derivative: derivativeDocs,\n lsolve: lsolveDocs,\n lsolveAll: lsolveAllDocs,\n lup: lupDocs,\n lusolve: lusolveDocs,\n simplify: simplifyDocs,\n rationalize: rationalizeDocs,\n slu: sluDocs,\n usolve: usolveDocs,\n usolveAll: usolveAllDocs,\n qr: qrDocs,\n // functions - arithmetic\n abs: absDocs,\n add: addDocs,\n cbrt: cbrtDocs,\n ceil: ceilDocs,\n cube: cubeDocs,\n divide: divideDocs,\n dotDivide: dotDivideDocs,\n dotMultiply: dotMultiplyDocs,\n dotPow: dotPowDocs,\n exp: expDocs,\n expm: expmDocs,\n expm1: expm1Docs,\n fix: fixDocs,\n floor: floorDocs,\n gcd: gcdDocs,\n hypot: hypotDocs,\n lcm: lcmDocs,\n log: logDocs,\n log2: log2Docs,\n log1p: log1pDocs,\n log10: log10Docs,\n mod: modDocs,\n multiply: multiplyDocs,\n norm: normDocs,\n nthRoot: nthRootDocs,\n nthRoots: nthRootsDocs,\n pow: powDocs,\n round: roundDocs,\n sign: signDocs,\n sqrt: sqrtDocs,\n sqrtm: sqrtmDocs,\n square: squareDocs,\n subtract: subtractDocs,\n unaryMinus: unaryMinusDocs,\n unaryPlus: unaryPlusDocs,\n xgcd: xgcdDocs,\n // functions - bitwise\n bitAnd: bitAndDocs,\n bitNot: bitNotDocs,\n bitOr: bitOrDocs,\n bitXor: bitXorDocs,\n leftShift: leftShiftDocs,\n rightArithShift: rightArithShiftDocs,\n rightLogShift: rightLogShiftDocs,\n // functions - combinatorics\n bellNumbers: bellNumbersDocs,\n catalan: catalanDocs,\n composition: compositionDocs,\n stirlingS2: stirlingS2Docs,\n // functions - core\n config: configDocs,\n import: importDocs,\n typed: typedDocs,\n // functions - complex\n arg: argDocs,\n conj: conjDocs,\n re: reDocs,\n im: imDocs,\n // functions - expression\n evaluate: evaluateDocs,\n help: helpDocs,\n // functions - geometry\n distance: distanceDocs,\n intersect: intersectDocs,\n // functions - logical\n and: andDocs,\n not: notDocs,\n or: orDocs,\n xor: xorDocs,\n // functions - matrix\n concat: concatDocs,\n count: countDocs,\n cross: crossDocs,\n column: columnDocs,\n ctranspose: ctransposeDocs,\n det: detDocs,\n diag: diagDocs,\n diff: diffDocs,\n dot: dotDocs,\n getMatrixDataType: getMatrixDataTypeDocs,\n identity: identityDocs,\n filter: filterDocs,\n flatten: flattenDocs,\n forEach: forEachDocs,\n inv: invDocs,\n eigs: eigsDocs,\n kron: kronDocs,\n matrixFromFunction: matrixFromFunctionDocs,\n matrixFromRows: matrixFromRowsDocs,\n matrixFromColumns: matrixFromColumnsDocs,\n map: mapDocs,\n ones: onesDocs,\n partitionSelect: partitionSelectDocs,\n range: rangeDocs,\n resize: resizeDocs,\n reshape: reshapeDocs,\n rotate: rotateDocs,\n rotationMatrix: rotationMatrixDocs,\n row: rowDocs,\n size: sizeDocs,\n sort: sortDocs,\n squeeze: squeezeDocs,\n subset: subsetDocs,\n trace: traceDocs,\n transpose: transposeDocs,\n zeros: zerosDocs,\n // functions - probability\n combinations: combinationsDocs,\n combinationsWithRep: combinationsWithRepDocs,\n // distribution: distributionDocs,\n factorial: factorialDocs,\n gamma: gammaDocs,\n kldivergence: kldivergenceDocs,\n multinomial: multinomialDocs,\n permutations: permutationsDocs,\n pickRandom: pickRandomDocs,\n random: randomDocs,\n randomInt: randomIntDocs,\n // functions - relational\n compare: compareDocs,\n compareNatural: compareNaturalDocs,\n compareText: compareTextDocs,\n deepEqual: deepEqualDocs,\n equal: equalDocs,\n equalText: equalTextDocs,\n larger: largerDocs,\n largerEq: largerEqDocs,\n smaller: smallerDocs,\n smallerEq: smallerEqDocs,\n unequal: unequalDocs,\n // functions - set\n setCartesian: setCartesianDocs,\n setDifference: setDifferenceDocs,\n setDistinct: setDistinctDocs,\n setIntersect: setIntersectDocs,\n setIsSubset: setIsSubsetDocs,\n setMultiplicity: setMultiplicityDocs,\n setPowerset: setPowersetDocs,\n setSize: setSizeDocs,\n setSymDifference: setSymDifferenceDocs,\n setUnion: setUnionDocs,\n // functions - special\n erf: erfDocs,\n // functions - statistics\n mad: madDocs,\n max: maxDocs,\n mean: meanDocs,\n median: medianDocs,\n min: minDocs,\n mode: modeDocs,\n prod: prodDocs,\n quantileSeq: quantileSeqDocs,\n std: stdDocs,\n sum: sumDocs,\n variance: varianceDocs,\n // functions - trigonometry\n acos: acosDocs,\n acosh: acoshDocs,\n acot: acotDocs,\n acoth: acothDocs,\n acsc: acscDocs,\n acsch: acschDocs,\n asec: asecDocs,\n asech: asechDocs,\n asin: asinDocs,\n asinh: asinhDocs,\n atan: atanDocs,\n atanh: atanhDocs,\n atan2: atan2Docs,\n cos: cosDocs,\n cosh: coshDocs,\n cot: cotDocs,\n coth: cothDocs,\n csc: cscDocs,\n csch: cschDocs,\n sec: secDocs,\n sech: sechDocs,\n sin: sinDocs,\n sinh: sinhDocs,\n tan: tanDocs,\n tanh: tanhDocs,\n // functions - units\n to: toDocs,\n // functions - utils\n clone: cloneDocs,\n format: formatDocs,\n bin: binDocs,\n oct: octDocs,\n hex: hexDocs,\n isNaN: isNaNDocs,\n isInteger: isIntegerDocs,\n isNegative: isNegativeDocs,\n isNumeric: isNumericDocs,\n hasNumericValue: hasNumericValueDocs,\n isPositive: isPositiveDocs,\n isPrime: isPrimeDocs,\n isZero: isZeroDocs,\n // print: printDocs // TODO: add documentation for print as soon as the parser supports objects.\n typeOf: typeOfDocs,\n numeric: numericDocs\n};","export var bignumberDocs = {\n name: 'bignumber',\n category: 'Construction',\n syntax: ['bignumber(x)'],\n description: 'Create a big number from a number or string.',\n examples: ['0.1 + 0.2', 'bignumber(0.1) + bignumber(0.2)', 'bignumber(\"7.2\")', 'bignumber(\"7.2e500\")', 'bignumber([0.1, 0.2, 0.3])'],\n seealso: ['boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};","export var booleanDocs = {\n name: 'boolean',\n category: 'Construction',\n syntax: ['x', 'boolean(x)'],\n description: 'Convert a string or number into a boolean.',\n examples: ['boolean(0)', 'boolean(1)', 'boolean(3)', 'boolean(\"true\")', 'boolean(\"false\")', 'boolean([1, 0, 1, 1])'],\n seealso: ['bignumber', 'complex', 'index', 'matrix', 'number', 'string', 'unit']\n};","export var complexDocs = {\n name: 'complex',\n category: 'Construction',\n syntax: ['complex()', 'complex(re, im)', 'complex(string)'],\n description: 'Create a complex number.',\n examples: ['complex()', 'complex(2, 3)', 'complex(\"7 - 2i\")'],\n seealso: ['bignumber', 'boolean', 'index', 'matrix', 'number', 'string', 'unit']\n};","export var createUnitDocs = {\n name: 'createUnit',\n category: 'Construction',\n syntax: ['createUnit(definitions)', 'createUnit(name, definition)'],\n description: 'Create a user-defined unit and register it with the Unit type.',\n examples: ['createUnit(\"foo\")', 'createUnit(\"knot\", {definition: \"0.514444444 m/s\", aliases: [\"knots\", \"kt\", \"kts\"]})', 'createUnit(\"mph\", \"1 mile/hour\")'],\n seealso: ['unit', 'splitUnit']\n};","export var fractionDocs = {\n name: 'fraction',\n category: 'Construction',\n syntax: ['fraction(num)', 'fraction(num,den)'],\n description: 'Create a fraction from a number or from a numerator and denominator.',\n examples: ['fraction(0.125)', 'fraction(1, 3) + fraction(2, 5)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'string', 'unit']\n};","export var indexDocs = {\n name: 'index',\n category: 'Construction',\n syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],\n description: 'Create an index to get or replace a subset of a matrix',\n examples: ['[]', '[1, 2, 3]', 'A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[0:2, 0:2] = ones(2, 2)'],\n seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']\n};","export var matrixDocs = {\n name: 'matrix',\n category: 'Construction',\n syntax: ['[]', '[a1, b1, ...; a2, b2, ...]', 'matrix()', 'matrix(\"dense\")', 'matrix([...])'],\n description: 'Create a matrix.',\n examples: ['[]', '[1, 2, 3]', '[1, 2, 3; 4, 5, 6]', 'matrix()', 'matrix([3, 4])', 'matrix([3, 4; 5, 6], \"sparse\")', 'matrix([3, 4; 5, 6], \"sparse\", \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'sparse']\n};","export var numberDocs = {\n name: 'number',\n category: 'Construction',\n syntax: ['x', 'number(x)', 'number(unit, valuelessUnit)'],\n description: 'Create a number or convert a string or boolean into a number.',\n examples: ['2', '2e3', '4.05', 'number(2)', 'number(\"7.2\")', 'number(true)', 'number([true, false, true, true])', 'number(unit(\"52cm\"), \"m\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};","export var sparseDocs = {\n name: 'sparse',\n category: 'Construction',\n syntax: ['sparse()', 'sparse([a1, b1, ...; a1, b2, ...])', 'sparse([a1, b1, ...; a1, b2, ...], \"number\")'],\n description: 'Create a sparse matrix.',\n examples: ['sparse()', 'sparse([3, 4; 5, 6])', 'sparse([3, 0; 5, 0], \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'matrix']\n};","export var splitUnitDocs = {\n name: 'splitUnit',\n category: 'Construction',\n syntax: ['splitUnit(unit: Unit, parts: Unit[])'],\n description: 'Split a unit in an array of units whose sum is equal to the original unit.',\n examples: ['splitUnit(1 m, [\"feet\", \"inch\"])'],\n seealso: ['unit', 'createUnit']\n};","export var stringDocs = {\n name: 'string',\n category: 'Construction',\n syntax: ['\"text\"', 'string(x)'],\n description: 'Create a string or convert a value to a string',\n examples: ['\"Hello World!\"', 'string(4.2)', 'string(3 + 2i)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'unit']\n};","export var unitDocs = {\n name: 'unit',\n category: 'Construction',\n syntax: ['value unit', 'unit(value, unit)', 'unit(string)'],\n description: 'Create a unit.',\n examples: ['5.5 mm', '3 inch', 'unit(7.1, \"kilogram\")', 'unit(\"23 deg\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'string']\n};","export var falseDocs = {\n name: 'false',\n category: 'Constants',\n syntax: ['false'],\n description: 'Boolean value false',\n examples: ['false'],\n seealso: ['true']\n};","export var iDocs = {\n name: 'i',\n category: 'Constants',\n syntax: ['i'],\n description: 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.',\n examples: ['i', 'i * i', 'sqrt(-1)'],\n seealso: []\n};","export var InfinityDocs = {\n name: 'Infinity',\n category: 'Constants',\n syntax: ['Infinity'],\n description: 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.',\n examples: ['Infinity', '1 / 0'],\n seealso: []\n};","export var LN2Docs = {\n name: 'LN2',\n category: 'Constants',\n syntax: ['LN2'],\n description: 'Returns the natural logarithm of 2, approximately equal to 0.693',\n examples: ['LN2', 'log(2)'],\n seealso: []\n};","export var LN10Docs = {\n name: 'LN10',\n category: 'Constants',\n syntax: ['LN10'],\n description: 'Returns the natural logarithm of 10, approximately equal to 2.302',\n examples: ['LN10', 'log(10)'],\n seealso: []\n};","export var LOG2EDocs = {\n name: 'LOG2E',\n category: 'Constants',\n syntax: ['LOG2E'],\n description: 'Returns the base-2 logarithm of E, approximately equal to 1.442',\n examples: ['LOG2E', 'log(e, 2)'],\n seealso: []\n};","export var LOG10EDocs = {\n name: 'LOG10E',\n category: 'Constants',\n syntax: ['LOG10E'],\n description: 'Returns the base-10 logarithm of E, approximately equal to 0.434',\n examples: ['LOG10E', 'log(e, 10)'],\n seealso: []\n};","export var NaNDocs = {\n name: 'NaN',\n category: 'Constants',\n syntax: ['NaN'],\n description: 'Not a number',\n examples: ['NaN', '0 / 0'],\n seealso: []\n};","export var nullDocs = {\n name: 'null',\n category: 'Constants',\n syntax: ['null'],\n description: 'Value null',\n examples: ['null'],\n seealso: ['true', 'false']\n};","export var phiDocs = {\n name: 'phi',\n category: 'Constants',\n syntax: ['phi'],\n description: 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...',\n examples: ['phi'],\n seealso: []\n};","export var SQRT12Docs = {\n name: 'SQRT1_2',\n category: 'Constants',\n syntax: ['SQRT1_2'],\n description: 'Returns the square root of 1/2, approximately equal to 0.707',\n examples: ['SQRT1_2', 'sqrt(1/2)'],\n seealso: []\n};","export var SQRT2Docs = {\n name: 'SQRT2',\n category: 'Constants',\n syntax: ['SQRT2'],\n description: 'Returns the square root of 2, approximately equal to 1.414',\n examples: ['SQRT2', 'sqrt(2)'],\n seealso: []\n};","export var tauDocs = {\n name: 'tau',\n category: 'Constants',\n syntax: ['tau'],\n description: 'Tau is the ratio constant of a circle\\'s circumference to radius, equal to 2 * pi, approximately 6.2832.',\n examples: ['tau', '2 * pi'],\n seealso: ['pi']\n};","export var trueDocs = {\n name: 'true',\n category: 'Constants',\n syntax: ['true'],\n description: 'Boolean value true',\n examples: ['true'],\n seealso: ['false']\n};","export var versionDocs = {\n name: 'version',\n category: 'Constants',\n syntax: ['version'],\n description: 'A string with the version number of math.js',\n examples: ['version'],\n seealso: []\n};","export var derivativeDocs = {\n name: 'derivative',\n category: 'Algebra',\n syntax: ['derivative(expr, variable)', 'derivative(expr, variable, {simplify: boolean})'],\n description: 'Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.',\n examples: ['derivative(\"2x^3\", \"x\")', 'derivative(\"2x^3\", \"x\", {simplify: false})', 'derivative(\"2x^2 + 3x + 4\", \"x\")', 'derivative(\"sin(2x)\", \"x\")', 'f = parse(\"x^2 + x\")', 'x = parse(\"x\")', 'df = derivative(f, x)', 'df.evaluate({x: 3})'],\n seealso: ['simplify', 'parse', 'evaluate']\n};","export var lsolveDocs = {\n name: 'lsolve',\n category: 'Algebra',\n syntax: ['x=lsolve(L, b)'],\n description: 'Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolveAll', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};","export var lsolveAllDocs = {\n name: 'lsolveAll',\n category: 'Algebra',\n syntax: ['x=lsolveAll(L, b)'],\n description: 'Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolve', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};","export var lupDocs = {\n name: 'lup',\n category: 'Algebra',\n syntax: ['lup(m)'],\n description: 'Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U',\n examples: ['lup([[2, 1], [1, 4]])', 'lup(matrix([[2, 1], [1, 4]]))', 'lup(sparse([[2, 1], [1, 4]]))'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'slu', 'qr']\n};","export var lusolveDocs = {\n name: 'lusolve',\n category: 'Algebra',\n syntax: ['x=lusolve(A, b)', 'x=lusolve(lu, b)'],\n description: 'Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lusolve(a, b)'],\n seealso: ['lup', 'slu', 'lsolve', 'usolve', 'matrix', 'sparse']\n};","export var simplifyDocs = {\n name: 'simplify',\n category: 'Algebra',\n syntax: ['simplify(expr)', 'simplify(expr, rules)'],\n description: 'Simplify an expression tree.',\n examples: ['simplify(\"3 + 2 / 4\")', 'simplify(\"2x + x\")', 'f = parse(\"x * (x + 2 + x)\")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],\n seealso: ['derivative', 'parse', 'evaluate']\n};","export var rationalizeDocs = {\n name: 'rationalize',\n category: 'Algebra',\n syntax: ['rationalize(expr)', 'rationalize(expr, scope)', 'rationalize(expr, scope, detailed)'],\n description: 'Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.',\n examples: ['rationalize(\"2x/y - y/(x+1)\")', 'rationalize(\"2x/y - y/(x+1)\", true)'],\n seealso: ['simplify']\n};","export var sluDocs = {\n name: 'slu',\n category: 'Algebra',\n syntax: ['slu(A, order, threshold)'],\n description: 'Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U',\n examples: ['slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'lup', 'qr']\n};","export var usolveDocs = {\n name: 'usolve',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolveAll', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};","export var usolveAllDocs = {\n name: 'usolveAll',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolve', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};","export var qrDocs = {\n name: 'qr',\n category: 'Algebra',\n syntax: ['qr(A)'],\n description: 'Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.',\n examples: ['qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])'],\n seealso: ['lup', 'slu', 'matrix']\n};","export var absDocs = {\n name: 'abs',\n category: 'Arithmetic',\n syntax: ['abs(x)'],\n description: 'Compute the absolute value.',\n examples: ['abs(3.5)', 'abs(-4.2)'],\n seealso: ['sign']\n};","export var addDocs = {\n name: 'add',\n category: 'Operators',\n syntax: ['x + y', 'add(x, y)'],\n description: 'Add two values.',\n examples: ['a = 2.1 + 3.6', 'a - 3.6', '3 + 2i', '3 cm + 2 inch', '\"2.3\" + \"4\"'],\n seealso: ['subtract']\n};","export var cbrtDocs = {\n name: 'cbrt',\n category: 'Arithmetic',\n syntax: ['cbrt(x)', 'cbrt(x, allRoots)'],\n description: 'Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned',\n examples: ['cbrt(64)', 'cube(4)', 'cbrt(-8)', 'cbrt(2 + 3i)', 'cbrt(8i)', 'cbrt(8i, true)', 'cbrt(27 m^3)'],\n seealso: ['square', 'sqrt', 'cube', 'multiply']\n};","export var ceilDocs = {\n name: 'ceil',\n category: 'Arithmetic',\n syntax: ['ceil(x)'],\n description: 'Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.',\n examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)'],\n seealso: ['floor', 'fix', 'round']\n};","export var cubeDocs = {\n name: 'cube',\n category: 'Arithmetic',\n syntax: ['cube(x)'],\n description: 'Compute the cube of a value. The cube of x is x * x * x.',\n examples: ['cube(2)', '2^3', '2 * 2 * 2'],\n seealso: ['multiply', 'square', 'pow']\n};","export var divideDocs = {\n name: 'divide',\n category: 'Operators',\n syntax: ['x / y', 'divide(x, y)'],\n description: 'Divide two values.',\n examples: ['a = 2 / 3', 'a * 3', '4.5 / 2', '3 + 4 / 2', '(3 + 4) / 2', '18 km / 4.5'],\n seealso: ['multiply']\n};","export var dotDivideDocs = {\n name: 'dotDivide',\n category: 'Operators',\n syntax: ['x ./ y', 'dotDivide(x, y)'],\n description: 'Divide two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a ./ b'],\n seealso: ['multiply', 'dotMultiply', 'divide']\n};","export var dotMultiplyDocs = {\n name: 'dotMultiply',\n category: 'Operators',\n syntax: ['x .* y', 'dotMultiply(x, y)'],\n description: 'Multiply two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a .* b'],\n seealso: ['multiply', 'divide', 'dotDivide']\n};","export var dotPowDocs = {\n name: 'dotPow',\n category: 'Operators',\n syntax: ['x .^ y', 'dotPow(x, y)'],\n description: 'Calculates the power of x to y element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a .^ 2'],\n seealso: ['pow']\n};","export var expDocs = {\n name: 'exp',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Calculate the exponent of a value.',\n examples: ['exp(1.3)', 'e ^ 1.3', 'log(exp(1.3))', 'x = 2.4', '(exp(i*x) == cos(x) + i*sin(x)) # Euler\\'s formula'],\n seealso: ['expm', 'expm1', 'pow', 'log']\n};","export var expmDocs = {\n name: 'expm',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Compute the matrix exponential, expm(A) = e^A. ' + 'The matrix must be square. ' + 'Not to be confused with exp(a), which performs element-wise exponentiation.',\n examples: ['expm([[0,2],[0,0]])'],\n seealso: ['exp']\n};","export var expm1Docs = {\n name: 'expm1',\n category: 'Arithmetic',\n syntax: ['expm1(x)'],\n description: 'Calculate the value of subtracting 1 from the exponential value.',\n examples: ['expm1(2)', 'pow(e, 2) - 1', 'log(expm1(2) + 1)'],\n seealso: ['exp', 'pow', 'log']\n};","export var fixDocs = {\n name: 'fix',\n category: 'Arithmetic',\n syntax: ['fix(x)'],\n description: 'Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.',\n examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)'],\n seealso: ['ceil', 'floor', 'round']\n};","export var floorDocs = {\n name: 'floor',\n category: 'Arithmetic',\n syntax: ['floor(x)'],\n description: 'Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.',\n examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)'],\n seealso: ['ceil', 'fix', 'round']\n};","export var gcdDocs = {\n name: 'gcd',\n category: 'Arithmetic',\n syntax: ['gcd(a, b)', 'gcd(a, b, c, ...)'],\n description: 'Compute the greatest common divisor.',\n examples: ['gcd(8, 12)', 'gcd(-4, 6)', 'gcd(25, 15, -10)'],\n seealso: ['lcm', 'xgcd']\n};","export var hypotDocs = {\n name: 'hypot',\n category: 'Arithmetic',\n syntax: ['hypot(a, b, c, ...)', 'hypot([a, b, c, ...])'],\n description: 'Calculate the hypotenusa of a list with values. ',\n examples: ['hypot(3, 4)', 'sqrt(3^2 + 4^2)', 'hypot(-2)', 'hypot([3, 4, 5])'],\n seealso: ['abs', 'norm']\n};","export var lcmDocs = {\n name: 'lcm',\n category: 'Arithmetic',\n syntax: ['lcm(x, y)'],\n description: 'Compute the least common multiple.',\n examples: ['lcm(4, 6)', 'lcm(6, 21)', 'lcm(6, 21, 5)'],\n seealso: ['gcd']\n};","export var logDocs = {\n name: 'log',\n category: 'Arithmetic',\n syntax: ['log(x)', 'log(x, base)'],\n description: 'Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).',\n examples: ['log(3.5)', 'a = log(2.4)', 'exp(a)', '10 ^ 4', 'log(10000, 10)', 'log(10000) / log(10)', 'b = log(1024, 2)', '2 ^ b'],\n seealso: ['exp', 'log1p', 'log2', 'log10']\n};","export var log2Docs = {\n name: 'log2',\n category: 'Arithmetic',\n syntax: ['log2(x)'],\n description: 'Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.',\n examples: ['log2(0.03125)', 'log2(16)', 'log2(16) / log2(2)', 'pow(2, 4)'],\n seealso: ['exp', 'log1p', 'log', 'log10']\n};","export var log1pDocs = {\n name: 'log1p',\n category: 'Arithmetic',\n syntax: ['log1p(x)', 'log1p(x, base)'],\n description: 'Calculate the logarithm of a `value+1`',\n examples: ['log1p(2.5)', 'exp(log1p(1.4))', 'pow(10, 4)', 'log1p(9999, 10)', 'log1p(9999) / log(10)'],\n seealso: ['exp', 'log', 'log2', 'log10']\n};","export var log10Docs = {\n name: 'log10',\n category: 'Arithmetic',\n syntax: ['log10(x)'],\n description: 'Compute the 10-base logarithm of a value.',\n examples: ['log10(0.00001)', 'log10(10000)', '10 ^ 4', 'log(10000) / log(10)', 'log(10000, 10)'],\n seealso: ['exp', 'log']\n};","export var modDocs = {\n name: 'mod',\n category: 'Operators',\n syntax: ['x % y', 'x mod y', 'mod(x, y)'],\n description: 'Calculates the modulus, the remainder of an integer division.',\n examples: ['7 % 3', '11 % 2', '10 mod 4', 'isOdd(x) = x % 2', 'isOdd(2)', 'isOdd(3)'],\n seealso: ['divide']\n};","export var multiplyDocs = {\n name: 'multiply',\n category: 'Operators',\n syntax: ['x * y', 'multiply(x, y)'],\n description: 'multiply two values.',\n examples: ['a = 2.1 * 3.4', 'a / 3.4', '2 * 3 + 4', '2 * (3 + 4)', '3 * 2.1 km'],\n seealso: ['divide']\n};","export var normDocs = {\n name: 'norm',\n category: 'Arithmetic',\n syntax: ['norm(x)', 'norm(x, p)'],\n description: 'Calculate the norm of a number, vector or matrix.',\n examples: ['abs(-3.5)', 'norm(-3.5)', 'norm(3 - 4i)', 'norm([1, 2, -3], Infinity)', 'norm([1, 2, -3], -Infinity)', 'norm([3, 4], 2)', 'norm([[1, 2], [3, 4]], 1)', 'norm([[1, 2], [3, 4]], \"inf\")', 'norm([[1, 2], [3, 4]], \"fro\")']\n};","export var nthRootDocs = {\n name: 'nthRoot',\n category: 'Arithmetic',\n syntax: ['nthRoot(a)', 'nthRoot(a, root)'],\n description: 'Calculate the nth root of a value. ' + 'The principal nth root of a positive real number A, ' + 'is the positive real solution of the equation \"x^root = A\".',\n examples: ['4 ^ 3', 'nthRoot(64, 3)', 'nthRoot(9, 2)', 'sqrt(9)'],\n seealso: ['nthRoots', 'pow', 'sqrt']\n};","export var nthRootsDocs = {\n name: 'nthRoots',\n category: 'Arithmetic',\n syntax: ['nthRoots(A)', 'nthRoots(A, root)'],\n description: '' + 'Calculate the nth roots of a value. ' + 'An nth root of a positive real number A, ' + 'is a positive real solution of the equation \"x^root = A\". ' + 'This function returns an array of complex values.',\n examples: ['nthRoots(1)', 'nthRoots(1, 3)'],\n seealso: ['sqrt', 'pow', 'nthRoot']\n};","export var powDocs = {\n name: 'pow',\n category: 'Operators',\n syntax: ['x ^ y', 'pow(x, y)'],\n description: 'Calculates the power of x to y, x^y.',\n examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)'],\n seealso: ['multiply', 'nthRoot', 'nthRoots', 'sqrt']\n};","export var roundDocs = {\n name: 'round',\n category: 'Arithmetic',\n syntax: ['round(x)', 'round(x, n)'],\n description: 'round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.',\n examples: ['round(3.2)', 'round(3.8)', 'round(-4.2)', 'round(-4.8)', 'round(pi, 3)', 'round(123.45678, 2)'],\n seealso: ['ceil', 'floor', 'fix']\n};","export var signDocs = {\n name: 'sign',\n category: 'Arithmetic',\n syntax: ['sign(x)'],\n description: 'Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.',\n examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],\n seealso: ['abs']\n};","export var sqrtDocs = {\n name: 'sqrt',\n category: 'Arithmetic',\n syntax: ['sqrt(x)'],\n description: 'Compute the square root value. If x = y * y, then y is the square root of x.',\n examples: ['sqrt(25)', '5 * 5', 'sqrt(-1)'],\n seealso: ['square', 'sqrtm', 'multiply', 'nthRoot', 'nthRoots', 'pow']\n};","export var sqrtmDocs = {\n name: 'sqrtm',\n category: 'Arithmetic',\n syntax: ['sqrtm(x)'],\n description: 'Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.',\n examples: ['sqrtm([[1, 2], [3, 4]])'],\n seealso: ['sqrt', 'abs', 'square', 'multiply']\n};","export var squareDocs = {\n name: 'square',\n category: 'Arithmetic',\n syntax: ['square(x)'],\n description: 'Compute the square of a value. The square of x is x * x.',\n examples: ['square(3)', 'sqrt(9)', '3^2', '3 * 3'],\n seealso: ['multiply', 'pow', 'sqrt', 'cube']\n};","export var subtractDocs = {\n name: 'subtract',\n category: 'Operators',\n syntax: ['x - y', 'subtract(x, y)'],\n description: 'subtract two values.',\n examples: ['a = 5.3 - 2', 'a + 2', '2/3 - 1/6', '2 * 3 - 3', '2.1 km - 500m'],\n seealso: ['add']\n};","export var unaryMinusDocs = {\n name: 'unaryMinus',\n category: 'Operators',\n syntax: ['-x', 'unaryMinus(x)'],\n description: 'Inverse the sign of a value. Converts booleans and strings to numbers.',\n examples: ['-4.5', '-(-5.6)', '-\"22\"'],\n seealso: ['add', 'subtract', 'unaryPlus']\n};","export var unaryPlusDocs = {\n name: 'unaryPlus',\n category: 'Operators',\n syntax: ['+x', 'unaryPlus(x)'],\n description: 'Converts booleans and strings to numbers.',\n examples: ['+true', '+\"2\"'],\n seealso: ['add', 'subtract', 'unaryMinus']\n};","export var xgcdDocs = {\n name: 'xgcd',\n category: 'Arithmetic',\n syntax: ['xgcd(a, b)'],\n description: 'Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.',\n examples: ['xgcd(8, 12)', 'gcd(8, 12)', 'xgcd(36163, 21199)'],\n seealso: ['gcd', 'lcm']\n};","export var bitAndDocs = {\n name: 'bitAnd',\n category: 'Bitwise',\n syntax: ['x & y', 'bitAnd(x, y)'],\n description: 'Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0',\n examples: ['5 & 3', 'bitAnd(53, 131)', '[1, 12, 31] & 42'],\n seealso: ['bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitNotDocs = {\n name: 'bitNot',\n category: 'Bitwise',\n syntax: ['~x', 'bitNot(x)'],\n description: 'Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.',\n examples: ['~1', '~2', 'bitNot([2, -3, 4])'],\n seealso: ['bitAnd', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitOrDocs = {\n name: 'bitOr',\n category: 'Bitwise',\n syntax: ['x | y', 'bitOr(x, y)'],\n description: 'Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.',\n examples: ['5 | 3', 'bitOr([1, 2, 3], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitXorDocs = {\n name: 'bitXor',\n category: 'Bitwise',\n syntax: ['bitXor(x, y)'],\n description: 'Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.',\n examples: ['bitOr(1, 2)', 'bitXor([2, 3, 4], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var leftShiftDocs = {\n name: 'leftShift',\n category: 'Bitwise',\n syntax: ['x << y', 'leftShift(x, y)'],\n description: 'Bitwise left logical shift of a value x by y number of bits.',\n examples: ['4 << 1', '8 >> 1'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'rightArithShift', 'rightLogShift']\n};","export var rightArithShiftDocs = {\n name: 'rightArithShift',\n category: 'Bitwise',\n syntax: ['x >> y', 'rightArithShift(x, y)'],\n description: 'Bitwise right arithmetic shift of a value x by y number of bits.',\n examples: ['8 >> 1', '4 << 1', '-12 >> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightLogShift']\n};","export var rightLogShiftDocs = {\n name: 'rightLogShift',\n category: 'Bitwise',\n syntax: ['x >>> y', 'rightLogShift(x, y)'],\n description: 'Bitwise right logical shift of a value x by y number of bits.',\n examples: ['8 >>> 1', '4 << 1', '-12 >>> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift']\n};","export var bellNumbersDocs = {\n name: 'bellNumbers',\n category: 'Combinatorics',\n syntax: ['bellNumbers(n)'],\n description: 'The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['bellNumbers(3)', 'bellNumbers(8)'],\n seealso: ['stirlingS2']\n};","export var catalanDocs = {\n name: 'catalan',\n category: 'Combinatorics',\n syntax: ['catalan(n)'],\n description: 'The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['catalan(3)', 'catalan(8)'],\n seealso: ['bellNumbers']\n};","export var compositionDocs = {\n name: 'composition',\n category: 'Combinatorics',\n syntax: ['composition(n, k)'],\n description: 'The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.',\n examples: ['composition(5, 3)'],\n seealso: ['combinations']\n};","export var stirlingS2Docs = {\n name: 'stirlingS2',\n category: 'Combinatorics',\n syntax: ['stirlingS2(n, k)'],\n description: 'he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.',\n examples: ['stirlingS2(5, 3)'],\n seealso: ['bellNumbers']\n};","export var configDocs = {\n name: 'config',\n category: 'Core',\n syntax: ['config()', 'config(options)'],\n description: 'Get configuration or change configuration.',\n examples: ['config()', '1/3 + 1/4', 'config({number: \"Fraction\"})', '1/3 + 1/4'],\n seealso: []\n};","export var importDocs = {\n name: 'import',\n category: 'Core',\n syntax: ['import(functions)', 'import(functions, options)'],\n description: 'Import functions or constants from an object.',\n examples: ['import({myFn: f(x)=x^2, myConstant: 32 })', 'myFn(2)', 'myConstant'],\n seealso: []\n};","export var typedDocs = {\n name: 'typed',\n category: 'Core',\n syntax: ['typed(signatures)', 'typed(name, signatures)'],\n description: 'Create a typed function.',\n examples: ['double = typed({ \"number, number\": f(x)=x+x })', 'double(2)', 'double(\"hello\")'],\n seealso: []\n};","export var argDocs = {\n name: 'arg',\n category: 'Complex',\n syntax: ['arg(x)'],\n description: 'Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).',\n examples: ['arg(2 + 2i)', 'atan2(3, 2)', 'arg(2 + 3i)'],\n seealso: ['re', 'im', 'conj', 'abs']\n};","export var conjDocs = {\n name: 'conj',\n category: 'Complex',\n syntax: ['conj(x)'],\n description: 'Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.',\n examples: ['conj(2 + 3i)', 'conj(2 - 3i)', 'conj(-5.2i)'],\n seealso: ['re', 'im', 'abs', 'arg']\n};","export var reDocs = {\n name: 're',\n category: 'Complex',\n syntax: ['re(x)'],\n description: 'Get the real part of a complex number.',\n examples: ['re(2 + 3i)', 'im(2 + 3i)', 're(-5.2i)', 're(2.4)'],\n seealso: ['im', 'conj', 'abs', 'arg']\n};","export var imDocs = {\n name: 'im',\n category: 'Complex',\n syntax: ['im(x)'],\n description: 'Get the imaginary part of a complex number.',\n examples: ['im(2 + 3i)', 're(2 + 3i)', 'im(-5.2i)', 'im(2.4)'],\n seealso: ['re', 'conj', 'abs', 'arg']\n};","export var evaluateDocs = {\n name: 'evaluate',\n category: 'Expression',\n syntax: ['evaluate(expression)', 'evaluate([expr1, expr2, expr3, ...])'],\n description: 'Evaluate an expression or an array with expressions.',\n examples: ['evaluate(\"2 + 3\")', 'evaluate(\"sqrt(\" + 4 + \")\")'],\n seealso: []\n};","export var helpDocs = {\n name: 'help',\n category: 'Expression',\n syntax: ['help(object)', 'help(string)'],\n description: 'Display documentation on a function or data type.',\n examples: ['help(sqrt)', 'help(\"complex\")'],\n seealso: []\n};","export var distanceDocs = {\n name: 'distance',\n category: 'Geometry',\n syntax: ['distance([x1, y1], [x2, y2])', 'distance([[x1, y1], [x2, y2]])'],\n description: 'Calculates the Euclidean distance between two points.',\n examples: ['distance([0,0], [4,4])', 'distance([[0,0], [4,4]])'],\n seealso: []\n};","export var intersectDocs = {\n name: 'intersect',\n category: 'Geometry',\n syntax: ['intersect(expr1, expr2, expr3, expr4)', 'intersect(expr1, expr2, expr3)'],\n description: 'Computes the intersection point of lines and/or planes.',\n examples: ['intersect([0, 0], [10, 10], [10, 0], [0, 10])', 'intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])'],\n seealso: []\n};","export var andDocs = {\n name: 'and',\n category: 'Logical',\n syntax: ['x and y', 'and(x, y)'],\n description: 'Logical and. Test whether two values are both defined with a nonzero/nonempty value.',\n examples: ['true and false', 'true and true', '2 and 4'],\n seealso: ['not', 'or', 'xor']\n};","export var notDocs = {\n name: 'not',\n category: 'Logical',\n syntax: ['not x', 'not(x)'],\n description: 'Logical not. Flips the boolean value of given argument.',\n examples: ['not true', 'not false', 'not 2', 'not 0'],\n seealso: ['and', 'or', 'xor']\n};","export var orDocs = {\n name: 'or',\n category: 'Logical',\n syntax: ['x or y', 'or(x, y)'],\n description: 'Logical or. Test if at least one value is defined with a nonzero/nonempty value.',\n examples: ['true or false', 'false or false', '0 or 4'],\n seealso: ['not', 'and', 'xor']\n};","export var xorDocs = {\n name: 'xor',\n category: 'Logical',\n syntax: ['x xor y', 'xor(x, y)'],\n description: 'Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.',\n examples: ['true xor false', 'false xor false', 'true xor true', '0 xor 4'],\n seealso: ['not', 'and', 'or']\n};","export var concatDocs = {\n name: 'concat',\n category: 'Matrix',\n syntax: ['concat(A, B, C, ...)', 'concat(A, B, C, ..., dim)'],\n description: 'Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.',\n examples: ['A = [1, 2; 5, 6]', 'B = [3, 4; 7, 8]', 'concat(A, B)', 'concat(A, B, 1)', 'concat(A, B, 2)'],\n seealso: ['det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var countDocs = {\n name: 'count',\n category: 'Matrix',\n syntax: ['count(x)'],\n description: 'Count the number of elements of a matrix, array or string.',\n examples: ['a = [1, 2; 3, 4; 5, 6]', 'count(a)', 'size(a)', 'count(\"hello world\")'],\n seealso: ['size']\n};","export var crossDocs = {\n name: 'cross',\n category: 'Matrix',\n syntax: ['cross(A, B)'],\n description: 'Calculate the cross product for two vectors in three dimensional space.',\n examples: ['cross([1, 1, 0], [0, 1, 1])', 'cross([3, -3, 1], [4, 9, 2])', 'cross([2, 3, 4], [5, 6, 7])'],\n seealso: ['multiply', 'dot']\n};","export var columnDocs = {\n name: 'column',\n category: 'Matrix',\n syntax: ['column(x, index)'],\n description: 'Return a column from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],\n seealso: ['row', 'matrixFromColumns']\n};","export var ctransposeDocs = {\n name: 'ctranspose',\n category: 'Matrix',\n syntax: ['x\\'', 'ctranspose(x)'],\n description: 'Complex Conjugate and Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'ctranspose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};","export var detDocs = {\n name: 'det',\n category: 'Matrix',\n syntax: ['det(x)'],\n description: 'Calculate the determinant of a matrix',\n examples: ['det([1, 2; 3, 4])', 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])'],\n seealso: ['concat', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var diagDocs = {\n name: 'diag',\n category: 'Matrix',\n syntax: ['diag(x)', 'diag(x, k)'],\n description: 'Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.',\n examples: ['diag(1:3)', 'diag(1:3, 1)', 'a = [1, 2, 3; 4, 5, 6; 7, 8, 9]', 'diag(a)'],\n seealso: ['concat', 'det', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var diffDocs = {\n name: 'diff',\n category: 'Matrix',\n syntax: ['diff(arr)', 'diff(arr, dim)'],\n description: ['Create a new matrix or array with the difference of the passed matrix or array.', 'Dim parameter is optional and used to indicant the dimension of the array/matrix to apply the difference', 'If no dimension parameter is passed it is assumed as dimension 0', 'Dimension is zero-based in javascript and one-based in the parser', 'Arrays must be \\'rectangular\\' meaning arrays like [1, 2]', 'If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays'],\n examples: ['diff([1, 2, 4, 7, 0])', 'diff([1, 2, 4, 7, 0], 0)', 'diff(matrix([1, 2, 4, 7, 0]))', 'diff([[1, 2], [3, 4]])', 'diff([[1, 2], [3, 4]], 0)', 'diff([[1, 2], [3, 4]], 1)', 'diff([[1, 2], [3, 4]], bignumber(1))', 'diff(matrix([[1, 2], [3, 4]]), 1)', 'diff([[1, 2], matrix([3, 4])], 1)'],\n seealso: ['subtract', 'partitionSelect']\n};","export var dotDocs = {\n name: 'dot',\n category: 'Matrix',\n syntax: ['dot(A, B)', 'A * B'],\n description: 'Calculate the dot product of two vectors. ' + 'The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] ' + 'is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn',\n examples: ['dot([2, 4, 1], [2, 2, 3])', '[2, 4, 1] * [2, 2, 3]'],\n seealso: ['multiply', 'cross']\n};","export var getMatrixDataTypeDocs = {\n name: 'getMatrixDataType',\n category: 'Matrix',\n syntax: ['getMatrixDataType(x)'],\n description: 'Find the data type of all elements in a matrix or array, ' + 'for example \"number\" if all items are a number ' + 'and \"Complex\" if all values are complex numbers. ' + 'If a matrix contains more than one data type, it will return \"mixed\".',\n examples: ['getMatrixDataType([1, 2, 3])', 'getMatrixDataType([[5 cm], [2 inch]])', 'getMatrixDataType([1, \"text\"])', 'getMatrixDataType([1, bignumber(4)])'],\n seealso: ['matrix', 'sparse', 'typeOf']\n};","export var identityDocs = {\n name: 'identity',\n category: 'Matrix',\n syntax: ['identity(n)', 'identity(m, n)', 'identity([m, n])'],\n description: 'Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.',\n examples: ['identity(3)', 'identity(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'identity(size(a))'],\n seealso: ['concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var filterDocs = {\n name: 'filter',\n category: 'Matrix',\n syntax: ['filter(x, test)'],\n description: 'Filter items in a matrix.',\n examples: ['isPositive(x) = x > 0', 'filter([6, -2, -1, 4, 3], isPositive)', 'filter([6, -2, 0, 1, 0], x != 0)'],\n seealso: ['sort', 'map', 'forEach']\n};","export var flattenDocs = {\n name: 'flatten',\n category: 'Matrix',\n syntax: ['flatten(x)'],\n description: 'Flatten a multi dimensional matrix into a single dimensional matrix.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'size(a)', 'b = flatten(a)', 'size(b)'],\n seealso: ['concat', 'resize', 'size', 'squeeze']\n};","export var forEachDocs = {\n name: 'forEach',\n category: 'Matrix',\n syntax: ['forEach(x, callback)'],\n description: 'Iterates over all elements of a matrix/array, and executes the given callback function.',\n examples: ['forEach([1, 2, 3], function(val) { console.log(val) })'],\n seealso: ['map', 'sort', 'filter']\n};","export var invDocs = {\n name: 'inv',\n category: 'Matrix',\n syntax: ['inv(x)'],\n description: 'Calculate the inverse of a matrix',\n examples: ['inv([1, 2; 3, 4])', 'inv(4)', '1 / 4'],\n seealso: ['concat', 'det', 'diag', 'identity', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var eigsDocs = {\n name: 'eigs',\n category: 'Matrix',\n syntax: ['eigs(x)'],\n description: 'Calculate the eigenvalues and eigenvectors of a real symmetric matrix',\n examples: ['eigs([[5, 2.3], [2.3, 1]])'],\n seealso: ['inv']\n};","export var kronDocs = {\n name: 'kron',\n category: 'Matrix',\n syntax: ['kron(x, y)'],\n description: 'Calculates the kronecker product of 2 matrices or vectors.',\n examples: ['kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])', 'kron([1,1], [2,3,4])'],\n seealso: ['multiply', 'dot', 'cross']\n};","export var matrixFromFunctionDocs = {\n name: 'matrixFromFunction',\n category: 'Matrix',\n syntax: ['math.matrixFromFunction(size, fn)', 'math.matrixFromFunction(size, fn, format)', 'math.matrixFromFunction(size, fn, format, datatype)', 'math.matrixFromFunction(size, format, fn)', 'math.matrixFromFunction(size, format, datatype, fn)'],\n description: 'Create a matrix by evaluating a generating function at each index.',\n examples: ['f(I) = I[1] - I[2]', 'matrixFromFunction([3,3], f)', 'g(I) = I[1] - I[2] == 1 ? 4 : 0', 'matrixFromFunction([100, 100], \"sparse\", g)', 'matrixFromFunction([5], random)'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromColumns', 'zeros']\n};","export var matrixFromRowsDocs = {\n name: 'matrixFromRows',\n category: 'Matrix',\n syntax: ['math.matrixFromRows(...arr)', 'math.matrixFromRows(row1, row2)', 'math.matrixFromRows(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual rows.',\n examples: ['matrixFromRows([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromColumns', 'matrixFromFunction', 'zeros']\n};","export var matrixFromColumnsDocs = {\n name: 'matrixFromColumns',\n category: 'Matrix',\n syntax: ['math.matrixFromColumns(...arr)', 'math.matrixFromColumns(row1, row2)', 'math.matrixFromColumns(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual columns.',\n examples: ['matrixFromColumns([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromFunction', 'zeros']\n};","export var mapDocs = {\n name: 'map',\n category: 'Matrix',\n syntax: ['map(x, callback)'],\n description: 'Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.',\n examples: ['map([1, 2, 3], square)'],\n seealso: ['filter', 'forEach']\n};","export var onesDocs = {\n name: 'ones',\n category: 'Matrix',\n syntax: ['ones(m)', 'ones(m, n)', 'ones(m, n, p, ...)', 'ones([m])', 'ones([m, n])', 'ones([m, n, p, ...])'],\n description: 'Create a matrix containing ones.',\n examples: ['ones(3)', 'ones(3, 5)', 'ones([2,3]) * 4.5', 'a = [1, 2, 3; 4, 5, 6]', 'ones(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var partitionSelectDocs = {\n name: 'partitionSelect',\n category: 'Matrix',\n syntax: ['partitionSelect(x, k)', 'partitionSelect(x, k, compare)'],\n description: 'Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.',\n examples: ['partitionSelect([5, 10, 1], 2)', 'partitionSelect([\"C\", \"B\", \"A\", \"D\"], 1)'],\n seealso: ['sort']\n};","export var rangeDocs = {\n name: 'range',\n category: 'Type',\n syntax: ['start:end', 'start:step:end', 'range(start, end)', 'range(start, end, step)', 'range(string)'],\n description: 'Create a range. Lower bound of the range is included, upper bound is excluded.',\n examples: ['1:5', '3:-1:-3', 'range(3, 7)', 'range(0, 12, 2)', 'range(\"4:10\")', 'a = [1, 2, 3, 4; 5, 6, 7, 8]', 'a[1:2, 1:2]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var resizeDocs = {\n name: 'resize',\n category: 'Matrix',\n syntax: ['resize(x, size)', 'resize(x, size, defaultValue)'],\n description: 'Resize a matrix.',\n examples: ['resize([1,2,3,4,5], [3])', 'resize([1,2,3], [5])', 'resize([1,2,3], [5], -1)', 'resize(2, [2, 3])', 'resize(\"hello\", [8], \"!\")'],\n seealso: ['size', 'subset', 'squeeze', 'reshape']\n};","export var reshapeDocs = {\n name: 'reshape',\n category: 'Matrix',\n syntax: ['reshape(x, sizes)'],\n description: 'Reshape a multi dimensional array to fit the specified dimensions.',\n examples: ['reshape([1, 2, 3, 4, 5, 6], [2, 3])', 'reshape([[1, 2], [3, 4]], [1, 4])', 'reshape([[1, 2], [3, 4]], [4])'],\n seealso: ['size', 'squeeze', 'resize']\n};","export var rotateDocs = {\n name: 'rotate',\n category: 'Matrix',\n syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotate([1, 0], math.pi / 2)', 'rotate(matrix([1, 0]), unit(\"35deg\"))', 'rotate([1, 0, 0], unit(\"90deg\"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit(\"90deg\"), matrix([0, 0, 1]))'],\n seealso: ['matrix', 'rotationMatrix']\n};","export var rotationMatrixDocs = {\n name: 'rotationMatrix',\n category: 'Matrix',\n syntax: ['rotationMatrix(theta)', 'rotationMatrix(theta, v)', 'rotationMatrix(theta, v, format)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotationMatrix(pi / 2)', 'rotationMatrix(unit(\"45deg\"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), \"sparse\")'],\n seealso: ['cos', 'sin']\n};","export var rowDocs = {\n name: 'row',\n category: 'Matrix',\n syntax: ['row(x, index)'],\n description: 'Return a row from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],\n seealso: ['column', 'matrixFromRows']\n};","export var sizeDocs = {\n name: 'size',\n category: 'Matrix',\n syntax: ['size(x)'],\n description: 'Calculate the size of a matrix.',\n examples: ['size(2.3)', 'size(\"hello world\")', 'a = [1, 2; 3, 4; 5, 6]', 'size(a)', 'size(1:6)'],\n seealso: ['concat', 'count', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var sortDocs = {\n name: 'sort',\n category: 'Matrix',\n syntax: ['sort(x)', 'sort(x, compare)'],\n description: 'Sort the items in a matrix. Compare can be a string \"asc\", \"desc\", \"natural\", or a custom sort function.',\n examples: ['sort([5, 10, 1])', 'sort([\"C\", \"B\", \"A\", \"D\"])', 'sortByLength(a, b) = size(a)[1] - size(b)[1]', 'sort([\"Langdon\", \"Tom\", \"Sara\"], sortByLength)', 'sort([\"10\", \"1\", \"2\"], \"natural\")'],\n seealso: ['map', 'filter', 'forEach']\n};","export var squeezeDocs = {\n name: 'squeeze',\n category: 'Matrix',\n syntax: ['squeeze(x)'],\n description: 'Remove inner and outer singleton dimensions from a matrix.',\n examples: ['a = zeros(3,2,1)', 'size(squeeze(a))', 'b = zeros(1,1,3)', 'size(squeeze(b))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros']\n};","export var subsetDocs = {\n name: 'subset',\n category: 'Matrix',\n syntax: ['value(index)', 'value(index) = replacement', 'subset(value, [index])', 'subset(value, [index], replacement)'],\n description: 'Get or set a subset of a matrix or string. ' + 'Indexes are one-based. ' + 'Both the ranges lower-bound and upper-bound are included.',\n examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros']\n};","export var traceDocs = {\n name: 'trace',\n category: 'Matrix',\n syntax: ['trace(A)'],\n description: 'Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.',\n examples: ['A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', 'trace(A)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros']\n};","export var transposeDocs = {\n name: 'transpose',\n category: 'Matrix',\n syntax: ['x\\'', 'transpose(x)'],\n description: 'Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'transpose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};","export var zerosDocs = {\n name: 'zeros',\n category: 'Matrix',\n syntax: ['zeros(m)', 'zeros(m, n)', 'zeros(m, n, p, ...)', 'zeros([m])', 'zeros([m, n])', 'zeros([m, n, p, ...])'],\n description: 'Create a matrix containing zeros.',\n examples: ['zeros(3)', 'zeros(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'zeros(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose']\n};","export var combinationsDocs = {\n name: 'combinations',\n category: 'Probability',\n syntax: ['combinations(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time',\n examples: ['combinations(7, 5)'],\n seealso: ['combinationsWithRep', 'permutations', 'factorial']\n};","export var combinationsWithRepDocs = {\n name: 'combinationsWithRep',\n category: 'Probability',\n syntax: ['combinationsWithRep(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time with replacements.',\n examples: ['combinationsWithRep(7, 5)'],\n seealso: ['combinations', 'permutations', 'factorial']\n};","export var factorialDocs = {\n name: 'factorial',\n category: 'Probability',\n syntax: ['n!', 'factorial(n)'],\n description: 'Compute the factorial of a value',\n examples: ['5!', '5 * 4 * 3 * 2 * 1', '3!'],\n seealso: ['combinations', 'combinationsWithRep', 'permutations', 'gamma']\n};","export var gammaDocs = {\n name: 'gamma',\n category: 'Probability',\n syntax: ['gamma(n)'],\n description: 'Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.',\n examples: ['gamma(4)', '3!', 'gamma(1/2)', 'sqrt(pi)'],\n seealso: ['factorial']\n};","export var kldivergenceDocs = {\n name: 'kldivergence',\n category: 'Probability',\n syntax: ['kldivergence(x, y)'],\n description: 'Calculate the Kullback-Leibler (KL) divergence between two distributions.',\n examples: ['kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])'],\n seealso: []\n};","export var multinomialDocs = {\n name: 'multinomial',\n category: 'Probability',\n syntax: ['multinomial(A)'],\n description: 'Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.',\n examples: ['multinomial([1, 2, 1])'],\n seealso: ['combinations', 'factorial']\n};","export var permutationsDocs = {\n name: 'permutations',\n category: 'Probability',\n syntax: ['permutations(n)', 'permutations(n, k)'],\n description: 'Compute the number of permutations of n items taken k at a time',\n examples: ['permutations(5)', 'permutations(5, 3)'],\n seealso: ['combinations', 'combinationsWithRep', 'factorial']\n};","export var pickRandomDocs = {\n name: 'pickRandom',\n category: 'Probability',\n syntax: ['pickRandom(array)', 'pickRandom(array, number)', 'pickRandom(array, weights)', 'pickRandom(array, number, weights)', 'pickRandom(array, weights, number)'],\n description: 'Pick a random entry from a given array.',\n examples: ['pickRandom(0:10)', 'pickRandom([1, 3, 1, 6])', 'pickRandom([1, 3, 1, 6], 2)', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)'],\n seealso: ['random', 'randomInt']\n};","export var randomDocs = {\n name: 'random',\n category: 'Probability',\n syntax: ['random()', 'random(max)', 'random(min, max)', 'random(size)', 'random(size, max)', 'random(size, min, max)'],\n description: 'Return a random number.',\n examples: ['random()', 'random(10, 20)', 'random([2, 3])'],\n seealso: ['pickRandom', 'randomInt']\n};","export var randomIntDocs = {\n name: 'randomInt',\n category: 'Probability',\n syntax: ['randomInt(max)', 'randomInt(min, max)', 'randomInt(size)', 'randomInt(size, max)', 'randomInt(size, min, max)'],\n description: 'Return a random integer number',\n examples: ['randomInt(10, 20)', 'randomInt([2, 3], 10)'],\n seealso: ['pickRandom', 'random']\n};","export var compareDocs = {\n name: 'compare',\n category: 'Relational',\n syntax: ['compare(x, y)'],\n description: 'Compare two values. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compare(2, 3)', 'compare(3, 2)', 'compare(2, 2)', 'compare(5cm, 40mm)', 'compare(2, [1, 2, 3])'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compareNatural', 'compareText']\n};","export var compareNaturalDocs = {\n name: 'compareNatural',\n category: 'Relational',\n syntax: ['compareNatural(x, y)'],\n description: 'Compare two values of any type in a deterministic, natural way. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareNatural(2, 3)', 'compareNatural(3, 2)', 'compareNatural(2, 2)', 'compareNatural(5cm, 40mm)', 'compareNatural(\"2\", \"10\")', 'compareNatural(2 + 3i, 2 + 4i)', 'compareNatural([1, 2, 4], [1, 2, 3])', 'compareNatural([1, 5], [1, 2, 3])', 'compareNatural([1, 2], [1, 2])', 'compareNatural({a: 2}, {a: 4})'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare', 'compareText']\n};","export var compareTextDocs = {\n name: 'compareText',\n category: 'Relational',\n syntax: ['compareText(x, y)'],\n description: 'Compare two strings lexically. Comparison is case sensitive. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareText(\"B\", \"A\")', 'compareText(\"A\", \"B\")', 'compareText(\"A\", \"A\")', 'compareText(\"2\", \"10\")', 'compare(\"2\", \"10\")', 'compare(2, 10)', 'compareNatural(\"2\", \"10\")', 'compareText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural']\n};","export var deepEqualDocs = {\n name: 'deepEqual',\n category: 'Relational',\n syntax: ['deepEqual(x, y)'],\n description: 'Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.',\n examples: ['deepEqual([1,3,4], [1,3,4])', 'deepEqual([1,3,4], [1,3])'],\n seealso: ['equal', 'unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare']\n};","export var equalDocs = {\n name: 'equal',\n category: 'Relational',\n syntax: ['x == y', 'equal(x, y)'],\n description: 'Check equality of two values. Returns true if the values are equal, and false if not.',\n examples: ['2+2 == 3', '2+2 == 4', 'a = 3.2', 'b = 6-2.8', 'a == b', '50cm == 0.5m'],\n seealso: ['unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual', 'equalText']\n};","export var equalTextDocs = {\n name: 'equalText',\n category: 'Relational',\n syntax: ['equalText(x, y)'],\n description: 'Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.',\n examples: ['equalText(\"Hello\", \"Hello\")', 'equalText(\"a\", \"A\")', 'equal(\"2e3\", \"2000\")', 'equalText(\"2e3\", \"2000\")', 'equalText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural', 'compareText', 'equal']\n};","export var largerDocs = {\n name: 'larger',\n category: 'Relational',\n syntax: ['x > y', 'larger(x, y)'],\n description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not.',\n examples: ['2 > 3', '5 > 2*2', 'a = 3.3', 'b = 6-2.8', '(a > b)', '(b < a)', '5 cm > 2 inch'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare']\n};","export var largerEqDocs = {\n name: 'largerEq',\n category: 'Relational',\n syntax: ['x >= y', 'largerEq(x, y)'],\n description: 'Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.',\n examples: ['2 >= 1+1', '2 > 1+1', 'a = 3.2', 'b = 6-2.8', '(a >= b)'],\n seealso: ['equal', 'unequal', 'smallerEq', 'smaller', 'compare']\n};","export var smallerDocs = {\n name: 'smaller',\n category: 'Relational',\n syntax: ['x < y', 'smaller(x, y)'],\n description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 < 3', '5 < 2*2', 'a = 3.3', 'b = 6-2.8', '(a < b)', '5 cm < 2 inch'],\n seealso: ['equal', 'unequal', 'larger', 'smallerEq', 'largerEq', 'compare']\n};","export var smallerEqDocs = {\n name: 'smallerEq',\n category: 'Relational',\n syntax: ['x <= y', 'smallerEq(x, y)'],\n description: 'Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 <= 1+1', '2 < 1+1', 'a = 3.2', 'b = 6-2.8', '(a <= b)'],\n seealso: ['equal', 'unequal', 'larger', 'smaller', 'largerEq', 'compare']\n};","export var unequalDocs = {\n name: 'unequal',\n category: 'Relational',\n syntax: ['x != y', 'unequal(x, y)'],\n description: 'Check unequality of two values. Returns true if the values are unequal, and false if they are equal.',\n examples: ['2+2 != 3', '2+2 != 4', 'a = 3.2', 'b = 6-2.8', 'a != b', '50cm != 0.5m', '5 cm != 2 inch'],\n seealso: ['equal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual']\n};","export var setCartesianDocs = {\n name: 'setCartesian',\n category: 'Set',\n syntax: ['setCartesian(set1, set2)'],\n description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.',\n examples: ['setCartesian([1, 2], [3, 4])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']\n};","export var setDifferenceDocs = {\n name: 'setDifference',\n category: 'Set',\n syntax: ['setDifference(set1, set2)'],\n description: 'Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setSymDifference']\n};","export var setDistinctDocs = {\n name: 'setDistinct',\n category: 'Set',\n syntax: ['setDistinct(set)'],\n description: 'Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setDistinct([1, 1, 1, 2, 2, 3])'],\n seealso: ['setMultiplicity']\n};","export var setIntersectDocs = {\n name: 'setIntersect',\n category: 'Set',\n syntax: ['setIntersect(set1, set2)'],\n description: 'Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIntersect([1, 2, 3, 4], [3, 4, 5, 6])', 'setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setDifference']\n};","export var setIsSubsetDocs = {\n name: 'setIsSubset',\n category: 'Set',\n syntax: ['setIsSubset(set1, set2)'],\n description: 'Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIsSubset([1, 2], [3, 4, 5, 6])', 'setIsSubset([3, 4], [3, 4, 5, 6])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setMultiplicityDocs = {\n name: 'setMultiplicity',\n category: 'Set',\n syntax: ['setMultiplicity(element, set)'],\n description: 'Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setMultiplicity(1, [1, 2, 2, 4])', 'setMultiplicity(2, [1, 2, 2, 4])'],\n seealso: ['setDistinct', 'setSize']\n};","export var setPowersetDocs = {\n name: 'setPowerset',\n category: 'Set',\n syntax: ['setPowerset(set)'],\n description: 'Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setPowerset([1, 2, 3])'],\n seealso: ['setCartesian']\n};","export var setSizeDocs = {\n name: 'setSize',\n category: 'Set',\n syntax: ['setSize(set)', 'setSize(set, unique)'],\n description: 'Count the number of elements of a (multi)set. When the second parameter \"unique\" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setSize([1, 2, 2, 4])', 'setSize([1, 2, 2, 4], true)'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setSymDifferenceDocs = {\n name: 'setSymDifference',\n category: 'Set',\n syntax: ['setSymDifference(set1, set2)'],\n description: 'Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setUnionDocs = {\n name: 'setUnion',\n category: 'Set',\n syntax: ['setUnion(set1, set2)'],\n description: 'Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setUnion([1, 2, 3, 4], [3, 4, 5, 6])', 'setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setIntersect', 'setDifference']\n};","export var erfDocs = {\n name: 'erf',\n category: 'Special',\n syntax: ['erf(x)'],\n description: 'Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x',\n examples: ['erf(0.2)', 'erf(-0.5)', 'erf(4)'],\n seealso: []\n};","export var madDocs = {\n name: 'mad',\n category: 'Statistics',\n syntax: ['mad(a, b, c, ...)', 'mad(A)'],\n description: 'Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.',\n examples: ['mad(10, 20, 30)', 'mad([1, 2, 3])'],\n seealso: ['mean', 'median', 'std', 'abs']\n};","export var maxDocs = {\n name: 'max',\n category: 'Statistics',\n syntax: ['max(a, b, c, ...)', 'max(A)', 'max(A, dim)'],\n description: 'Compute the maximum value of a list of values.',\n examples: ['max(2, 3, 4, 1)', 'max([2, 3, 4, 1])', 'max([2, 5; 4, 3])', 'max([2, 5; 4, 3], 1)', 'max([2, 5; 4, 3], 2)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var meanDocs = {\n name: 'mean',\n category: 'Statistics',\n syntax: ['mean(a, b, c, ...)', 'mean(A)', 'mean(A, dim)'],\n description: 'Compute the arithmetic mean of a list of values.',\n examples: ['mean(2, 3, 4, 1)', 'mean([2, 3, 4, 1])', 'mean([2, 5; 4, 3])', 'mean([2, 5; 4, 3], 1)', 'mean([2, 5; 4, 3], 2)', 'mean([1.0, 2.7, 3.2, 4.0])'],\n seealso: ['max', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var medianDocs = {\n name: 'median',\n category: 'Statistics',\n syntax: ['median(a, b, c, ...)', 'median(A)'],\n description: 'Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.',\n examples: ['median(5, 2, 7)', 'median([3, -1, 5, 7])'],\n seealso: ['max', 'mean', 'min', 'prod', 'std', 'sum', 'variance', 'quantileSeq']\n};","export var minDocs = {\n name: 'min',\n category: 'Statistics',\n syntax: ['min(a, b, c, ...)', 'min(A)', 'min(A, dim)'],\n description: 'Compute the minimum value of a list of values.',\n examples: ['min(2, 3, 4, 1)', 'min([2, 3, 4, 1])', 'min([2, 5; 4, 3])', 'min([2, 5; 4, 3], 1)', 'min([2, 5; 4, 3], 2)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['max', 'mean', 'median', 'prod', 'std', 'sum', 'variance']\n};","export var modeDocs = {\n name: 'mode',\n category: 'Statistics',\n syntax: ['mode(a, b, c, ...)', 'mode(A)', 'mode(A, a, b, B, c, ...)'],\n description: 'Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.',\n examples: ['mode(2, 1, 4, 3, 1)', 'mode([1, 2.7, 3.2, 4, 2.7])', 'mode(1, 4, 6, 1, 6)'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'std', 'sum', 'variance']\n};","export var prodDocs = {\n name: 'prod',\n category: 'Statistics',\n syntax: ['prod(a, b, c, ...)', 'prod(A)'],\n description: 'Compute the product of all values.',\n examples: ['prod(2, 3, 4)', 'prod([2, 3, 4])', 'prod([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'std', 'sum', 'variance']\n};","export var quantileSeqDocs = {\n name: 'quantileSeq',\n category: 'Statistics',\n syntax: ['quantileSeq(A, prob[, sorted])', 'quantileSeq(A, [prob1, prob2, ...][, sorted])', 'quantileSeq(A, N[, sorted])'],\n description: 'Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \\n\\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.',\n examples: ['quantileSeq([3, -1, 5, 7], 0.5)', 'quantileSeq([3, -1, 5, 7], [1/3, 2/3])', 'quantileSeq([3, -1, 5, 7], 2)', 'quantileSeq([-1, 3, 5, 7], 0.5, true)'],\n seealso: ['mean', 'median', 'min', 'max', 'prod', 'std', 'sum', 'variance']\n};","export var stdDocs = {\n name: 'std',\n category: 'Statistics',\n syntax: ['std(a, b, c, ...)', 'std(A)', 'std(A, normalization)'],\n description: 'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['std(2, 4, 6)', 'std([2, 4, 6, 8])', 'std([2, 4, 6, 8], \"uncorrected\")', 'std([2, 4, 6, 8], \"biased\")', 'std([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'sum', 'variance']\n};","export var sumDocs = {\n name: 'sum',\n category: 'Statistics',\n syntax: ['sum(a, b, c, ...)', 'sum(A)'],\n description: 'Compute the sum of all values.',\n examples: ['sum(2, 3, 4, 1)', 'sum([2, 3, 4, 1])', 'sum([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var varianceDocs = {\n name: 'variance',\n category: 'Statistics',\n syntax: ['variance(a, b, c, ...)', 'variance(A)', 'variance(A, normalization)'],\n description: 'Compute the variance of all values. Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['variance(2, 4, 6)', 'variance([2, 4, 6, 8])', 'variance([2, 4, 6, 8], \"uncorrected\")', 'variance([2, 4, 6, 8], \"biased\")', 'variance([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};","export var acosDocs = {\n name: 'acos',\n category: 'Trigonometry',\n syntax: ['acos(x)'],\n description: 'Compute the inverse cosine of a value in radians.',\n examples: ['acos(0.5)', 'acos(cos(2.3))'],\n seealso: ['cos', 'atan', 'asin']\n};","export var acoshDocs = {\n name: 'acosh',\n category: 'Trigonometry',\n syntax: ['acosh(x)'],\n description: 'Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.',\n examples: ['acosh(1.5)'],\n seealso: ['cosh', 'asinh', 'atanh']\n};","export var acotDocs = {\n name: 'acot',\n category: 'Trigonometry',\n syntax: ['acot(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acot(0.5)', 'acot(cot(0.5))', 'acot(2)'],\n seealso: ['cot', 'atan']\n};","export var acothDocs = {\n name: 'acoth',\n category: 'Trigonometry',\n syntax: ['acoth(x)'],\n description: 'Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.',\n examples: ['acoth(2)', 'acoth(0.5)'],\n seealso: ['acsch', 'asech']\n};","export var acscDocs = {\n name: 'acsc',\n category: 'Trigonometry',\n syntax: ['acsc(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acsc(2)', 'acsc(csc(0.5))', 'acsc(0.5)'],\n seealso: ['csc', 'asin', 'asec']\n};","export var acschDocs = {\n name: 'acsch',\n category: 'Trigonometry',\n syntax: ['acsch(x)'],\n description: 'Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.',\n examples: ['acsch(0.5)'],\n seealso: ['asech', 'acoth']\n};","export var asecDocs = {\n name: 'asec',\n category: 'Trigonometry',\n syntax: ['asec(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asec(0.5)', 'asec(sec(0.5))', 'asec(2)'],\n seealso: ['acos', 'acot', 'acsc']\n};","export var asechDocs = {\n name: 'asech',\n category: 'Trigonometry',\n syntax: ['asech(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asech(0.5)'],\n seealso: ['acsch', 'acoth']\n};","export var asinDocs = {\n name: 'asin',\n category: 'Trigonometry',\n syntax: ['asin(x)'],\n description: 'Compute the inverse sine of a value in radians.',\n examples: ['asin(0.5)', 'asin(sin(0.5))'],\n seealso: ['sin', 'acos', 'atan']\n};","export var asinhDocs = {\n name: 'asinh',\n category: 'Trigonometry',\n syntax: ['asinh(x)'],\n description: 'Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.',\n examples: ['asinh(0.5)'],\n seealso: ['acosh', 'atanh']\n};","export var atanDocs = {\n name: 'atan',\n category: 'Trigonometry',\n syntax: ['atan(x)'],\n description: 'Compute the inverse tangent of a value in radians.',\n examples: ['atan(0.5)', 'atan(tan(0.5))'],\n seealso: ['tan', 'acos', 'asin']\n};","export var atanhDocs = {\n name: 'atanh',\n category: 'Trigonometry',\n syntax: ['atanh(x)'],\n description: 'Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.',\n examples: ['atanh(0.5)'],\n seealso: ['acosh', 'asinh']\n};","export var atan2Docs = {\n name: 'atan2',\n category: 'Trigonometry',\n syntax: ['atan2(y, x)'],\n description: 'Computes the principal value of the arc tangent of y/x in radians.',\n examples: ['atan2(2, 2) / pi', 'angle = 60 deg in rad', 'x = cos(angle)', 'y = sin(angle)', 'atan2(y, x)'],\n seealso: ['sin', 'cos', 'tan']\n};","export var cosDocs = {\n name: 'cos',\n category: 'Trigonometry',\n syntax: ['cos(x)'],\n description: 'Compute the cosine of x in radians.',\n examples: ['cos(2)', 'cos(pi / 4) ^ 2', 'cos(180 deg)', 'cos(60 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['acos', 'sin', 'tan']\n};","export var coshDocs = {\n name: 'cosh',\n category: 'Trigonometry',\n syntax: ['cosh(x)'],\n description: 'Compute the hyperbolic cosine of x in radians.',\n examples: ['cosh(0.5)'],\n seealso: ['sinh', 'tanh', 'coth']\n};","export var cotDocs = {\n name: 'cot',\n category: 'Trigonometry',\n syntax: ['cot(x)'],\n description: 'Compute the cotangent of x in radians. Defined as 1/tan(x)',\n examples: ['cot(2)', '1 / tan(2)'],\n seealso: ['sec', 'csc', 'tan']\n};","export var cothDocs = {\n name: 'coth',\n category: 'Trigonometry',\n syntax: ['coth(x)'],\n description: 'Compute the hyperbolic cotangent of x in radians.',\n examples: ['coth(2)', '1 / tanh(2)'],\n seealso: ['sech', 'csch', 'tanh']\n};","export var cscDocs = {\n name: 'csc',\n category: 'Trigonometry',\n syntax: ['csc(x)'],\n description: 'Compute the cosecant of x in radians. Defined as 1/sin(x)',\n examples: ['csc(2)', '1 / sin(2)'],\n seealso: ['sec', 'cot', 'sin']\n};","export var cschDocs = {\n name: 'csch',\n category: 'Trigonometry',\n syntax: ['csch(x)'],\n description: 'Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)',\n examples: ['csch(2)', '1 / sinh(2)'],\n seealso: ['sech', 'coth', 'sinh']\n};","export var secDocs = {\n name: 'sec',\n category: 'Trigonometry',\n syntax: ['sec(x)'],\n description: 'Compute the secant of x in radians. Defined as 1/cos(x)',\n examples: ['sec(2)', '1 / cos(2)'],\n seealso: ['cot', 'csc', 'cos']\n};","export var sechDocs = {\n name: 'sech',\n category: 'Trigonometry',\n syntax: ['sech(x)'],\n description: 'Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)',\n examples: ['sech(2)', '1 / cosh(2)'],\n seealso: ['coth', 'csch', 'cosh']\n};","export var sinDocs = {\n name: 'sin',\n category: 'Trigonometry',\n syntax: ['sin(x)'],\n description: 'Compute the sine of x in radians.',\n examples: ['sin(2)', 'sin(pi / 4) ^ 2', 'sin(90 deg)', 'sin(30 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['asin', 'cos', 'tan']\n};","export var sinhDocs = {\n name: 'sinh',\n category: 'Trigonometry',\n syntax: ['sinh(x)'],\n description: 'Compute the hyperbolic sine of x in radians.',\n examples: ['sinh(0.5)'],\n seealso: ['cosh', 'tanh']\n};","export var tanDocs = {\n name: 'tan',\n category: 'Trigonometry',\n syntax: ['tan(x)'],\n description: 'Compute the tangent of x in radians.',\n examples: ['tan(0.5)', 'sin(0.5) / cos(0.5)', 'tan(pi / 4)', 'tan(45 deg)'],\n seealso: ['atan', 'sin', 'cos']\n};","export var tanhDocs = {\n name: 'tanh',\n category: 'Trigonometry',\n syntax: ['tanh(x)'],\n description: 'Compute the hyperbolic tangent of x in radians.',\n examples: ['tanh(0.5)', 'sinh(0.5) / cosh(0.5)'],\n seealso: ['sinh', 'cosh']\n};","export var toDocs = {\n name: 'to',\n category: 'Units',\n syntax: ['x to unit', 'to(x, unit)'],\n description: 'Change the unit of a value.',\n examples: ['5 inch to cm', '3.2kg to g', '16 bytes in bits'],\n seealso: []\n};","export var cloneDocs = {\n name: 'clone',\n category: 'Utils',\n syntax: ['clone(x)'],\n description: 'Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices',\n examples: ['clone(3.5)', 'clone(2 - 4i)', 'clone(45 deg)', 'clone([1, 2; 3, 4])', 'clone(\"hello world\")'],\n seealso: []\n};","export var formatDocs = {\n name: 'format',\n category: 'Utils',\n syntax: ['format(value)', 'format(value, precision)'],\n description: 'Format a value of any type as string.',\n examples: ['format(2.3)', 'format(3 - 4i)', 'format([])', 'format(pi, 3)'],\n seealso: ['print']\n};","export var binDocs = {\n name: 'bin',\n category: 'Utils',\n syntax: ['bin(value)'],\n description: 'Format a number as binary',\n examples: ['bin(2)'],\n seealso: ['oct', 'hex']\n};","export var octDocs = {\n name: 'oct',\n category: 'Utils',\n syntax: ['oct(value)'],\n description: 'Format a number as octal',\n examples: ['oct(56)'],\n seealso: ['bin', 'hex']\n};","export var hexDocs = {\n name: 'hex',\n category: 'Utils',\n syntax: ['hex(value)'],\n description: 'Format a number as hexadecimal',\n examples: ['hex(240)'],\n seealso: ['bin', 'oct']\n};","export var isNaNDocs = {\n name: 'isNaN',\n category: 'Utils',\n syntax: ['isNaN(x)'],\n description: 'Test whether a value is NaN (not a number)',\n examples: ['isNaN(2)', 'isNaN(0 / 0)', 'isNaN(NaN)', 'isNaN(Infinity)'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};","export var isIntegerDocs = {\n name: 'isInteger',\n category: 'Utils',\n syntax: ['isInteger(x)'],\n description: 'Test whether a value is an integer number.',\n examples: ['isInteger(2)', 'isInteger(3.5)', 'isInteger([3, 0.5, -2])'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};","export var isNegativeDocs = {\n name: 'isNegative',\n category: 'Utils',\n syntax: ['isNegative(x)'],\n description: 'Test whether a value is negative: smaller than zero.',\n examples: ['isNegative(2)', 'isNegative(0)', 'isNegative(-4)', 'isNegative([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isPositive', 'isZero']\n};","export var isNumericDocs = {\n name: 'isNumeric',\n category: 'Utils',\n syntax: ['isNumeric(x)'],\n description: 'Test whether a value is a numeric value. ' + 'Returns true when the input is a number, BigNumber, Fraction, or boolean.',\n examples: ['isNumeric(2)', 'isNumeric(\"2\")', 'hasNumericValue(\"2\")', 'isNumeric(0)', 'isNumeric(bignumber(500))', 'isNumeric(fraction(0.125))', 'isNumeric(2 + 3i)', 'isNumeric([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'hasNumericValue']\n};","export var hasNumericValueDocs = {\n name: 'hasNumericValue',\n category: 'Utils',\n syntax: ['hasNumericValue(x)'],\n description: 'Test whether a value is an numeric value. ' + 'In case of a string, true is returned if the string contains a numeric value.',\n examples: ['hasNumericValue(2)', 'hasNumericValue(\"2\")', 'isNumeric(\"2\")', 'hasNumericValue(0)', 'hasNumericValue(bignumber(500))', 'hasNumericValue(fraction(0.125))', 'hasNumericValue(2 + 3i)', 'hasNumericValue([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'isNumeric']\n};","export var isPositiveDocs = {\n name: 'isPositive',\n category: 'Utils',\n syntax: ['isPositive(x)'],\n description: 'Test whether a value is positive: larger than zero.',\n examples: ['isPositive(2)', 'isPositive(0)', 'isPositive(-4)', 'isPositive([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};","export var isPrimeDocs = {\n name: 'isPrime',\n category: 'Utils',\n syntax: ['isPrime(x)'],\n description: 'Test whether a value is prime: has no divisors other than itself and one.',\n examples: ['isPrime(3)', 'isPrime(-2)', 'isPrime([2, 17, 100])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};","export var isZeroDocs = {\n name: 'isZero',\n category: 'Utils',\n syntax: ['isZero(x)'],\n description: 'Test whether a value is zero.',\n examples: ['isZero(2)', 'isZero(0)', 'isZero(-4)', 'isZero([3, 0, -2, 0])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isPositive']\n};","export var typeOfDocs = {\n name: 'typeOf',\n category: 'Utils',\n syntax: ['typeOf(x)'],\n description: 'Get the type of a variable.',\n examples: ['typeOf(3.5)', 'typeOf(2 - 4i)', 'typeOf(45 deg)', 'typeOf(\"hello world\")'],\n seealso: ['getMatrixDataType']\n};","export var numericDocs = {\n name: 'numeric',\n category: 'Utils',\n syntax: ['numeric(x)'],\n description: 'Convert a numeric input to a specific numeric type: number, BigNumber, or Fraction.',\n examples: ['numeric(\"4\")', 'numeric(\"4\", \"number\")', 'numeric(\"4\", \"BigNumber\")', 'numeric(\"4\", \"Fraction)', 'numeric(4, \"Fraction\")', 'numeric(fraction(2, 5), \"number)'],\n seealso: ['number', 'fraction', 'bignumber', 'string', 'format']\n};","import { factory } from '../../utils/factory.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { embeddedDocs } from '../embeddedDocs/embeddedDocs.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nvar name = 'help';\nvar dependencies = ['typed', 'mathWithTransform', 'Help'];\nexport var createHelp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n mathWithTransform,\n Help\n } = _ref;\n\n /**\n * Retrieve help on a function or data type.\n * Help files are retrieved from the embedded documentation in math.docs.\n *\n * Syntax:\n *\n * math.help(search)\n *\n * Examples:\n *\n * console.log(math.help('sin').toString())\n * console.log(math.help(math.add).toString())\n * console.log(math.help(math.add).toJSON())\n *\n * @param {Function | string | Object} search A function or function name\n * for which to get help\n * @return {Help} A help object\n */\n return typed(name, {\n any: function any(search) {\n var prop;\n var searchName = search;\n\n if (typeof search !== 'string') {\n for (prop in mathWithTransform) {\n // search in functions and constants\n if (hasOwnProperty(mathWithTransform, prop) && search === mathWithTransform[prop]) {\n searchName = prop;\n break;\n }\n }\n /* TODO: implement help for data types\n if (!text) {\n // search data type\n for (prop in math.type) {\n if (hasOwnProperty(math, prop)) {\n if (search === math.type[prop]) {\n text = prop\n break\n }\n }\n }\n }\n */\n\n }\n\n var doc = getSafeProperty(embeddedDocs, searchName);\n\n if (!doc) {\n var searchText = typeof searchName === 'function' ? searchName.name : searchName;\n throw new Error('No documentation found on \"' + searchText + '\"');\n }\n\n return new Help(doc);\n }\n });\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'chain';\nvar dependencies = ['typed', 'Chain'];\nexport var createChain = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Chain\n } = _ref;\n\n /**\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing `chain.done()`, which returns\n * the final value.\n *\n * The chain has a number of special functions:\n *\n * - `done()` Finalize the chain and return the chain's value.\n * - `valueOf()` The same as `done()`\n * - `toString()` Executes `math.format()` onto the chain's value, returning\n * a string representation of the value.\n *\n * Syntax:\n *\n * math.chain(value)\n *\n * Examples:\n *\n * math.chain(3)\n * .add(4)\n * .subtract(2)\n * .done() // 5\n *\n * math.chain( [[1, 2], [3, 4]] )\n * .subset(math.index(0, 0), 8)\n * .multiply(3)\n * .done() // [[24, 6], [9, 12]]\n *\n * @param {*} [value] A value of any type on which to start a chained operation.\n * @return {math.Chain} The created chain\n */\n return typed(name, {\n '': function _() {\n return new Chain();\n },\n any: function any(value) {\n return new Chain(value);\n }\n });\n});","import { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'det';\nvar dependencies = ['typed', 'matrix', 'subtract', 'multiply', 'unaryMinus', 'lup'];\nexport var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n multiply,\n unaryMinus,\n lup\n } = _ref;\n\n /**\n * Calculate the determinant of a matrix.\n *\n * Syntax:\n *\n * math.det(x)\n *\n * Examples:\n *\n * math.det([[1, 2], [3, 4]]) // returns -2\n *\n * const A = [\n * [-2, 2, 3],\n * [-1, 1, 3],\n * [2, 0, -1]\n * ]\n * math.det(A) // returns 6\n *\n * See also:\n *\n * inv\n *\n * @param {Array | Matrix} x A matrix\n * @return {number} The determinant of `x`\n */\n return typed(name, {\n any: function any(x) {\n return clone(x);\n },\n 'Array | Matrix': function det(x) {\n var size;\n\n if (isMatrix(x)) {\n size = x.size();\n } else if (Array.isArray(x)) {\n x = matrix(x);\n size = x.size();\n } else {\n // a scalar\n size = [];\n }\n\n switch (size.length) {\n case 0:\n // scalar\n return clone(x);\n\n case 1:\n // vector\n if (size[0] === 1) {\n return clone(x.valueOf()[0]);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n\n case 2:\n {\n // two dimensional array\n var rows = size[0];\n var cols = size[1];\n\n if (rows === cols) {\n return _det(x.clone().valueOf(), rows, cols);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n }\n });\n /**\n * Calculate the determinant of a matrix\n * @param {Array[]} matrix A square, two dimensional matrix\n * @param {number} rows Number of rows of the matrix (zero-based)\n * @param {number} cols Number of columns of the matrix (zero-based)\n * @returns {number} det\n * @private\n */\n\n function _det(matrix, rows, cols) {\n if (rows === 1) {\n // this is a 1 x 1 matrix\n return clone(matrix[0][0]);\n } else if (rows === 2) {\n // this is a 2 x 2 matrix\n // the determinant of [a11,a12;a21,a22] is det = a11*a22-a21*a12\n return subtract(multiply(matrix[0][0], matrix[1][1]), multiply(matrix[1][0], matrix[0][1]));\n } else {\n // Compute the LU decomposition\n var decomp = lup(matrix); // The determinant is the product of the diagonal entries of U (and those of L, but they are all 1)\n\n var det = decomp.U[0][0];\n\n for (var _i = 1; _i < rows; _i++) {\n det = multiply(det, decomp.U[_i][_i]);\n } // The determinant will be multiplied by 1 or -1 depending on the parity of the permutation matrix.\n // This can be determined by counting the cycles. This is roughly a linear time algorithm.\n\n\n var evenCycles = 0;\n var i = 0;\n var visited = [];\n\n while (true) {\n while (visited[i]) {\n i++;\n }\n\n if (i >= rows) break;\n var j = i;\n var cycleLen = 0;\n\n while (!visited[decomp.p[j]]) {\n visited[decomp.p[j]] = true;\n j = decomp.p[j];\n cycleLen++;\n }\n\n if (cycleLen % 2 === 0) {\n evenCycles++;\n }\n }\n\n return evenCycles % 2 === 0 ? det : unaryMinus(det);\n }\n }\n});","import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nvar name = 'inv';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'addScalar', 'multiply', 'unaryMinus', 'det', 'identity', 'abs'];\nexport var createInv = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n addScalar,\n multiply,\n unaryMinus,\n det,\n identity,\n abs\n } = _ref;\n\n /**\n * Calculate the inverse of a square matrix.\n *\n * Syntax:\n *\n * math.inv(x)\n *\n * Examples:\n *\n * math.inv([[1, 2], [3, 4]]) // returns [[-2, 1], [1.5, -0.5]]\n * math.inv(4) // returns 0.25\n * 1 / 4 // returns 0.25\n *\n * See also:\n *\n * det, transpose\n *\n * @param {number | Complex | Array | Matrix} x Matrix to be inversed\n * @return {number | Complex | Array | Matrix} The inverse of `x`.\n */\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(x) {\n var size = isMatrix(x) ? x.size() : arraySize(x);\n\n switch (size.length) {\n case 1:\n // vector\n if (size[0] === 1) {\n if (isMatrix(x)) {\n return matrix([divideScalar(1, x.valueOf()[0])]);\n } else {\n return [divideScalar(1, x[0])];\n }\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n\n case 2:\n // two dimensional array\n {\n var rows = size[0];\n var cols = size[1];\n\n if (rows === cols) {\n if (isMatrix(x)) {\n return matrix(_inv(x.valueOf(), rows, cols), x.storage());\n } else {\n // return an Array\n return _inv(x, rows, cols);\n }\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n },\n any: function any(x) {\n // scalar\n return divideScalar(1, x); // FIXME: create a BigNumber one when configured for bignumbers\n }\n });\n /**\n * Calculate the inverse of a square matrix\n * @param {Array[]} mat A square matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns, must equal rows\n * @return {Array[]} inv Inverse matrix\n * @private\n */\n\n function _inv(mat, rows, cols) {\n var r, s, f, value, temp;\n\n if (rows === 1) {\n // this is a 1 x 1 matrix\n value = mat[0][0];\n\n if (value === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n\n return [[divideScalar(1, value)]];\n } else if (rows === 2) {\n // this is a 2 x 2 matrix\n var d = det(mat);\n\n if (d === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n\n return [[divideScalar(mat[1][1], d), divideScalar(unaryMinus(mat[0][1]), d)], [divideScalar(unaryMinus(mat[1][0]), d), divideScalar(mat[0][0], d)]];\n } else {\n // this is a matrix of 3 x 3 or larger\n // calculate inverse using gauss-jordan elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination\n // http://mathworld.wolfram.com/MatrixInverse.html\n // http://math.uww.edu/~mcfarlat/inverse.htm\n // make a copy of the matrix (only the arrays, not of the elements)\n var A = mat.concat();\n\n for (r = 0; r < rows; r++) {\n A[r] = A[r].concat();\n } // create an identity matrix which in the end will contain the\n // matrix inverse\n\n\n var B = identity(rows).valueOf(); // loop over all columns, and perform row reductions\n\n for (var c = 0; c < cols; c++) {\n // Pivoting: Swap row c with row r, where row r contains the largest element A[r][c]\n var ABig = abs(A[c][c]);\n var rBig = c;\n r = c + 1;\n\n while (r < rows) {\n if (abs(A[r][c]) > ABig) {\n ABig = abs(A[r][c]);\n rBig = r;\n }\n\n r++;\n }\n\n if (ABig === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n\n r = rBig;\n\n if (r !== c) {\n temp = A[c];\n A[c] = A[r];\n A[r] = temp;\n temp = B[c];\n B[c] = B[r];\n B[r] = temp;\n } // eliminate non-zero values on the other rows at column c\n\n\n var Ac = A[c];\n var Bc = B[c];\n\n for (r = 0; r < rows; r++) {\n var Ar = A[r];\n var Br = B[r];\n\n if (r !== c) {\n // eliminate value at column c and row r\n if (Ar[c] !== 0) {\n f = divideScalar(unaryMinus(Ar[c]), Ac[c]); // add (f * row c) to row r to eliminate the value\n // at column c\n\n for (s = c; s < cols; s++) {\n Ar[s] = addScalar(Ar[s], multiply(f, Ac[s]));\n }\n\n for (s = 0; s < cols; s++) {\n Br[s] = addScalar(Br[s], multiply(f, Bc[s]));\n }\n }\n } else {\n // normalize value at Acc to 1,\n // divide each value on row r with the value at Acc\n f = Ac[c];\n\n for (s = c; s < cols; s++) {\n Ar[s] = divideScalar(Ar[s], f);\n }\n\n for (s = 0; s < cols; s++) {\n Br[s] = divideScalar(Br[s], f);\n }\n }\n }\n }\n\n return B;\n }\n }\n});","import { clone } from '../../../utils/object.js';\nexport function createComplexEigs(_ref) {\n var {\n addScalar,\n subtract,\n flatten,\n multiply,\n multiplyScalar,\n divideScalar,\n sqrt,\n abs,\n bignumber,\n diag,\n inv,\n qr,\n usolve,\n usolveAll,\n equal,\n complex,\n larger,\n smaller,\n matrixFromColumns,\n dot\n } = _ref;\n\n /**\n * @param {number[][]} arr the matrix to find eigenvalues of\n * @param {number} N size of the matrix\n * @param {number|BigNumber} prec precision, anything lower will be considered zero\n * @param {'number'|'BigNumber'|'Complex'} type\n * @param {boolean} findVectors should we find eigenvectors?\n *\n * @returns {{ values: number[], vectors: number[][] }}\n */\n function complexEigs(arr, N, prec, type, findVectors) {\n if (findVectors === undefined) {\n findVectors = true;\n } // TODO check if any row/col are zero except the diagonal\n // make sure corresponding rows and columns have similar magnitude\n // important because of numerical stability\n\n\n var R = balance(arr, N, prec, type, findVectors); // R is the row transformation matrix\n // A' = R A R⁻¹, A is the original matrix\n // (if findVectors is false, R is undefined)\n // TODO if magnitudes of elements vary over many orders,\n // move greatest elements to the top left corner\n // using similarity transformations, reduce the matrix\n // to Hessenberg form (upper triangular plus one subdiagonal row)\n // updates the transformation matrix R with new row operationsq\n\n reduceToHessenberg(arr, N, prec, type, findVectors, R); // find eigenvalues\n\n var {\n values,\n C\n } = iterateUntilTriangular(arr, N, prec, type, findVectors); // values is the list of eigenvalues, C is the column\n // transformation matrix that transforms the hessenberg\n // matrix to upper triangular\n // compose transformations A → hess. and hess. → triang.\n\n C = multiply(inv(R), C);\n var vectors;\n\n if (findVectors) {\n vectors = findEigenvectors(arr, N, C, values, prec, type);\n vectors = matrixFromColumns(...vectors);\n }\n\n return {\n values,\n vectors\n };\n }\n /**\n * @param {number[][]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {number[][]}\n */\n\n\n function balance(arr, N, prec, type, findVectors) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1; // base of the floating-point arithmetic\n\n var radix = big ? bignumber(10) : 2;\n var radixSq = multiplyScalar(radix, radix); // the diagonal transformation matrix R\n\n var Rdiag;\n\n if (findVectors) {\n Rdiag = Array(N).fill(one);\n } // this isn't the only time we loop thru the matrix...\n\n\n var last = false;\n\n while (!last) {\n // ...haha I'm joking! unless...\n last = true;\n\n for (var i = 0; i < N; i++) {\n // compute the taxicab norm of i-th column and row\n // TODO optimize for complex numbers\n var colNorm = zero;\n var rowNorm = zero;\n\n for (var j = 0; j < N; j++) {\n if (i === j) continue;\n var c = abs(arr[i][j]);\n colNorm = addScalar(colNorm, c);\n rowNorm = addScalar(rowNorm, c);\n }\n\n if (!equal(colNorm, 0) && !equal(rowNorm, 0)) {\n // find integer power closest to balancing the matrix\n // (we want to scale only by integer powers of radix,\n // so that we don't lose any precision due to round-off)\n var f = one;\n var _c = colNorm;\n var rowDivRadix = divideScalar(rowNorm, radix);\n var rowMulRadix = multiplyScalar(rowNorm, radix);\n\n while (smaller(_c, rowDivRadix)) {\n _c = multiplyScalar(_c, radixSq);\n f = multiplyScalar(f, radix);\n }\n\n while (larger(_c, rowMulRadix)) {\n _c = divideScalar(_c, radixSq);\n f = divideScalar(f, radix);\n } // check whether balancing is needed\n // condition = (c + rowNorm) / f < 0.95 * (colNorm + rowNorm)\n\n\n var condition = smaller(divideScalar(addScalar(_c, rowNorm), f), multiplyScalar(addScalar(colNorm, rowNorm), 0.95)); // apply balancing similarity transformation\n\n if (condition) {\n // we should loop once again to check whether\n // another rebalancing is needed\n last = false;\n var g = divideScalar(1, f);\n\n for (var _j = 0; _j < N; _j++) {\n if (i === _j) {\n continue;\n }\n\n arr[i][_j] = multiplyScalar(arr[i][_j], f);\n arr[_j][i] = multiplyScalar(arr[_j][i], g);\n } // keep track of transformations\n\n\n if (findVectors) {\n Rdiag[i] = multiplyScalar(Rdiag[i], f);\n }\n }\n }\n }\n } // return the diagonal row transformation matrix\n\n\n return diag(Rdiag);\n }\n /**\n * @param {number[][]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number'|'BigNumber'|'Complex'} type\n * @param {boolean} findVectors\n * @param {number[][]} R the row transformation matrix that will be modified\n */\n\n\n function reduceToHessenberg(arr, N, prec, type, findVectors, R) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n\n if (big) {\n prec = bignumber(prec);\n }\n\n for (var i = 0; i < N - 2; i++) {\n // Find the largest subdiag element in the i-th col\n var maxIndex = 0;\n var max = zero;\n\n for (var j = i + 1; j < N; j++) {\n var el = arr[j][i];\n\n if (smaller(abs(max), abs(el))) {\n max = el;\n maxIndex = j;\n }\n } // This col is pivoted, no need to do anything\n\n\n if (smaller(abs(max), prec)) {\n continue;\n }\n\n if (maxIndex !== i + 1) {\n // Interchange maxIndex-th and (i+1)-th row\n var tmp1 = arr[maxIndex];\n arr[maxIndex] = arr[i + 1];\n arr[i + 1] = tmp1; // Interchange maxIndex-th and (i+1)-th column\n\n for (var _j2 = 0; _j2 < N; _j2++) {\n var tmp2 = arr[_j2][maxIndex];\n arr[_j2][maxIndex] = arr[_j2][i + 1];\n arr[_j2][i + 1] = tmp2;\n } // keep track of transformations\n\n\n if (findVectors) {\n var tmp3 = R[maxIndex];\n R[maxIndex] = R[i + 1];\n R[i + 1] = tmp3;\n }\n } // Reduce following rows and columns\n\n\n for (var _j3 = i + 2; _j3 < N; _j3++) {\n var n = divideScalar(arr[_j3][i], max);\n\n if (n === 0) {\n continue;\n } // from j-th row subtract n-times (i+1)th row\n\n\n for (var k = 0; k < N; k++) {\n arr[_j3][k] = subtract(arr[_j3][k], multiplyScalar(n, arr[i + 1][k]));\n } // to (i+1)th column add n-times j-th column\n\n\n for (var _k = 0; _k < N; _k++) {\n arr[_k][i + 1] = addScalar(arr[_k][i + 1], multiplyScalar(n, arr[_k][_j3]));\n } // keep track of transformations\n\n\n if (findVectors) {\n for (var _k2 = 0; _k2 < N; _k2++) {\n R[_j3][_k2] = subtract(R[_j3][_k2], multiplyScalar(n, R[i + 1][_k2]));\n }\n }\n }\n }\n\n return R;\n }\n /**\n * @returns {{values: values, C: Matrix}}\n * @see Press, Wiliams: Numerical recipes in Fortran 77\n * @see https://en.wikipedia.org/wiki/QR_algorithm\n */\n\n\n function iterateUntilTriangular(A, N, prec, type, findVectors) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n\n if (big) {\n prec = bignumber(prec);\n } // The Francis Algorithm\n // The core idea of this algorithm is that doing successive\n // A' = Q⁺AQ transformations will eventually converge to block-\n // upper-triangular with diagonal blocks either 1x1 or 2x2.\n // The Q here is the one from the QR decomposition, A = QR.\n // Since the eigenvalues of a block-upper-triangular matrix are\n // the eigenvalues of its diagonal blocks and we know how to find\n // eigenvalues of a 2x2 matrix, we know the eigenvalues of A.\n\n\n var arr = clone(A); // the list of converged eigenvalues\n\n var lambdas = []; // size of arr, which will get smaller as eigenvalues converge\n\n var n = N; // the diagonal of the block-diagonal matrix that turns\n // converged 2x2 matrices into upper triangular matrices\n\n var Sdiag = []; // N×N matrix describing the overall transformation done during the QR algorithm\n\n var Qtotal = findVectors ? diag(Array(N).fill(one)) : undefined; // n×n matrix describing the QR transformations done since last convergence\n\n var Qpartial = findVectors ? diag(Array(n).fill(one)) : undefined; // last eigenvalue converged before this many steps\n\n var lastConvergenceBefore = 0;\n\n while (lastConvergenceBefore <= 100) {\n lastConvergenceBefore += 1; // TODO if the convergence is slow, do something clever\n // Perform the factorization\n\n var k = 0; // TODO set close to an eigenvalue\n\n for (var i = 0; i < n; i++) {\n arr[i][i] = subtract(arr[i][i], k);\n } // TODO do an implicit QR transformation\n\n\n var {\n Q,\n R\n } = qr(arr);\n arr = multiply(R, Q);\n\n for (var _i = 0; _i < n; _i++) {\n arr[_i][_i] = addScalar(arr[_i][_i], k);\n } // keep track of transformations\n\n\n if (findVectors) {\n Qpartial = multiply(Qpartial, Q);\n } // The rightmost diagonal element converged to an eigenvalue\n\n\n if (n === 1 || smaller(abs(arr[n - 1][n - 2]), prec)) {\n lastConvergenceBefore = 0;\n lambdas.push(arr[n - 1][n - 1]); // keep track of transformations\n\n if (findVectors) {\n Sdiag.unshift([[1]]);\n inflateMatrix(Qpartial, N);\n Qtotal = multiply(Qtotal, Qpartial);\n\n if (n > 1) {\n Qpartial = diag(Array(n - 1).fill(one));\n }\n } // reduce the matrix size\n\n\n n -= 1;\n arr.pop();\n\n for (var _i2 = 0; _i2 < n; _i2++) {\n arr[_i2].pop();\n } // The rightmost diagonal 2x2 block converged\n\n } else if (n === 2 || smaller(abs(arr[n - 2][n - 3]), prec)) {\n lastConvergenceBefore = 0;\n var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);\n lambdas.push(...ll); // keep track of transformations\n\n if (findVectors) {\n Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));\n inflateMatrix(Qpartial, N);\n Qtotal = multiply(Qtotal, Qpartial);\n\n if (n > 2) {\n Qpartial = diag(Array(n - 2).fill(one));\n }\n } // reduce the matrix size\n\n\n n -= 2;\n arr.pop();\n arr.pop();\n\n for (var _i3 = 0; _i3 < n; _i3++) {\n arr[_i3].pop();\n\n arr[_i3].pop();\n }\n }\n\n if (n === 0) {\n break;\n }\n } // standard sorting\n\n\n lambdas.sort((a, b) => +subtract(abs(a), abs(b))); // the algorithm didn't converge\n\n if (lastConvergenceBefore > 100) {\n var err = Error('The eigenvalues failed to converge. Only found these eigenvalues: ' + lambdas.join(', '));\n err.values = lambdas;\n err.vectors = [];\n throw err;\n } // combine the overall QR transformation Qtotal with the subsequent\n // transformation S that turns the diagonal 2x2 blocks to upper triangular\n\n\n var C = findVectors ? multiply(Qtotal, blockDiag(Sdiag, N)) : undefined;\n return {\n values: lambdas,\n C\n };\n }\n /**\n * @param {Matrix} A original matrix\n * @param {number} N size of A\n * @param {Matrix} C column transformation matrix that turns A into upper triangular\n * @param {number[]} values array of eigenvalues of A\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {number[][]} eigenvalues\n */\n\n\n function findEigenvectors(A, N, C, values, prec, type) {\n var Cinv = inv(C);\n var U = multiply(Cinv, A, C);\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1; // turn values into a kind of \"multiset\"\n // this way it is easier to find eigenvectors\n\n var uniqueValues = [];\n var multiplicities = [];\n\n for (var λ of values) {\n var i = indexOf(uniqueValues, λ, equal);\n\n if (i === -1) {\n uniqueValues.push(λ);\n multiplicities.push(1);\n } else {\n multiplicities[i] += 1;\n }\n } // find eigenvectors by solving U − λE = 0\n // TODO replace with an iterative eigenvector algorithm\n // (this one might fail for imprecise eigenvalues)\n\n\n var vectors = [];\n var len = uniqueValues.length;\n var b = Array(N).fill(zero);\n var E = diag(Array(N).fill(one)); // eigenvalues for which usolve failed (due to numerical error)\n\n var failedLambdas = [];\n\n for (var _i4 = 0; _i4 < len; _i4++) {\n var _λ = uniqueValues[_i4];\n\n var _A = subtract(U, multiply(_λ, E)); // the characteristic matrix\n\n\n var solutions = usolveAll(_A, b);\n solutions = solutions.map(v => multiply(C, v));\n solutions.shift(); // ignore the null vector\n // looks like we missed something, try inverse iteration\n\n while (solutions.length < multiplicities[_i4]) {\n var approxVec = inverseIterate(_A, N, solutions, prec, type);\n\n if (approxVec == null) {\n // no more vectors were found\n failedLambdas.push(_λ);\n break;\n }\n\n solutions.push(approxVec);\n }\n\n vectors.push(...solutions.map(v => flatten(v)));\n }\n\n if (failedLambdas.length !== 0) {\n var err = new Error('Failed to find eigenvectors for the following eigenvalues: ' + failedLambdas.join(', '));\n err.values = values;\n err.vectors = vectors;\n throw err;\n }\n\n return vectors;\n }\n /**\n * Compute the eigenvalues of an 2x2 matrix\n * @return {[number,number]}\n */\n\n\n function eigenvalues2x2(a, b, c, d) {\n // λ± = ½ trA ± ½ √( tr²A - 4 detA )\n var trA = addScalar(a, d);\n var detA = subtract(multiplyScalar(a, d), multiplyScalar(b, c));\n var x = multiplyScalar(trA, 0.5);\n var y = multiplyScalar(sqrt(subtract(multiplyScalar(trA, trA), multiplyScalar(4, detA))), 0.5);\n return [addScalar(x, y), subtract(x, y)];\n }\n /**\n * For an 2x2 matrix compute the transformation matrix S,\n * so that SAS⁻¹ is an upper triangular matrix\n * @return {[[number,number],[number,number]]}\n * @see https://math.berkeley.edu/~ogus/old/Math_54-05/webfoils/jordan.pdf\n * @see http://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html\n */\n\n\n function jordanBase2x2(a, b, c, d, l1, l2, prec, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1; // matrix is already upper triangular\n // return an identity matrix\n\n if (smaller(abs(c), prec)) {\n return [[one, zero], [zero, one]];\n } // matrix is diagonalizable\n // return its eigenvectors as columns\n\n\n if (larger(abs(subtract(l1, l2)), prec)) {\n return [[subtract(l1, d), subtract(l2, d)], [c, c]];\n } // matrix is not diagonalizable\n // compute off-diagonal elements of N = A - λI\n // N₁₂ = 0 ⇒ S = ( N⃗₁, I⃗₁ )\n // N₁₂ ≠ 0 ⇒ S = ( N⃗₂, I⃗₂ )\n\n\n var na = subtract(a, l1);\n var nb = subtract(b, l1);\n var nc = subtract(c, l1);\n var nd = subtract(d, l1);\n\n if (smaller(abs(nb), prec)) {\n return [[na, one], [nc, zero]];\n } else {\n return [[nb, zero], [nd, one]];\n }\n }\n /**\n * Enlarge the matrix from n×n to N×N, setting the new\n * elements to 1 on diagonal and 0 elsewhere\n */\n\n\n function inflateMatrix(arr, N) {\n // add columns\n for (var i = 0; i < arr.length; i++) {\n arr[i].push(...Array(N - arr[i].length).fill(0));\n } // add rows\n\n\n for (var _i5 = arr.length; _i5 < N; _i5++) {\n arr.push(Array(N).fill(0));\n arr[_i5][_i5] = 1;\n }\n\n return arr;\n }\n /**\n * Create a block-diagonal matrix with the given square matrices on the diagonal\n * @param {Matrix[] | number[][][]} arr array of matrices to be placed on the diagonal\n * @param {number} N the size of the resulting matrix\n */\n\n\n function blockDiag(arr, N) {\n var M = [];\n\n for (var i = 0; i < N; i++) {\n M[i] = Array(N).fill(0);\n }\n\n var I = 0;\n\n for (var sub of arr) {\n var n = sub.length;\n\n for (var _i6 = 0; _i6 < n; _i6++) {\n for (var j = 0; j < n; j++) {\n M[I + _i6][I + j] = sub[_i6][j];\n }\n }\n\n I += n;\n }\n\n return M;\n }\n /**\n * Finds the index of an element in an array using a custom equality function\n * @template T\n * @param {Array} arr array in which to search\n * @param {T} el the element to find\n * @param {function(T, T): boolean} fn the equality function, first argument is an element of `arr`, the second is always `el`\n * @returns {number} the index of `el`, or -1 when it's not in `arr`\n */\n\n\n function indexOf(arr, el, fn) {\n for (var i = 0; i < arr.length; i++) {\n if (fn(arr[i], el)) {\n return i;\n }\n }\n\n return -1;\n }\n /**\n * Provided a near-singular upper-triangular matrix A and a list of vectors,\n * finds an eigenvector of A with the smallest eigenvalue, which is orthogonal\n * to each vector in the list\n * @template T\n * @param {T[][]} A near-singular square matrix\n * @param {number} N dimension\n * @param {T[][]} orthog list of vectors\n * @param {number} prec epsilon\n * @param {'number'|'BigNumber'|'Complex'} type\n * @return {T[] | null} eigenvector\n *\n * @see Numerical Recipes for Fortran 77 – 11.7 Eigenvalues or Eigenvectors by Inverse Iteration\n */\n\n\n function inverseIterate(A, N, orthog, prec, type) {\n var largeNum = type === 'BigNumber' ? bignumber(1000) : 1000;\n var b; // the vector\n // you better choose a random vector before I count to five\n\n var i = 0;\n\n while (true) {\n b = randomOrthogonalVector(N, orthog, type);\n b = usolve(A, b);\n\n if (larger(norm(b), largeNum)) {\n break;\n }\n\n if (++i >= 5) {\n return null;\n }\n } // you better converge before I count to ten\n\n\n i = 0;\n\n while (true) {\n var c = usolve(A, b);\n\n if (smaller(norm(orthogonalComplement(b, [c])), prec)) {\n break;\n }\n\n if (++i >= 10) {\n return null;\n }\n\n b = normalize(c);\n }\n\n return b;\n }\n /**\n * Generates a random unit vector of dimension N, orthogonal to each vector in the list\n * @template T\n * @param {number} N dimension\n * @param {T[][]} orthog list of vectors\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {T[]} random vector\n */\n\n\n function randomOrthogonalVector(N, orthog, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex'; // generate random vector with the correct type\n\n var v = Array(N).fill(0).map(_ => 2 * Math.random() - 1);\n\n if (big) {\n v = v.map(n => bignumber(n));\n }\n\n if (cplx) {\n v = v.map(n => complex(n));\n } // project to orthogonal complement\n\n\n v = orthogonalComplement(v, orthog); // normalize\n\n return normalize(v, type);\n }\n /**\n * Project vector v to the orthogonal complement of an array of vectors\n */\n\n\n function orthogonalComplement(v, orthog) {\n for (var w of orthog) {\n // v := v − (w, v)/∥w∥² w\n v = subtract(v, multiply(divideScalar(dot(w, v), dot(w, w)), w));\n }\n\n return v;\n }\n /**\n * Calculate the norm of a vector.\n * We can't use math.norm because factory can't handle circular dependency.\n * Seriously, I'm really fed up with factory.\n */\n\n\n function norm(v) {\n return abs(sqrt(dot(v, v)));\n }\n /**\n * Normalize a vector\n * @template T\n * @param {T[]} v\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {T[]} normalized vec\n */\n\n\n function normalize(v, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n return multiply(divideScalar(one, norm(v)), v);\n }\n\n return complexEigs;\n}","import { clone } from '../../../utils/object.js';\nexport function createRealSymmetric(_ref) {\n var {\n config,\n addScalar,\n subtract,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n inv,\n bignumber,\n multiply,\n add\n } = _ref;\n\n /**\n * @param {number[] | BigNumber[]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number' | 'BigNumber'} type\n */\n function main(arr, N) {\n var prec = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : config.epsilon;\n var type = arguments.length > 3 ? arguments[3] : undefined;\n\n if (type === 'number') {\n return diag(arr, prec);\n }\n\n if (type === 'BigNumber') {\n return diagBig(arr, prec);\n }\n\n throw TypeError('Unsupported data type: ' + type);\n } // diagonalization implementation for number (efficient)\n\n\n function diag(x, precision) {\n var N = x.length;\n var e0 = Math.abs(precision / N);\n var psi;\n var Sij = new Array(N); // Sij is Identity Matrix\n\n for (var i = 0; i < N; i++) {\n Sij[i] = createArray(N, 0);\n Sij[i][i] = 1.0;\n } // initial error\n\n\n var Vab = getAij(x);\n\n while (Math.abs(Vab[1]) >= Math.abs(e0)) {\n var _i = Vab[0][0];\n var j = Vab[0][1];\n psi = getTheta(x[_i][_i], x[j][j], x[_i][j]);\n x = x1(x, psi, _i, j);\n Sij = Sij1(Sij, psi, _i, j);\n Vab = getAij(x);\n }\n\n var Ei = createArray(N, 0); // eigenvalues\n\n for (var _i2 = 0; _i2 < N; _i2++) {\n Ei[_i2] = x[_i2][_i2];\n }\n\n return sorting(clone(Ei), clone(Sij));\n } // diagonalization implementation for bigNumber\n\n\n function diagBig(x, precision) {\n var N = x.length;\n var e0 = abs(precision / N);\n var psi;\n var Sij = new Array(N); // Sij is Identity Matrix\n\n for (var i = 0; i < N; i++) {\n Sij[i] = createArray(N, 0);\n Sij[i][i] = 1.0;\n } // initial error\n\n\n var Vab = getAijBig(x);\n\n while (abs(Vab[1]) >= abs(e0)) {\n var _i3 = Vab[0][0];\n var j = Vab[0][1];\n psi = getThetaBig(x[_i3][_i3], x[j][j], x[_i3][j]);\n x = x1Big(x, psi, _i3, j);\n Sij = Sij1Big(Sij, psi, _i3, j);\n Vab = getAijBig(x);\n }\n\n var Ei = createArray(N, 0); // eigenvalues\n\n for (var _i4 = 0; _i4 < N; _i4++) {\n Ei[_i4] = x[_i4][_i4];\n } // return [clone(Ei), clone(Sij)]\n\n\n return sorting(clone(Ei), clone(Sij));\n } // get angle\n\n\n function getTheta(aii, ajj, aij) {\n var denom = ajj - aii;\n\n if (Math.abs(denom) <= config.epsilon) {\n return Math.PI / 4.0;\n } else {\n return 0.5 * Math.atan(2.0 * aij / (ajj - aii));\n }\n } // get angle\n\n\n function getThetaBig(aii, ajj, aij) {\n var denom = subtract(ajj, aii);\n\n if (abs(denom) <= config.epsilon) {\n return bignumber(-1).acos().div(4);\n } else {\n return multiplyScalar(0.5, atan(multiply(2.0, aij, inv(denom))));\n }\n } // update eigvec\n\n\n function Sij1(Sij, theta, i, j) {\n var N = Sij.length;\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var Ski = createArray(N, 0);\n var Skj = createArray(N, 0);\n\n for (var k = 0; k < N; k++) {\n Ski[k] = c * Sij[k][i] - s * Sij[k][j];\n Skj[k] = s * Sij[k][i] + c * Sij[k][j];\n }\n\n for (var _k = 0; _k < N; _k++) {\n Sij[_k][i] = Ski[_k];\n Sij[_k][j] = Skj[_k];\n }\n\n return Sij;\n } // update eigvec for overlap\n\n\n function Sij1Big(Sij, theta, i, j) {\n var N = Sij.length;\n var c = cos(theta);\n var s = sin(theta);\n var Ski = createArray(N, bignumber(0));\n var Skj = createArray(N, bignumber(0));\n\n for (var k = 0; k < N; k++) {\n Ski[k] = subtract(multiplyScalar(c, Sij[k][i]), multiplyScalar(s, Sij[k][j]));\n Skj[k] = addScalar(multiplyScalar(s, Sij[k][i]), multiplyScalar(c, Sij[k][j]));\n }\n\n for (var _k2 = 0; _k2 < N; _k2++) {\n Sij[_k2][i] = Ski[_k2];\n Sij[_k2][j] = Skj[_k2];\n }\n\n return Sij;\n } // update matrix\n\n\n function x1Big(Hij, theta, i, j) {\n var N = Hij.length;\n var c = bignumber(cos(theta));\n var s = bignumber(sin(theta));\n var c2 = multiplyScalar(c, c);\n var s2 = multiplyScalar(s, s);\n var Aki = createArray(N, bignumber(0));\n var Akj = createArray(N, bignumber(0)); // 2cs Hij\n\n var csHij = multiply(bignumber(2), c, s, Hij[i][j]); // Aii\n\n var Aii = addScalar(subtract(multiplyScalar(c2, Hij[i][i]), csHij), multiplyScalar(s2, Hij[j][j]));\n var Ajj = add(multiplyScalar(s2, Hij[i][i]), csHij, multiplyScalar(c2, Hij[j][j])); // 0 to i\n\n for (var k = 0; k < N; k++) {\n Aki[k] = subtract(multiplyScalar(c, Hij[i][k]), multiplyScalar(s, Hij[j][k]));\n Akj[k] = addScalar(multiplyScalar(s, Hij[i][k]), multiplyScalar(c, Hij[j][k]));\n } // Modify Hij\n\n\n Hij[i][i] = Aii;\n Hij[j][j] = Ajj;\n Hij[i][j] = bignumber(0);\n Hij[j][i] = bignumber(0); // 0 to i\n\n for (var _k3 = 0; _k3 < N; _k3++) {\n if (_k3 !== i && _k3 !== j) {\n Hij[i][_k3] = Aki[_k3];\n Hij[_k3][i] = Aki[_k3];\n Hij[j][_k3] = Akj[_k3];\n Hij[_k3][j] = Akj[_k3];\n }\n }\n\n return Hij;\n } // update matrix\n\n\n function x1(Hij, theta, i, j) {\n var N = Hij.length;\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var c2 = c * c;\n var s2 = s * s;\n var Aki = createArray(N, 0);\n var Akj = createArray(N, 0); // Aii\n\n var Aii = c2 * Hij[i][i] - 2 * c * s * Hij[i][j] + s2 * Hij[j][j];\n var Ajj = s2 * Hij[i][i] + 2 * c * s * Hij[i][j] + c2 * Hij[j][j]; // 0 to i\n\n for (var k = 0; k < N; k++) {\n Aki[k] = c * Hij[i][k] - s * Hij[j][k];\n Akj[k] = s * Hij[i][k] + c * Hij[j][k];\n } // Modify Hij\n\n\n Hij[i][i] = Aii;\n Hij[j][j] = Ajj;\n Hij[i][j] = 0;\n Hij[j][i] = 0; // 0 to i\n\n for (var _k4 = 0; _k4 < N; _k4++) {\n if (_k4 !== i && _k4 !== j) {\n Hij[i][_k4] = Aki[_k4];\n Hij[_k4][i] = Aki[_k4];\n Hij[j][_k4] = Akj[_k4];\n Hij[_k4][j] = Akj[_k4];\n }\n }\n\n return Hij;\n } // get max off-diagonal value from Upper Diagonal\n\n\n function getAij(Mij) {\n var N = Mij.length;\n var maxMij = 0;\n var maxIJ = [0, 1];\n\n for (var i = 0; i < N; i++) {\n for (var j = i + 1; j < N; j++) {\n if (Math.abs(maxMij) < Math.abs(Mij[i][j])) {\n maxMij = Math.abs(Mij[i][j]);\n maxIJ = [i, j];\n }\n }\n }\n\n return [maxIJ, maxMij];\n } // get max off-diagonal value from Upper Diagonal\n\n\n function getAijBig(Mij) {\n var N = Mij.length;\n var maxMij = 0;\n var maxIJ = [0, 1];\n\n for (var i = 0; i < N; i++) {\n for (var j = i + 1; j < N; j++) {\n if (abs(maxMij) < abs(Mij[i][j])) {\n maxMij = abs(Mij[i][j]);\n maxIJ = [i, j];\n }\n }\n }\n\n return [maxIJ, maxMij];\n } // sort results\n\n\n function sorting(E, S) {\n var N = E.length;\n var values = Array(N);\n var vectors = Array(N);\n\n for (var k = 0; k < N; k++) {\n vectors[k] = Array(N);\n }\n\n for (var i = 0; i < N; i++) {\n var minID = 0;\n var minE = E[0];\n\n for (var j = 0; j < E.length; j++) {\n if (abs(E[j]) < abs(minE)) {\n minID = j;\n minE = E[minID];\n }\n }\n\n values[i] = E.splice(minID, 1)[0];\n\n for (var _k5 = 0; _k5 < N; _k5++) {\n vectors[_k5][i] = S[_k5][minID];\n\n S[_k5].splice(minID, 1);\n }\n }\n\n return {\n values,\n vectors\n };\n }\n /**\n * Create an array of a certain size and fill all items with an initial value\n * @param {number} size\n * @param {number} value\n * @return {number[]}\n */\n\n\n function createArray(size, value) {\n // TODO: as soon as all browsers support Array.fill, use that instead (IE doesn't support it)\n var array = new Array(size);\n\n for (var i = 0; i < size; i++) {\n array[i] = value;\n }\n\n return array;\n }\n\n return main;\n}","import { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nimport { createComplexEigs } from './eigs/complexEigs.js';\nimport { createRealSymmetric } from './eigs/realSymetric.js';\nimport { typeOf, isNumber, isBigNumber, isComplex, isFraction } from '../../utils/is.js';\nvar name = 'eigs'; // The absolute state of math.js's dependency system:\n\nvar dependencies = ['config', 'typed', 'matrix', 'addScalar', 'equal', 'subtract', 'abs', 'atan', 'cos', 'sin', 'multiplyScalar', 'divideScalar', 'inv', 'bignumber', 'multiply', 'add', 'larger', 'column', 'flatten', 'number', 'complex', 'sqrt', 'diag', 'qr', 'usolve', 'usolveAll', 'im', 're', 'smaller', 'matrixFromColumns', 'dot'];\nexport var createEigs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n matrix,\n addScalar,\n subtract,\n equal,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n divideScalar,\n inv,\n bignumber,\n multiply,\n add,\n larger,\n column,\n flatten,\n number,\n complex,\n sqrt,\n diag,\n qr,\n usolve,\n usolveAll,\n im,\n re,\n smaller,\n matrixFromColumns,\n dot\n } = _ref;\n var doRealSymetric = createRealSymmetric({\n config,\n addScalar,\n subtract,\n column,\n flatten,\n equal,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n inv,\n bignumber,\n complex,\n multiply,\n add\n });\n var doComplexEigs = createComplexEigs({\n config,\n addScalar,\n subtract,\n multiply,\n multiplyScalar,\n flatten,\n divideScalar,\n sqrt,\n abs,\n bignumber,\n diag,\n qr,\n inv,\n usolve,\n usolveAll,\n equal,\n complex,\n larger,\n smaller,\n matrixFromColumns,\n dot\n });\n /**\n * Compute eigenvalues and eigenvectors of a matrix. The eigenvalues are sorted by their absolute value, ascending.\n * An eigenvalue with multiplicity k will be listed k times. The eigenvectors are returned as columns of a matrix –\n * the eigenvector that belongs to the j-th eigenvalue in the list (eg. `values[j]`) is the j-th column (eg. `column(vectors, j)`).\n * If the algorithm fails to converge, it will throw an error – in that case, however, you may still find useful information\n * in `err.values` and `err.vectors`.\n *\n * Syntax:\n *\n * math.eigs(x, [prec])\n *\n * Examples:\n *\n * const { eigs, multiply, column, transpose } = math\n * const H = [[5, 2.3], [2.3, 1]]\n * const ans = eigs(H) // returns {values: [E1,E2...sorted], vectors: [v1,v2.... corresponding vectors as columns]}\n * const E = ans.values\n * const U = ans.vectors\n * multiply(H, column(U, 0)) // returns multiply(E[0], column(U, 0))\n * const UTxHxU = multiply(transpose(U), H, U) // diagonalizes H\n * E[0] == UTxHxU[0][0] // returns true\n *\n * See also:\n *\n * inv\n *\n * @param {Array | Matrix} x Matrix to be diagonalized\n *\n * @param {number | BigNumber} [prec] Precision, default value: 1e-15\n * @return {{values: Array|Matrix, vectors: Array|Matrix}} Object containing an array of eigenvalues and a matrix with eigenvectors as columns.\n *\n */\n\n return typed('eigs', {\n Array: function Array(x) {\n var mat = matrix(x);\n return computeValuesAndVectors(mat);\n },\n 'Array, number|BigNumber': function ArrayNumberBigNumber(x, prec) {\n var mat = matrix(x);\n return computeValuesAndVectors(mat, prec);\n },\n Matrix: function Matrix(mat) {\n var {\n values,\n vectors\n } = computeValuesAndVectors(mat);\n return {\n values: matrix(values),\n vectors: matrix(vectors)\n };\n },\n 'Matrix, number|BigNumber': function MatrixNumberBigNumber(mat, prec) {\n var {\n values,\n vectors\n } = computeValuesAndVectors(mat, prec);\n return {\n values: matrix(values),\n vectors: matrix(vectors)\n };\n }\n });\n\n function computeValuesAndVectors(mat, prec) {\n if (prec === undefined) {\n prec = config.epsilon;\n }\n\n var size = mat.size();\n\n if (size.length !== 2 || size[0] !== size[1]) {\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n\n var arr = mat.toArray();\n var N = size[0];\n\n if (isReal(arr, N, prec)) {\n coerceReal(arr, N);\n\n if (isSymmetric(arr, N, prec)) {\n var _type = coerceTypes(mat, arr, N);\n\n return doRealSymetric(arr, N, prec, _type);\n }\n }\n\n var type = coerceTypes(mat, arr, N);\n return doComplexEigs(arr, N, prec, type);\n }\n /** @return {boolean} */\n\n\n function isSymmetric(arr, N, prec) {\n for (var i = 0; i < N; i++) {\n for (var j = i; j < N; j++) {\n // TODO proper comparison of bignum and frac\n if (larger(bignumber(abs(subtract(arr[i][j], arr[j][i]))), prec)) {\n return false;\n }\n }\n }\n\n return true;\n }\n /** @return {boolean} */\n\n\n function isReal(arr, N, prec) {\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n // TODO proper comparison of bignum and frac\n if (larger(bignumber(abs(im(arr[i][j]))), prec)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n function coerceReal(arr, N) {\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n arr[i][j] = re(arr[i][j]);\n }\n }\n }\n /** @return {'number' | 'BigNumber' | 'Complex'} */\n\n\n function coerceTypes(mat, arr, N) {\n /** @type {string} */\n var type = mat.datatype();\n\n if (type === 'number' || type === 'BigNumber' || type === 'Complex') {\n return type;\n }\n\n var hasNumber = false;\n var hasBig = false;\n var hasComplex = false;\n\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n var el = arr[i][j];\n\n if (isNumber(el) || isFraction(el)) {\n hasNumber = true;\n } else if (isBigNumber(el)) {\n hasBig = true;\n } else if (isComplex(el)) {\n hasComplex = true;\n } else {\n throw TypeError('Unsupported type in Matrix: ' + typeOf(el));\n }\n }\n }\n\n if (hasBig && hasComplex) {\n console.warn('Complex BigNumbers not supported, this operation will lose precission.');\n }\n\n if (hasComplex) {\n for (var _i = 0; _i < N; _i++) {\n for (var _j = 0; _j < N; _j++) {\n arr[_i][_j] = complex(arr[_i][_j]);\n }\n }\n\n return 'Complex';\n }\n\n if (hasBig) {\n for (var _i2 = 0; _i2 < N; _i2++) {\n for (var _j2 = 0; _j2 < N; _j2++) {\n arr[_i2][_j2] = bignumber(arr[_i2][_j2]);\n }\n }\n\n return 'BigNumber';\n }\n\n if (hasNumber) {\n for (var _i3 = 0; _i3 < N; _i3++) {\n for (var _j3 = 0; _j3 < N; _j3++) {\n arr[_i3][_j3] = number(arr[_i3][_j3]);\n }\n }\n\n return 'number';\n } else {\n throw TypeError('Matrix contains unsupported types only.');\n }\n }\n});","import { isSparseMatrix } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'expm';\nvar dependencies = ['typed', 'abs', 'add', 'identity', 'inv', 'multiply'];\nexport var createExpm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n identity,\n inv,\n multiply\n } = _ref;\n\n /**\n * Compute the matrix exponential, expm(A) = e^A. The matrix must be square.\n * Not to be confused with exp(a), which performs element-wise\n * exponentiation.\n *\n * The exponential is calculated using the Padé approximant with scaling and\n * squaring; see \"Nineteen Dubious Ways to Compute the Exponential of a\n * Matrix,\" by Moler and Van Loan.\n *\n * Syntax:\n *\n * math.expm(x)\n *\n * Examples:\n *\n * const A = [[0,2],[0,0]]\n * math.expm(A) // returns [[1,2],[0,1]]\n *\n * See also:\n *\n * exp\n *\n * @param {Matrix} x A square Matrix\n * @return {Matrix} The exponential of x\n */\n return typed(name, {\n Matrix: function Matrix(A) {\n // Check matrix size\n var size = A.size();\n\n if (size.length !== 2 || size[0] !== size[1]) {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n\n var n = size[0]; // Desired accuracy of the approximant (The actual accuracy\n // will be affected by round-off error)\n\n var eps = 1e-15; // The Padé approximant is not so accurate when the values of A\n // are \"large\", so scale A by powers of two. Then compute the\n // exponential, and square the result repeatedly according to\n // the identity e^A = (e^(A/m))^m\n // Compute infinity-norm of A, ||A||, to see how \"big\" it is\n\n var infNorm = infinityNorm(A); // Find the optimal scaling factor and number of terms in the\n // Padé approximant to reach the desired accuracy\n\n var params = findParams(infNorm, eps);\n var q = params.q;\n var j = params.j; // The Pade approximation to e^A is:\n // Rqq(A) = Dqq(A) ^ -1 * Nqq(A)\n // where\n // Nqq(A) = sum(i=0, q, (2q-i)!p! / [ (2q)!i!(q-i)! ] A^i\n // Dqq(A) = sum(i=0, q, (2q-i)!q! / [ (2q)!i!(q-i)! ] (-A)^i\n // Scale A by 1 / 2^j\n\n var Apos = multiply(A, Math.pow(2, -j)); // The i=0 term is just the identity matrix\n\n var N = identity(n);\n var D = identity(n); // Initialization (i=0)\n\n var factor = 1; // Initialization (i=1)\n\n var AposToI = Apos; // Cloning not necessary\n\n var alternate = -1;\n\n for (var i = 1; i <= q; i++) {\n if (i > 1) {\n AposToI = multiply(AposToI, Apos);\n alternate = -alternate;\n }\n\n factor = factor * (q - i + 1) / ((2 * q - i + 1) * i);\n N = add(N, multiply(factor, AposToI));\n D = add(D, multiply(factor * alternate, AposToI));\n }\n\n var R = multiply(inv(D), N); // Square j times\n\n for (var _i = 0; _i < j; _i++) {\n R = multiply(R, R);\n }\n\n return isSparseMatrix(A) ? A.createSparseMatrix(R) : R;\n }\n });\n\n function infinityNorm(A) {\n var n = A.size()[0];\n var infNorm = 0;\n\n for (var i = 0; i < n; i++) {\n var rowSum = 0;\n\n for (var j = 0; j < n; j++) {\n rowSum += abs(A.get([i, j]));\n }\n\n infNorm = Math.max(rowSum, infNorm);\n }\n\n return infNorm;\n }\n /**\n * Find the best parameters for the Pade approximant given\n * the matrix norm and desired accuracy. Returns the first acceptable\n * combination in order of increasing computational load.\n */\n\n\n function findParams(infNorm, eps) {\n var maxSearchSize = 30;\n\n for (var k = 0; k < maxSearchSize; k++) {\n for (var q = 0; q <= k; q++) {\n var j = k - q;\n\n if (errorEstimate(infNorm, q, j) < eps) {\n return {\n q: q,\n j: j\n };\n }\n }\n }\n\n throw new Error('Could not find acceptable parameters to compute the matrix exponential (try increasing maxSearchSize in expm.js)');\n }\n /**\n * Returns the estimated error of the Pade approximant for the given\n * parameters.\n */\n\n\n function errorEstimate(infNorm, q, j) {\n var qfac = 1;\n\n for (var i = 2; i <= q; i++) {\n qfac *= i;\n }\n\n var twoqfac = qfac;\n\n for (var _i2 = q + 1; _i2 <= 2 * q; _i2++) {\n twoqfac *= _i2;\n }\n\n var twoqp1fac = twoqfac * (2 * q + 1);\n return 8.0 * Math.pow(infNorm / Math.pow(2, j), 2 * q) * qfac * qfac / (twoqfac * twoqp1fac);\n }\n});","import { isMatrix } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'sqrtm';\nvar dependencies = ['typed', 'abs', 'add', 'multiply', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];\nexport var createSqrtm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n multiply,\n sqrt,\n subtract,\n inv,\n size,\n max,\n identity\n } = _ref;\n var _maxIterations = 1e3;\n var _tolerance = 1e-6;\n /**\n * Calculate the principal square root matrix using the Denman–Beavers iterative method\n *\n * https://en.wikipedia.org/wiki/Square_root_of_a_matrix#By_Denman–Beavers_iteration\n *\n * @param {Array | Matrix} A The square matrix `A`\n * @return {Array | Matrix} The principal square root of matrix `A`\n * @private\n */\n\n function _denmanBeavers(A) {\n var error;\n var iterations = 0;\n var Y = A;\n var Z = identity(size(A));\n\n do {\n var Yk = Y;\n Y = multiply(0.5, add(Yk, inv(Z)));\n Z = multiply(0.5, add(Z, inv(Yk)));\n error = max(abs(subtract(Y, Yk)));\n\n if (error > _tolerance && ++iterations > _maxIterations) {\n throw new Error('computing square root of matrix: iterative method could not converge');\n }\n } while (error > _tolerance);\n\n return Y;\n }\n /**\n * Calculate the principal square root of a square matrix.\n * The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.\n *\n * https://en.wikipedia.org/wiki/Square_root_of_a_matrix\n *\n * Syntax:\n *\n * X = math.sqrtm(A)\n *\n * Examples:\n *\n * math.sqrtm([[1, 2], [3, 4]]) // returns [[-2, 1], [1.5, -0.5]]\n *\n * See also:\n *\n * sqrt, pow\n *\n * @param {Array | Matrix} A The square matrix `A`\n * @return {Array | Matrix} The principal square root of matrix `A`\n */\n\n\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(A) {\n var size = isMatrix(A) ? A.size() : arraySize(A);\n\n switch (size.length) {\n case 1:\n // Single element Array | Matrix\n if (size[0] === 1) {\n return sqrt(A);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n\n case 2:\n {\n // Two-dimensional Array | Matrix\n var rows = size[0];\n var cols = size[1];\n\n if (rows === cols) {\n return _denmanBeavers(A);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n\n default:\n // Multi dimensional array\n throw new RangeError('Matrix must be at most two dimensional ' + '(size: ' + format(size) + ')');\n }\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { extend } from '../../utils/object.js';\nimport { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';\nimport { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';\nvar name = 'divide';\nvar dependencies = ['typed', 'matrix', 'multiply', 'equalScalar', 'divideScalar', 'inv'];\nexport var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n multiply,\n equalScalar,\n divideScalar,\n inv\n } = _ref;\n var algorithm11 = createAlgorithm11({\n typed,\n equalScalar\n });\n var algorithm14 = createAlgorithm14({\n typed\n });\n /**\n * Divide two values, `x / y`.\n * To divide matrices, `x` is multiplied with the inverse of `y`: `x * inv(y)`.\n *\n * Syntax:\n *\n * math.divide(x, y)\n *\n * Examples:\n *\n * math.divide(2, 3) // returns number 0.6666666666666666\n *\n * const a = math.complex(5, 14)\n * const b = math.complex(4, 1)\n * math.divide(a, b) // returns Complex 2 + 3i\n *\n * const c = [[7, -6], [13, -4]]\n * const d = [[1, 2], [4, 3]]\n * math.divide(c, d) // returns Array [[-9, 4], [-11, 6]]\n *\n * const e = math.unit('18 km')\n * math.divide(e, 4.5) // returns Unit 4 km\n *\n * See also:\n *\n * multiply\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Numerator\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} y Denominator\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Quotient, `x / y`\n */\n\n return typed('divide', extend({\n // we extend the signatures of divideScalar with signatures dealing with matrices\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(x, y) {\n // TODO: implement matrix right division using pseudo inverse\n // https://www.mathworks.nl/help/matlab/ref/mrdivide.html\n // https://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html\n // https://stackoverflow.com/questions/12263932/how-does-gnu-octave-matrix-division-work-getting-unexpected-behaviour\n return multiply(x, inv(y));\n },\n 'DenseMatrix, any': function DenseMatrixAny(x, y) {\n return algorithm14(x, y, divideScalar, false);\n },\n 'SparseMatrix, any': function SparseMatrixAny(x, y) {\n return algorithm11(x, y, divideScalar, false);\n },\n 'Array, any': function ArrayAny(x, y) {\n // use matrix implementation\n return algorithm14(matrix(x), y, divideScalar, false).valueOf();\n },\n 'any, Array | Matrix': function anyArrayMatrix(x, y) {\n return multiply(x, inv(y));\n }\n }, divideScalar.signatures));\n});","import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'distance';\nvar dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'unaryMinus', 'sqrt', 'abs'];\nexport var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n subtract,\n multiplyScalar,\n divideScalar,\n unaryMinus,\n sqrt,\n abs\n } = _ref;\n\n /**\n * Calculates:\n * The eucledian distance between two points in N-dimensional spaces.\n * Distance between point and a line in 2 and 3 dimensional spaces.\n * Pairwise distance between a set of 2D or 3D points\n * NOTE:\n * When substituting coefficients of a line(a, b and c), use ax + by + c = 0 instead of ax + by = c\n * For parametric equation of a 3D line, x0, y0, z0, a, b, c are from: (x−x0, y−y0, z−z0) = t(a, b, c)\n *\n * Syntax:\n * math.distance([x1, y1], [x2, y2])\n *- math.distance({pointOneX: 4, pointOneY: 5}, {pointTwoX: 2, pointTwoY: 7})\n * math.distance([x1, y1, z1], [x2, y2, z2])\n * math.distance({pointOneX: 4, pointOneY: 5, pointOneZ: 8}, {pointTwoX: 2, pointTwoY: 7, pointTwoZ: 9})\n * math.distance([x1, y1, ... , N1], [x2, y2, ... , N2])\n * math.distance([[A], [B], [C]...])\n * math.distance([x1, y1], [LinePtX1, LinePtY1], [LinePtX2, LinePtY2])\n * math.distance({pointX: 1, pointY: 4}, {lineOnePtX: 6, lineOnePtY: 3}, {lineTwoPtX: 2, lineTwoPtY: 8})\n * math.distance([x1, y1, z1], [LinePtX1, LinePtY1, LinePtZ1], [LinePtX2, LinePtY2, LinePtZ2])\n * math.distance({pointX: 1, pointY: 4, pointZ: 7}, {lineOnePtX: 6, lineOnePtY: 3, lineOnePtZ: 4}, {lineTwoPtX: 2, lineTwoPtY: 8, lineTwoPtZ: 5})\n * math.distance([x1, y1], [xCoeffLine, yCoeffLine, constant])\n * math.distance({pointX: 10, pointY: 10}, {xCoeffLine: 8, yCoeffLine: 1, constant: 3})\n * math.distance([x1, y1, z1], [x0, y0, z0, a-tCoeff, b-tCoeff, c-tCoeff]) point and parametric equation of 3D line\n * math.distance([x, y, z], [x0, y0, z0, a, b, c])\n * math.distance({pointX: 2, pointY: 5, pointZ: 9}, {x0: 4, y0: 6, z0: 3, a: 4, b: 2, c: 0})\n *\n * Examples:\n * math.distance([0,0], [4,4]) // Returns 5.6569\n * math.distance(\n * {pointOneX: 0, pointOneY: 0},\n * {pointTwoX: 10, pointTwoY: 10}) // Returns 14.142135623730951\n * math.distance([1, 0, 1], [4, -2, 2]) // Returns 3.74166\n * math.distance(\n * {pointOneX: 4, pointOneY: 5, pointOneZ: 8},\n * {pointTwoX: 2, pointTwoY: 7, pointTwoZ: 9}) // Returns 3\n * math.distance([1, 0, 1, 0], [0, -1, 0, -1]) // Returns 2\n * math.distance([[1, 2], [1, 2], [1, 3]]) // Returns [0, 1, 1]\n * math.distance([[1,2,4], [1,2,6], [8,1,3]]) // Returns [2, 7.14142842854285, 7.681145747868608]\n * math.distance([10, 10], [8, 1, 3]) // Returns 11.535230316796387\n * math.distance([10, 10], [2, 3], [-8, 0]) // Returns 8.759953130362847\n * math.distance(\n * {pointX: 1, pointY: 4},\n * {lineOnePtX: 6, lineOnePtY: 3},\n * {lineTwoPtX: 2, lineTwoPtY: 8}) // Returns 2.720549372624744\n * math.distance([2, 3, 1], [1, 1, 2, 5, 0, 1]) // Returns 2.3204774044612857\n * math.distance(\n * {pointX: 2, pointY: 3, pointZ: 1},\n * {x0: 1, y0: 1, z0: 2, a: 5, b: 0, c: 1} // Returns 2.3204774044612857\n *\n * @param {Array | Matrix | Object} x Co-ordinates of first point\n * @param {Array | Matrix | Object} y Co-ordinates of second point\n * @return {Number | BigNumber} Returns the distance from two/three points\n */\n return typed(name, {\n 'Array, Array, Array': function ArrayArrayArray(x, y, z) {\n // Point to Line 2D (x=Point, y=LinePoint1, z=LinePoint2)\n if (x.length === 2 && y.length === 2 && z.length === 2) {\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n\n if (!_2d(y)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');\n }\n\n if (!_2d(z)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');\n }\n\n var m = divideScalar(subtract(z[1], z[0]), subtract(y[1], y[0]));\n var xCoeff = multiplyScalar(multiplyScalar(m, m), y[0]);\n var yCoeff = unaryMinus(multiplyScalar(m, y[0]));\n var constant = x[1];\n return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Object, Object, Object': function ObjectObjectObject(x, y, z) {\n if (Object.keys(x).length === 2 && Object.keys(y).length === 2 && Object.keys(z).length === 2) {\n if (!_2d(x)) {\n throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');\n }\n\n if (!_2d(y)) {\n throw new TypeError('Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers');\n }\n\n if (!_2d(z)) {\n throw new TypeError('Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers');\n }\n\n if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {\n var m = divideScalar(subtract(z.lineTwoPtY, z.lineTwoPtX), subtract(y.lineOnePtY, y.lineOnePtX));\n var xCoeff = multiplyScalar(multiplyScalar(m, m), y.lineOnePtX);\n var yCoeff = unaryMinus(multiplyScalar(m, y.lineOnePtX));\n var constant = x.pointX;\n return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Array, Array': function ArrayArray(x, y) {\n // Point to Line 2D (x=[pointX, pointY], y=[x-coeff, y-coeff, const])\n if (x.length === 2 && y.length === 3) {\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n\n return _distancePointLine2D(x[0], x[1], y[0], y[1], y[2]);\n } else if (x.length === 3 && y.length === 6) {\n // Point to Line 3D\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n\n if (!_parametricLine(y)) {\n throw new TypeError('Array with 6 numbers or BigNumbers expected for second argument');\n }\n\n return _distancePointLine3D(x[0], x[1], x[2], y[0], y[1], y[2], y[3], y[4], y[5]);\n } else if (x.length === y.length && x.length > 0) {\n // Point to Point N-dimensions\n if (!_containsOnlyNumbers(x)) {\n throw new TypeError('All values of an array should be numbers or BigNumbers');\n }\n\n if (!_containsOnlyNumbers(y)) {\n throw new TypeError('All values of an array should be numbers or BigNumbers');\n }\n\n return _euclideanDistance(x, y);\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Object, Object': function ObjectObject(x, y) {\n if (Object.keys(x).length === 2 && Object.keys(y).length === 3) {\n if (!_2d(x)) {\n throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');\n }\n\n if (!_3d(y)) {\n throw new TypeError('Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers');\n }\n\n if ('pointX' in x && 'pointY' in x && 'xCoeffLine' in y && 'yCoeffLine' in y && 'constant' in y) {\n return _distancePointLine2D(x.pointX, x.pointY, y.xCoeffLine, y.yCoeffLine, y.constant);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 3 && Object.keys(y).length === 6) {\n // Point to Line 3D\n if (!_3d(x)) {\n throw new TypeError('Values of pointX, pointY and pointZ should be numbers or BigNumbers');\n }\n\n if (!_parametricLine(y)) {\n throw new TypeError('Values of x0, y0, z0, a, b and c should be numbers or BigNumbers');\n }\n\n if ('pointX' in x && 'pointY' in x && 'x0' in y && 'y0' in y && 'z0' in y && 'a' in y && 'b' in y && 'c' in y) {\n return _distancePointLine3D(x.pointX, x.pointY, x.pointZ, y.x0, y.y0, y.z0, y.a, y.b, y.c);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 2 && Object.keys(y).length === 2) {\n // Point to Point 2D\n if (!_2d(x)) {\n throw new TypeError('Values of pointOneX and pointOneY should be numbers or BigNumbers');\n }\n\n if (!_2d(y)) {\n throw new TypeError('Values of pointTwoX and pointTwoY should be numbers or BigNumbers');\n }\n\n if ('pointOneX' in x && 'pointOneY' in x && 'pointTwoX' in y && 'pointTwoY' in y) {\n return _euclideanDistance([x.pointOneX, x.pointOneY], [y.pointTwoX, y.pointTwoY]);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 3 && Object.keys(y).length === 3) {\n // Point to Point 3D\n if (!_3d(x)) {\n throw new TypeError('Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers');\n }\n\n if (!_3d(y)) {\n throw new TypeError('Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers');\n }\n\n if ('pointOneX' in x && 'pointOneY' in x && 'pointOneZ' in x && 'pointTwoX' in y && 'pointTwoY' in y && 'pointTwoZ' in y) {\n return _euclideanDistance([x.pointOneX, x.pointOneY, x.pointOneZ], [y.pointTwoX, y.pointTwoY, y.pointTwoZ]);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n Array: function Array(arr) {\n if (!_pairwise(arr)) {\n throw new TypeError('Incorrect array format entered for pairwise distance calculation');\n }\n\n return _distancePairwise(arr);\n }\n });\n\n function _isNumber(a) {\n // distance supports numbers and bignumbers\n return typeof a === 'number' || isBigNumber(a);\n }\n\n function _2d(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n\n return _isNumber(a[0]) && _isNumber(a[1]);\n }\n\n function _3d(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n\n return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]);\n }\n\n function _containsOnlyNumbers(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (!Array.isArray(a)) {\n a = _objectToArray(a);\n }\n\n return a.every(_isNumber);\n }\n\n function _parametricLine(a) {\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n\n return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]) && _isNumber(a[3]) && _isNumber(a[4]) && _isNumber(a[5]);\n }\n\n function _objectToArray(o) {\n var keys = Object.keys(o);\n var a = [];\n\n for (var i = 0; i < keys.length; i++) {\n a.push(o[keys[i]]);\n }\n\n return a;\n }\n\n function _pairwise(a) {\n // checks for valid arguments passed to _distancePairwise(Array)\n if (a[0].length === 2 && _isNumber(a[0][0]) && _isNumber(a[0][1])) {\n if (a.some(aI => aI.length !== 2 || !_isNumber(aI[0]) || !_isNumber(aI[1]))) {\n return false;\n }\n } else if (a[0].length === 3 && _isNumber(a[0][0]) && _isNumber(a[0][1]) && _isNumber(a[0][2])) {\n if (a.some(aI => aI.length !== 3 || !_isNumber(aI[0]) || !_isNumber(aI[1]) || !_isNumber(aI[2]))) {\n return false;\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n function _distancePointLine2D(x, y, a, b, c) {\n var num = abs(addScalar(addScalar(multiplyScalar(a, x), multiplyScalar(b, y)), c));\n var den = sqrt(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)));\n return divideScalar(num, den);\n }\n\n function _distancePointLine3D(x, y, z, x0, y0, z0, a, b, c) {\n var num = [subtract(multiplyScalar(subtract(y0, y), c), multiplyScalar(subtract(z0, z), b)), subtract(multiplyScalar(subtract(z0, z), a), multiplyScalar(subtract(x0, x), c)), subtract(multiplyScalar(subtract(x0, x), b), multiplyScalar(subtract(y0, y), a))];\n num = sqrt(addScalar(addScalar(multiplyScalar(num[0], num[0]), multiplyScalar(num[1], num[1])), multiplyScalar(num[2], num[2])));\n var den = sqrt(addScalar(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)), multiplyScalar(c, c)));\n return divideScalar(num, den);\n }\n\n function _euclideanDistance(x, y) {\n var vectorSize = x.length;\n var result = 0;\n var diff = 0;\n\n for (var i = 0; i < vectorSize; i++) {\n diff = subtract(x[i], y[i]);\n result = addScalar(multiplyScalar(diff, diff), result);\n }\n\n return sqrt(result);\n }\n\n function _distancePairwise(a) {\n var result = [];\n var pointA = [];\n var pointB = [];\n\n for (var i = 0; i < a.length - 1; i++) {\n for (var j = i + 1; j < a.length; j++) {\n if (a[0].length === 2) {\n pointA = [a[i][0], a[i][1]];\n pointB = [a[j][0], a[j][1]];\n } else if (a[0].length === 3) {\n pointA = [a[i][0], a[i][1], a[i][2]];\n pointB = [a[j][0], a[j][1], a[j][2]];\n }\n\n result.push(_euclideanDistance(pointA, pointB));\n }\n }\n\n return result;\n }\n});","import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'intersect';\nvar dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten'];\nexport var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n abs,\n add,\n addScalar,\n matrix,\n multiply,\n multiplyScalar,\n divideScalar,\n subtract,\n smaller,\n equalScalar,\n flatten\n } = _ref;\n\n /**\n * Calculates the point of intersection of two lines in two or three dimensions\n * and of a line and a plane in three dimensions. The inputs are in the form of\n * arrays or 1 dimensional matrices. The line intersection functions return null\n * if the lines do not meet.\n *\n * Note: Fill the plane coefficients as `x + y + z = c` and not as `x + y + z + c = 0`.\n *\n * Syntax:\n *\n * math.intersect(endPoint1Line1, endPoint2Line1, endPoint1Line2, endPoint2Line2)\n * math.intersect(endPoint1, endPoint2, planeCoefficients)\n *\n * Examples:\n *\n * math.intersect([0, 0], [10, 10], [10, 0], [0, 10]) // Returns [5, 5]\n * math.intersect([0, 0, 0], [10, 10, 0], [10, 0, 0], [0, 10, 0]) // Returns [5, 5, 0]\n * math.intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6]) // Returns [7, -4, 3]\n *\n * @param {Array | Matrix} w Co-ordinates of first end-point of first line\n * @param {Array | Matrix} x Co-ordinates of second end-point of first line\n * @param {Array | Matrix} y Co-ordinates of first end-point of second line\n * OR Co-efficients of the plane's equation\n * @param {Array | Matrix} z Co-ordinates of second end-point of second line\n * OR undefined if the calculation is for line and plane\n * @return {Array} Returns the point of intersection of lines/lines-planes\n */\n return typed('intersect', {\n 'Array, Array, Array': _AAA,\n 'Array, Array, Array, Array': _AAAA,\n 'Matrix, Matrix, Matrix': function MatrixMatrixMatrix(x, y, plane) {\n var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());\n\n return arr === null ? null : matrix(arr);\n },\n 'Matrix, Matrix, Matrix, Matrix': function MatrixMatrixMatrixMatrix(w, x, y, z) {\n // TODO: output matrix type should match input matrix type\n var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());\n\n return arr === null ? null : matrix(arr);\n }\n });\n\n function _AAA(x, y, plane) {\n x = _coerceArr(x);\n y = _coerceArr(y);\n plane = _coerceArr(plane);\n\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n\n if (!_4d(plane)) {\n throw new TypeError('Array with 4 numbers expected as third argument');\n }\n\n return _intersectLinePlane(x[0], x[1], x[2], y[0], y[1], y[2], plane[0], plane[1], plane[2], plane[3]);\n }\n\n function _AAAA(w, x, y, z) {\n w = _coerceArr(w);\n x = _coerceArr(x);\n y = _coerceArr(y);\n z = _coerceArr(z);\n\n if (w.length === 2) {\n if (!_2d(w)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');\n }\n\n if (!_2d(y)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');\n }\n\n if (!_2d(z)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for fourth argument');\n }\n\n return _intersect2d(w, x, y, z);\n } else if (w.length === 3) {\n if (!_3d(w)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for third argument');\n }\n\n if (!_3d(z)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for fourth argument');\n }\n\n return _intersect3d(w[0], w[1], w[2], x[0], x[1], x[2], y[0], y[1], y[2], z[0], z[1], z[2]);\n } else {\n throw new TypeError('Arrays with two or thee dimensional points expected');\n }\n }\n /** Coerce row and column 2-dim arrays to 1-dim array */\n\n\n function _coerceArr(arr) {\n // row matrix\n if (arr.length === 1) return arr[0]; // column matrix\n\n if (arr.length > 1 && Array.isArray(arr[0])) {\n if (arr.every(el => Array.isArray(el) && el.length === 1)) return flatten(arr);\n }\n\n return arr;\n }\n\n function _isNumeric(a) {\n // intersect supports numbers and bignumbers\n return typeof a === 'number' || isBigNumber(a);\n }\n\n function _2d(x) {\n return x.length === 2 && _isNumeric(x[0]) && _isNumeric(x[1]);\n }\n\n function _3d(x) {\n return x.length === 3 && _isNumeric(x[0]) && _isNumeric(x[1]) && _isNumeric(x[2]);\n }\n\n function _4d(x) {\n return x.length === 4 && _isNumeric(x[0]) && _isNumeric(x[1]) && _isNumeric(x[2]) && _isNumeric(x[3]);\n }\n\n function _intersect2d(p1a, p1b, p2a, p2b) {\n var o1 = p1a;\n var o2 = p2a;\n var d1 = subtract(o1, p1b);\n var d2 = subtract(o2, p2b);\n var det = subtract(multiplyScalar(d1[0], d2[1]), multiplyScalar(d2[0], d1[1]));\n\n if (smaller(abs(det), config.epsilon)) {\n return null;\n }\n\n var d20o11 = multiplyScalar(d2[0], o1[1]);\n var d21o10 = multiplyScalar(d2[1], o1[0]);\n var d20o21 = multiplyScalar(d2[0], o2[1]);\n var d21o20 = multiplyScalar(d2[1], o2[0]);\n var t = divideScalar(addScalar(subtract(subtract(d20o11, d21o10), d20o21), d21o20), det);\n return add(multiply(d1, t), o1);\n }\n\n function _intersect3dHelper(a, b, c, d, e, f, g, h, i, j, k, l) {\n // (a - b)*(c - d) + (e - f)*(g - h) + (i - j)*(k - l)\n var add1 = multiplyScalar(subtract(a, b), subtract(c, d));\n var add2 = multiplyScalar(subtract(e, f), subtract(g, h));\n var add3 = multiplyScalar(subtract(i, j), subtract(k, l));\n return addScalar(addScalar(add1, add2), add3);\n }\n\n function _intersect3d(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4) {\n var d1343 = _intersect3dHelper(x1, x3, x4, x3, y1, y3, y4, y3, z1, z3, z4, z3);\n\n var d4321 = _intersect3dHelper(x4, x3, x2, x1, y4, y3, y2, y1, z4, z3, z2, z1);\n\n var d1321 = _intersect3dHelper(x1, x3, x2, x1, y1, y3, y2, y1, z1, z3, z2, z1);\n\n var d4343 = _intersect3dHelper(x4, x3, x4, x3, y4, y3, y4, y3, z4, z3, z4, z3);\n\n var d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);\n\n var ta = divideScalar(subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343)), subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321)));\n var tb = divideScalar(addScalar(d1343, multiplyScalar(ta, d4321)), d4343);\n var pax = addScalar(x1, multiplyScalar(ta, subtract(x2, x1)));\n var pay = addScalar(y1, multiplyScalar(ta, subtract(y2, y1)));\n var paz = addScalar(z1, multiplyScalar(ta, subtract(z2, z1)));\n var pbx = addScalar(x3, multiplyScalar(tb, subtract(x4, x3)));\n var pby = addScalar(y3, multiplyScalar(tb, subtract(y4, y3)));\n var pbz = addScalar(z3, multiplyScalar(tb, subtract(z4, z3)));\n\n if (equalScalar(pax, pbx) && equalScalar(pay, pby) && equalScalar(paz, pbz)) {\n return [pax, pay, paz];\n } else {\n return null;\n }\n }\n\n function _intersectLinePlane(x1, y1, z1, x2, y2, z2, x, y, z, c) {\n var x1x = multiplyScalar(x1, x);\n var x2x = multiplyScalar(x2, x);\n var y1y = multiplyScalar(y1, y);\n var y2y = multiplyScalar(y2, y);\n var z1z = multiplyScalar(z1, z);\n var z2z = multiplyScalar(z2, z);\n var numerator = subtract(subtract(subtract(c, x1x), y1y), z1z);\n var denominator = subtract(subtract(subtract(addScalar(addScalar(x2x, y2y), z2z), x1x), y1y), z1z);\n var t = divideScalar(numerator, denominator);\n var px = addScalar(x1, multiplyScalar(t, subtract(x2, x1)));\n var py = addScalar(y1, multiplyScalar(t, subtract(y2, y1)));\n var pz = addScalar(z1, multiplyScalar(t, subtract(z2, z1)));\n return [px, py, pz]; // TODO: Add cases when line is parallel to the plane:\n // (a) no intersection,\n // (b) line contained in plane\n }\n});","import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSum = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n\n /**\n * Compute the sum of a matrix or a list with values.\n * In case of a (multi dimensional) array or matrix, the sum of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.sum(a, b, c, ...)\n * math.sum(A)\n *\n * Examples:\n *\n * math.sum(2, 1, 4, 3) // returns 10\n * math.sum([2, 1, 4, 3]) // returns 10\n * math.sum([[2, 5], [4, 3], [1, 7]]) // returns 22\n *\n * See also:\n *\n * mean, median, min, max, prod, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The sum of all values\n */\n return typed(name, {\n // sum([a, b, c, d, ...])\n 'Array | Matrix': _sum,\n // sum([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': _nsumDim,\n // sum(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function sum');\n }\n\n return _sum(args);\n }\n });\n /**\n * Recursively calculate the sum of an n-dimensional array\n * @param {Array | Matrix} array\n * @return {number} sum\n * @private\n */\n\n function _sum(array) {\n var sum;\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n } catch (err) {\n throw improveErrorMessage(err, 'sum', value);\n }\n }); // make sure returning numeric value: parse a string into a numeric value\n\n if (sum === undefined) {\n sum = numeric(0, config.number);\n }\n\n if (typeof sum === 'string') {\n sum = numeric(sum, config.number);\n }\n\n return sum;\n }\n\n function _nsumDim(array, dim) {\n try {\n var sum = reduce(array, dim, add);\n return sum;\n } catch (err) {\n throw improveErrorMessage(err, 'sum');\n }\n }\n});","import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMean = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n\n /**\n * Compute the mean value of matrix or a list with values.\n * In case of a multi dimensional array, the mean of the flattened array\n * will be calculated. When `dim` is provided, the maximum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.mean(a, b, c, ...)\n * math.mean(A)\n * math.mean(A, dim)\n *\n * Examples:\n *\n * math.mean(2, 1, 4, 3) // returns 2.5\n * math.mean([1, 2.7, 3.2, 4]) // returns 2.725\n *\n * math.mean([[2, 5], [6, 3], [1, 7]], 0) // returns [3, 5]\n * math.mean([[2, 5], [6, 3], [1, 7]], 1) // returns [3.5, 4.5, 4]\n *\n * See also:\n *\n * median, min, max, sum, prod, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The mean of all values\n */\n return typed(name, {\n // mean([a, b, c, d, ...])\n 'Array | Matrix': _mean,\n // mean([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': _nmeanDim,\n // mean(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function mean');\n }\n\n return _mean(args);\n }\n });\n /**\n * Calculate the mean value in an n-dimensional array, returning a\n * n-1 dimensional array\n * @param {Array} array\n * @param {number} dim\n * @return {number} mean\n * @private\n */\n\n function _nmeanDim(array, dim) {\n try {\n var sum = reduce(array, dim, add);\n var s = Array.isArray(array) ? arraySize(array) : array.size();\n return divide(sum, s[dim]);\n } catch (err) {\n throw improveErrorMessage(err, 'mean');\n }\n }\n /**\n * Recursively calculate the mean value in an n-dimensional array\n * @param {Array} array\n * @return {number} mean\n * @private\n */\n\n\n function _mean(array) {\n var sum;\n var num = 0;\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n num++;\n } catch (err) {\n throw improveErrorMessage(err, 'mean', value);\n }\n });\n\n if (num === 0) {\n throw new Error('Cannot calculate the mean of an empty array');\n }\n\n return divide(sum, num);\n }\n});","import { containsCollections } from '../../utils/collection.js';\nimport { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'median';\nvar dependencies = ['typed', 'add', 'divide', 'compare', 'partitionSelect'];\nexport var createMedian = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide,\n compare,\n partitionSelect\n } = _ref;\n\n /**\n * Recursively calculate the median of an n-dimensional array\n * @param {Array} array\n * @return {Number} median\n * @private\n */\n function _median(array) {\n try {\n array = flatten(array.valueOf());\n var num = array.length;\n\n if (num === 0) {\n throw new Error('Cannot calculate median of an empty array');\n }\n\n if (num % 2 === 0) {\n // even: return the average of the two middle values\n var mid = num / 2 - 1;\n var right = partitionSelect(array, mid + 1); // array now partitioned at mid + 1, take max of left part\n\n var left = array[mid];\n\n for (var i = 0; i < mid; ++i) {\n if (compare(array[i], left) > 0) {\n left = array[i];\n }\n }\n\n return middle2(left, right);\n } else {\n // odd: return the middle value\n var m = partitionSelect(array, (num - 1) / 2);\n return middle(m);\n }\n } catch (err) {\n throw improveErrorMessage(err, 'median');\n }\n } // helper function to type check the middle value of the array\n\n\n var middle = typed({\n 'number | BigNumber | Complex | Unit': function numberBigNumberComplexUnit(value) {\n return value;\n }\n }); // helper function to type check the two middle value of the array\n\n var middle2 = typed({\n 'number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit': function numberBigNumberComplexUnitNumberBigNumberComplexUnit(left, right) {\n return divide(add(left, right), 2);\n }\n });\n /**\n * Compute the median of a matrix or a list with values. The values are\n * sorted and the middle value is returned. In case of an even number of\n * values, the average of the two middle values is returned.\n * Supported types of values are: Number, BigNumber, Unit\n *\n * In case of a (multi dimensional) array or matrix, the median of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.median(a, b, c, ...)\n * math.median(A)\n *\n * Examples:\n *\n * math.median(5, 2, 7) // returns 5\n * math.median([3, -1, 5, 7]) // returns 4\n *\n * See also:\n *\n * mean, min, max, sum, prod, std, variance, quantileSeq\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The median\n */\n\n return typed(name, {\n // median([a, b, c, d, ...])\n 'Array | Matrix': _median,\n // median([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(array, dim) {\n // TODO: implement median(A, dim)\n throw new Error('median(A, dim) is not yet supported'); // return reduce(arguments[0], arguments[1], ...)\n },\n // median(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function median');\n }\n\n return _median(args);\n }\n });\n});","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'mad';\nvar dependencies = ['typed', 'abs', 'map', 'median', 'subtract'];\nexport var createMad = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n map,\n median,\n subtract\n } = _ref;\n\n /**\n * Compute the median absolute deviation of a matrix or a list with values.\n * The median absolute deviation is defined as the median of the absolute\n * deviations from the median.\n *\n * Syntax:\n *\n * math.mad(a, b, c, ...)\n * math.mad(A)\n *\n * Examples:\n *\n * math.mad(10, 20, 30) // returns 10\n * math.mad([1, 2, 3]) // returns 1\n * math.mad([[1, 2, 3], [4, 5, 6]]) // returns 1.5\n *\n * See also:\n *\n * median, mean, std, abs\n *\n * @param {Array | Matrix} array\n * A single matrix or multiple scalar values.\n * @return {*} The median absolute deviation.\n */\n return typed(name, {\n // mad([a, b, c, d, ...])\n 'Array | Matrix': _mad,\n // mad(a, b, c, d, ...)\n '...': function _(args) {\n return _mad(args);\n }\n });\n\n function _mad(array) {\n array = flatten(array.valueOf());\n\n if (array.length === 0) {\n throw new Error('Cannot calculate median absolute deviation (mad) of an empty array');\n }\n\n try {\n var med = median(array);\n return median(map(array, function (value) {\n return abs(subtract(value, med));\n }));\n } catch (err) {\n if (err instanceof TypeError && err.message.indexOf('median') !== -1) {\n throw new TypeError(err.message.replace('median', 'mad'));\n } else {\n throw improveErrorMessage(err, 'mad');\n }\n }\n }\n});","import { deepForEach } from '../../utils/collection.js';\nimport { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar DEFAULT_NORMALIZATION = 'unbiased';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\nexport var createVariance = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n\n /**\n * Compute the variance of a matrix or a list with values.\n * In case of a (multi dimensional) array or matrix, the variance over all\n * elements will be calculated.\n *\n * Additionally, it is possible to compute the variance along the rows\n * or columns of a matrix by specifying the dimension as the second argument.\n *\n * Optionally, the type of normalization can be specified as the final\n * parameter. The parameter `normalization` can be one of the following values:\n *\n * - 'unbiased' (default) The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n *\n *\n * Note that older browser may not like the variable name `var`. In that\n * case, the function can be called as `math['var'](...)` instead of\n * `math.var(...)`.\n *\n * Syntax:\n *\n * math.variance(a, b, c, ...)\n * math.variance(A)\n * math.variance(A, normalization)\n * math.variance(A, dimension)\n * math.variance(A, dimension, normalization)\n *\n * Examples:\n *\n * math.variance(2, 4, 6) // returns 4\n * math.variance([2, 4, 6, 8]) // returns 6.666666666666667\n * math.variance([2, 4, 6, 8], 'uncorrected') // returns 5\n * math.variance([2, 4, 6, 8], 'biased') // returns 4\n *\n * math.variance([[1, 2, 3], [4, 5, 6]]) // returns 3.5\n * math.variance([[1, 2, 3], [4, 6, 8]], 0) // returns [4.5, 8, 12.5]\n * math.variance([[1, 2, 3], [4, 6, 8]], 1) // returns [1, 4]\n * math.variance([[1, 2, 3], [4, 6, 8]], 1, 'biased') // returns [0.5, 2]\n *\n * See also:\n *\n * mean, median, max, min, prod, std, sum\n *\n * @param {Array | Matrix} array\n * A single matrix or or multiple scalar values\n * @param {string} [normalization='unbiased']\n * Determines how to normalize the variance.\n * Choose 'unbiased' (default), 'uncorrected', or 'biased'.\n * @param dimension {number | BigNumber}\n * Determines the axis to compute the variance for a matrix\n * @return {*} The variance\n */\n return typed(name, {\n // variance([a, b, c, d, ...])\n 'Array | Matrix': function ArrayMatrix(array) {\n return _var(array, DEFAULT_NORMALIZATION);\n },\n // variance([a, b, c, d, ...], normalization)\n 'Array | Matrix, string': _var,\n // variance([a, b, c, c, ...], dim)\n 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(array, dim) {\n return _varDim(array, dim, DEFAULT_NORMALIZATION);\n },\n // variance([a, b, c, c, ...], dim, normalization)\n 'Array | Matrix, number | BigNumber, string': _varDim,\n // variance(a, b, c, d, ...)\n '...': function _(args) {\n return _var(args, DEFAULT_NORMALIZATION);\n }\n });\n /**\n * Recursively calculate the variance of an n-dimensional array\n * @param {Array} array\n * @param {string} normalization\n * Determines how to normalize the variance:\n * - 'unbiased' The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n * @return {number | BigNumber} variance\n * @private\n */\n\n function _var(array, normalization) {\n var sum;\n var num = 0;\n\n if (array.length === 0) {\n throw new SyntaxError('Function variance requires one or more parameters (0 provided)');\n } // calculate the mean and number of elements\n\n\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n num++;\n } catch (err) {\n throw improveErrorMessage(err, 'variance', value);\n }\n });\n if (num === 0) throw new Error('Cannot calculate variance of an empty array');\n var mean = divide(sum, num); // calculate the variance\n\n sum = undefined;\n deepForEach(array, function (value) {\n var diff = subtract(value, mean);\n sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));\n });\n\n if (isNaN(sum)) {\n return sum;\n }\n\n switch (normalization) {\n case 'uncorrected':\n return divide(sum, num);\n\n case 'biased':\n return divide(sum, num + 1);\n\n case 'unbiased':\n {\n var zero = isBigNumber(sum) ? sum.mul(0) : 0;\n return num === 1 ? zero : divide(sum, num - 1);\n }\n\n default:\n throw new Error('Unknown normalization \"' + normalization + '\". ' + 'Choose \"unbiased\" (default), \"uncorrected\", or \"biased\".');\n }\n }\n\n function _varDim(array, dim, normalization) {\n try {\n if (array.length === 0) {\n throw new SyntaxError('Function variance requires one or more parameters (0 provided)');\n }\n\n return apply(array, dim, x => _var(x, normalization));\n } catch (err) {\n throw improveErrorMessage(err, 'variance');\n }\n }\n});","import { isBigNumber, isCollection, isNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'quantileSeq';\nvar dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare'];\nexport var createQuantileSeq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n multiply,\n partitionSelect,\n compare\n } = _ref;\n\n /**\n * Compute the prob order quantile of a matrix or a list with values.\n * The sequence is sorted and the middle value is returned.\n * Supported types of sequence values are: Number, BigNumber, Unit\n * Supported types of probability are: Number, BigNumber\n *\n * In case of a (multi dimensional) array or matrix, the prob order quantile\n * of all elements will be calculated.\n *\n * Syntax:\n *\n * math.quantileSeq(A, prob[, sorted])\n * math.quantileSeq(A, [prob1, prob2, ...][, sorted])\n * math.quantileSeq(A, N[, sorted])\n *\n * Examples:\n *\n * math.quantileSeq([3, -1, 5, 7], 0.5) // returns 4\n * math.quantileSeq([3, -1, 5, 7], [1/3, 2/3]) // returns [3, 5]\n * math.quantileSeq([3, -1, 5, 7], 2) // returns [3, 5]\n * math.quantileSeq([-1, 3, 5, 7], 0.5, true) // returns 4\n *\n * See also:\n *\n * median, mean, min, max, sum, prod, std, variance\n *\n * @param {Array, Matrix} data A single matrix or Array\n * @param {Number, BigNumber, Array} probOrN prob is the order of the quantile, while N is\n * the amount of evenly distributed steps of\n * probabilities; only one of these options can\n * be provided\n * @param {Boolean} sorted=false is data sorted in ascending order\n * @return {Number, BigNumber, Unit, Array} Quantile(s)\n */\n function quantileSeq(data, probOrN, sorted) {\n var probArr, dataArr, one;\n\n if (arguments.length < 2 || arguments.length > 3) {\n throw new SyntaxError('Function quantileSeq requires two or three parameters');\n }\n\n if (isCollection(data)) {\n sorted = sorted || false;\n\n if (typeof sorted === 'boolean') {\n dataArr = data.valueOf();\n\n if (isNumber(probOrN)) {\n if (probOrN < 0) {\n throw new Error('N/prob must be non-negative');\n }\n\n if (probOrN <= 1) {\n // quantileSeq([a, b, c, d, ...], prob[,sorted])\n return _quantileSeq(dataArr, probOrN, sorted);\n }\n\n if (probOrN > 1) {\n // quantileSeq([a, b, c, d, ...], N[,sorted])\n if (!isInteger(probOrN)) {\n throw new Error('N must be a positive integer');\n }\n\n var nPlusOne = probOrN + 1;\n probArr = new Array(probOrN);\n\n for (var i = 0; i < probOrN;) {\n probArr[i] = _quantileSeq(dataArr, ++i / nPlusOne, sorted);\n }\n\n return probArr;\n }\n }\n\n if (isBigNumber(probOrN)) {\n var BigNumber = probOrN.constructor;\n\n if (probOrN.isNegative()) {\n throw new Error('N/prob must be non-negative');\n }\n\n one = new BigNumber(1);\n\n if (probOrN.lte(one)) {\n // quantileSeq([a, b, c, d, ...], prob[,sorted])\n return new BigNumber(_quantileSeq(dataArr, probOrN, sorted));\n }\n\n if (probOrN.gt(one)) {\n // quantileSeq([a, b, c, d, ...], N[,sorted])\n if (!probOrN.isInteger()) {\n throw new Error('N must be a positive integer');\n } // largest possible Array length is 2^32-1\n // 2^32 < 10^15, thus safe conversion guaranteed\n\n\n var intN = probOrN.toNumber();\n\n if (intN > 4294967295) {\n throw new Error('N must be less than or equal to 2^32-1, as that is the maximum length of an Array');\n }\n\n var _nPlusOne = new BigNumber(intN + 1);\n\n probArr = new Array(intN);\n\n for (var _i = 0; _i < intN;) {\n probArr[_i] = new BigNumber(_quantileSeq(dataArr, new BigNumber(++_i).div(_nPlusOne), sorted));\n }\n\n return probArr;\n }\n }\n\n if (Array.isArray(probOrN)) {\n // quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])\n probArr = new Array(probOrN.length);\n\n for (var _i2 = 0; _i2 < probArr.length; ++_i2) {\n var currProb = probOrN[_i2];\n\n if (isNumber(currProb)) {\n if (currProb < 0 || currProb > 1) {\n throw new Error('Probability must be between 0 and 1, inclusive');\n }\n } else if (isBigNumber(currProb)) {\n one = new currProb.constructor(1);\n\n if (currProb.isNegative() || currProb.gt(one)) {\n throw new Error('Probability must be between 0 and 1, inclusive');\n }\n } else {\n throw new TypeError('Unexpected type of argument in function quantileSeq'); // FIXME: becomes redundant when converted to typed-function\n }\n\n probArr[_i2] = _quantileSeq(dataArr, currProb, sorted);\n }\n\n return probArr;\n }\n\n throw new TypeError('Unexpected type of argument in function quantileSeq'); // FIXME: becomes redundant when converted to typed-function\n }\n\n throw new TypeError('Unexpected type of argument in function quantileSeq'); // FIXME: becomes redundant when converted to typed-function\n }\n\n throw new TypeError('Unexpected type of argument in function quantileSeq'); // FIXME: becomes redundant when converted to typed-function\n }\n /**\n * Calculate the prob order quantile of an n-dimensional array.\n *\n * @param {Array} array\n * @param {Number, BigNumber} prob\n * @param {Boolean} sorted\n * @return {Number, BigNumber, Unit} prob order quantile\n * @private\n */\n\n\n function _quantileSeq(array, prob, sorted) {\n var flat = flatten(array);\n var len = flat.length;\n\n if (len === 0) {\n throw new Error('Cannot calculate quantile of an empty sequence');\n }\n\n if (isNumber(prob)) {\n var _index = prob * (len - 1);\n\n var _fracPart = _index % 1;\n\n if (_fracPart === 0) {\n var value = sorted ? flat[_index] : partitionSelect(flat, _index);\n validate(value);\n return value;\n }\n\n var _integerPart = Math.floor(_index);\n\n var _left;\n\n var _right;\n\n if (sorted) {\n _left = flat[_integerPart];\n _right = flat[_integerPart + 1];\n } else {\n _right = partitionSelect(flat, _integerPart + 1); // max of partition is kth largest\n\n _left = flat[_integerPart];\n\n for (var i = 0; i < _integerPart; ++i) {\n if (compare(flat[i], _left) > 0) {\n _left = flat[i];\n }\n }\n }\n\n validate(_left);\n validate(_right); // Q(prob) = (1-f)*A[floor(index)] + f*A[floor(index)+1]\n\n return add(multiply(_left, 1 - _fracPart), multiply(_right, _fracPart));\n } // If prob is a BigNumber\n\n\n var index = prob.times(len - 1);\n\n if (index.isInteger()) {\n index = index.toNumber();\n\n var _value = sorted ? flat[index] : partitionSelect(flat, index);\n\n validate(_value);\n return _value;\n }\n\n var integerPart = index.floor();\n var fracPart = index.minus(integerPart);\n var integerPartNumber = integerPart.toNumber();\n var left;\n var right;\n\n if (sorted) {\n left = flat[integerPartNumber];\n right = flat[integerPartNumber + 1];\n } else {\n right = partitionSelect(flat, integerPartNumber + 1); // max of partition is kth largest\n\n left = flat[integerPartNumber];\n\n for (var _i3 = 0; _i3 < integerPartNumber; ++_i3) {\n if (compare(flat[_i3], left) > 0) {\n left = flat[_i3];\n }\n }\n }\n\n validate(left);\n validate(right); // Q(prob) = (1-f)*A[floor(index)] + f*A[floor(index)+1]\n\n var one = new fracPart.constructor(1);\n return add(multiply(left, one.minus(fracPart)), multiply(right, fracPart));\n }\n /**\n * Check if array value types are valid, throw error otherwise.\n * @param {number | BigNumber | Unit} x\n * @param {number | BigNumber | Unit} x\n * @private\n */\n\n\n var validate = typed({\n 'number | BigNumber | Unit': function numberBigNumberUnit(x) {\n return x;\n }\n });\n return quantileSeq;\n});","import { factory } from '../../utils/factory.js';\nvar name = 'std';\nvar dependencies = ['typed', 'sqrt', 'variance'];\nexport var createStd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n sqrt,\n variance\n } = _ref;\n\n /**\n * Compute the standard deviation of a matrix or a list with values.\n * The standard deviations is defined as the square root of the variance:\n * `std(A) = sqrt(variance(A))`.\n * In case of a (multi dimensional) array or matrix, the standard deviation\n * over all elements will be calculated by default, unless an axis is specified\n * in which case the standard deviation will be computed along that axis.\n *\n * Additionally, it is possible to compute the standard deviation along the rows\n * or columns of a matrix by specifying the dimension as the second argument.\n *\n * Optionally, the type of normalization can be specified as the final\n * parameter. The parameter `normalization` can be one of the following values:\n *\n * - 'unbiased' (default) The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n *\n *\n * Syntax:\n *\n * math.std(a, b, c, ...)\n * math.std(A)\n * math.std(A, normalization)\n * math.std(A, dimension)\n * math.std(A, dimension, normalization)\n *\n * Examples:\n *\n * math.std(2, 4, 6) // returns 2\n * math.std([2, 4, 6, 8]) // returns 2.581988897471611\n * math.std([2, 4, 6, 8], 'uncorrected') // returns 2.23606797749979\n * math.std([2, 4, 6, 8], 'biased') // returns 2\n *\n * math.std([[1, 2, 3], [4, 5, 6]]) // returns 1.8708286933869707\n * math.std([[1, 2, 3], [4, 6, 8]], 0) // returns [2.1213203435596424, 2.8284271247461903, 3.5355339059327378]\n * math.std([[1, 2, 3], [4, 6, 8]], 1) // returns [1, 2]\n * math.std([[1, 2, 3], [4, 6, 8]], 1, 'biased') // returns [0.7071067811865476, 1.4142135623730951]\n *\n * See also:\n *\n * mean, median, max, min, prod, sum, variance\n *\n * @param {Array | Matrix} array\n * A single matrix or or multiple scalar values\n * @param {string} [normalization='unbiased']\n * Determines how to normalize the variance.\n * Choose 'unbiased' (default), 'uncorrected', or 'biased'.\n * @param dimension {number | BigNumber}\n * Determines the axis to compute the standard deviation for a matrix\n * @return {*} The standard deviation\n */\n return typed(name, {\n // std([a, b, c, d, ...])\n 'Array | Matrix': _std,\n // std([a, b, c, d, ...], normalization)\n 'Array | Matrix, string': _std,\n // std([a, b, c, c, ...], dim)\n 'Array | Matrix, number | BigNumber': _std,\n // std([a, b, c, c, ...], dim, normalization)\n 'Array | Matrix, number | BigNumber, string': _std,\n // std(a, b, c, d, ...)\n '...': function _(args) {\n return _std(args);\n }\n });\n\n function _std(array, normalization) {\n if (array.length === 0) {\n throw new SyntaxError('Function std requires one or more parameters (0 provided)');\n }\n\n try {\n return sqrt(variance.apply(null, arguments));\n } catch (err) {\n if (err instanceof TypeError && err.message.indexOf(' variance') !== -1) {\n throw new TypeError(err.message.replace(' variance', ' std'));\n } else {\n throw err;\n }\n }\n }\n});","/** @param {number} i\n * @param {number} n\n * @returns {number} product of i to n\n */\nexport function product(i, n) {\n if (n < i) {\n return 1;\n }\n\n if (n === i) {\n return n;\n }\n\n var half = n + i >> 1; // divide (n + i) by 2 and truncate to integer\n\n return product(i, half) * product(half + 1, n);\n}","import { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nexport function combinationsNumber(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n\n if (k > n) {\n throw new TypeError('k must be less than or equal to n');\n }\n\n var nMinusk = n - k;\n var prodrange;\n\n if (k < nMinusk) {\n prodrange = product(nMinusk + 1, n);\n return prodrange / product(1, k);\n }\n\n prodrange = product(k + 1, n);\n return prodrange / product(1, nMinusk);\n}\ncombinationsNumber.signature = 'number, number';","import { factory } from '../../utils/factory.js';\nimport { combinationsNumber } from '../../plain/number/combinations.js';\nvar name = 'combinations';\nvar dependencies = ['typed'];\nexport var createCombinations = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the number of ways of picking `k` unordered outcomes from `n`\n * possibilities.\n *\n * Combinations only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.combinations(n, k)\n *\n * Examples:\n *\n * math.combinations(7, 5) // returns 21\n *\n * See also:\n *\n * combinationsWithRep, permutations, factorial\n *\n * @param {number | BigNumber} n Total number of objects in the set\n * @param {number | BigNumber} k Number of objects in the subset\n * @return {number | BigNumber} Number of possible combinations.\n */\n return typed(name, {\n 'number, number': combinationsNumber,\n 'BigNumber, BigNumber': function BigNumberBigNumber(n, k) {\n var BigNumber = n.constructor;\n var result, i;\n var nMinusk = n.minus(k);\n var one = new BigNumber(1);\n\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n\n if (k.gt(n)) {\n throw new TypeError('k must be less than n in function combinations');\n }\n\n result = one;\n\n if (k.lt(nMinusk)) {\n for (i = one; i.lte(nMinusk); i = i.plus(one)) {\n result = result.times(k.plus(i)).dividedBy(i);\n }\n } else {\n for (i = one; i.lte(k); i = i.plus(one)) {\n result = result.times(nMinusk.plus(i)).dividedBy(i);\n }\n }\n\n return result;\n } // TODO: implement support for collection in combinations\n\n });\n});\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\n\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}","import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nvar name = 'combinationsWithRep';\nvar dependencies = ['typed'];\nexport var createCombinationsWithRep = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Compute the number of ways of picking `k` unordered outcomes from `n`\n * possibilities, allowing individual outcomes to be repeated more than once.\n *\n * CombinationsWithRep only takes integer arguments.\n * The following condition must be enforced: k <= n + k -1.\n *\n * Syntax:\n *\n * math.combinationsWithRep(n, k)\n *\n * Examples:\n *\n * math.combinationsWithRep(7, 5) // returns 462\n *\n * See also:\n *\n * combinations, permutations, factorial\n *\n * @param {number | BigNumber} n Total number of objects in the set\n * @param {number | BigNumber} k Number of objects in the subset\n * @return {number | BigNumber} Number of possible combinations with replacement.\n */\n return typed(name, {\n 'number, number': function numberNumber(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n\n if (n < 1) {\n throw new TypeError('k must be less than or equal to n + k - 1');\n }\n\n if (k < n - 1) {\n var _prodrange = product(n, n + k - 1);\n\n return _prodrange / product(1, k);\n }\n\n var prodrange = product(k + 1, n + k - 1);\n return prodrange / product(1, n - 1);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(n, k) {\n var BigNumber = n.constructor;\n var result, i;\n var one = new BigNumber(1);\n var nMinusOne = n.minus(one);\n\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n\n if (n.lt(one)) {\n throw new TypeError('k must be less than or equal to n + k - 1 in function combinationsWithRep');\n }\n\n result = one;\n\n if (k.lt(nMinusOne)) {\n for (i = one; i.lte(nMinusOne); i = i.plus(one)) {\n result = result.times(k.plus(i)).dividedBy(i);\n }\n } else {\n for (i = one; i.lte(k); i = i.plus(one)) {\n result = result.times(nMinusOne.plus(i)).dividedBy(i);\n }\n }\n\n return result;\n }\n });\n});\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\n\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}","/* eslint-disable no-loss-of-precision */\nimport { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nexport function gammaNumber(n) {\n var x;\n\n if (isInteger(n)) {\n if (n <= 0) {\n return isFinite(n) ? Infinity : NaN;\n }\n\n if (n > 171) {\n return Infinity; // Will overflow\n }\n\n return product(1, n - 1);\n }\n\n if (n < 0.5) {\n return Math.PI / (Math.sin(Math.PI * n) * gammaNumber(1 - n));\n }\n\n if (n >= 171.35) {\n return Infinity; // will overflow\n }\n\n if (n > 85.0) {\n // Extended Stirling Approx\n var twoN = n * n;\n var threeN = twoN * n;\n var fourN = threeN * n;\n var fiveN = fourN * n;\n return Math.sqrt(2 * Math.PI / n) * Math.pow(n / Math.E, n) * (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) - 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) + 5246819 / (75246796800 * fiveN * n));\n }\n\n --n;\n x = gammaP[0];\n\n for (var i = 1; i < gammaP.length; ++i) {\n x += gammaP[i] / (n + i);\n }\n\n var t = n + gammaG + 0.5;\n return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x;\n}\ngammaNumber.signature = 'number'; // TODO: comment on the variables g and p\n\nexport var gammaG = 4.7421875;\nexport var gammaP = [0.99999999999999709182, 57.156235665862923517, -59.597960355475491248, 14.136097974741747174, -0.49191381609762019978, 0.33994649984811888699e-4, 0.46523628927048575665e-4, -0.98374475304879564677e-4, 0.15808870322491248884e-3, -0.21026444172410488319e-3, 0.21743961811521264320e-3, -0.16431810653676389022e-3, 0.84418223983852743293e-4, -0.26190838401581408670e-4, 0.36899182659531622704e-5];","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { gammaG, gammaNumber, gammaP } from '../../plain/number/index.js';\nvar name = 'gamma';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'pow', 'BigNumber', 'Complex'];\nexport var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n pow,\n BigNumber: _BigNumber,\n Complex: _Complex\n } = _ref;\n\n /**\n * Compute the gamma function of a value using Lanczos approximation for\n * small values, and an extended Stirling approximation for large values.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.gamma(n)\n *\n * Examples:\n *\n * math.gamma(5) // returns 24\n * math.gamma(-0.5) // returns -3.5449077018110335\n * math.gamma(math.i) // returns -0.15494982830180973 - 0.49801566811835596i\n *\n * See also:\n *\n * combinations, factorial, permutations\n *\n * @param {number | Array | Matrix} n A real or complex number\n * @return {number | Array | Matrix} The gamma of `n`\n */\n return typed(name, {\n number: gammaNumber,\n Complex: function Complex(n) {\n if (n.im === 0) {\n return this(n.re);\n }\n\n n = new _Complex(n.re - 1, n.im);\n var x = new _Complex(gammaP[0], 0);\n\n for (var i = 1; i < gammaP.length; ++i) {\n var real = n.re + i; // x += p[i]/(n+i)\n\n var den = real * real + n.im * n.im;\n\n if (den !== 0) {\n x.re += gammaP[i] * real / den;\n x.im += -(gammaP[i] * n.im) / den;\n } else {\n x.re = gammaP[i] < 0 ? -Infinity : Infinity;\n }\n }\n\n var t = new _Complex(n.re + gammaG + 0.5, n.im);\n var twoPiSqrt = Math.sqrt(2 * Math.PI);\n n.re += 0.5;\n var result = pow(t, n);\n\n if (result.im === 0) {\n // sqrt(2*PI)*result\n result.re *= twoPiSqrt;\n } else if (result.re === 0) {\n result.im *= twoPiSqrt;\n } else {\n result.re *= twoPiSqrt;\n result.im *= twoPiSqrt;\n }\n\n var r = Math.exp(-t.re); // exp(-t)\n\n t.re = r * Math.cos(-t.im);\n t.im = r * Math.sin(-t.im);\n return multiplyScalar(multiplyScalar(result, t), x);\n },\n BigNumber: function BigNumber(n) {\n if (n.isInteger()) {\n return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));\n }\n\n if (!n.isFinite()) {\n return new _BigNumber(n.isNegative() ? NaN : Infinity);\n }\n\n throw new Error('Integer BigNumber expected');\n },\n 'Array | Matrix': function ArrayMatrix(n) {\n return deepMap(n, this);\n }\n });\n /**\n * Calculate factorial for a BigNumber\n * @param {BigNumber} n\n * @returns {BigNumber} Returns the factorial of n\n */\n\n function bigFactorial(n) {\n if (n < 8) {\n return new _BigNumber([1, 1, 2, 6, 24, 120, 720, 5040][n]);\n }\n\n var precision = config.precision + (Math.log(n.toNumber()) | 0);\n\n var Big = _BigNumber.clone({\n precision: precision\n });\n\n if (n % 2 === 1) {\n return n.times(bigFactorial(new _BigNumber(n - 1)));\n }\n\n var p = n;\n var prod = new Big(n);\n var sum = n.toNumber();\n\n while (p > 2) {\n p -= 2;\n sum += p;\n prod = prod.times(sum);\n }\n\n return new _BigNumber(prod.toPrecision(_BigNumber.precision));\n }\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'factorial';\nvar dependencies = ['typed', 'gamma'];\nexport var createFactorial = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n gamma\n } = _ref;\n\n /**\n * Compute the factorial of a value\n *\n * Factorial only supports an integer value as argument.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.factorial(n)\n *\n * Examples:\n *\n * math.factorial(5) // returns 120\n * math.factorial(3) // returns 6\n *\n * See also:\n *\n * combinations, combinationsWithRep, gamma, permutations\n *\n * @param {number | BigNumber | Array | Matrix} n An integer number\n * @return {number | BigNumber | Array | Matrix} The factorial of `n`\n */\n return typed(name, {\n number: function number(n) {\n if (n < 0) {\n throw new Error('Value must be non-negative');\n }\n\n return gamma(n + 1);\n },\n BigNumber: function BigNumber(n) {\n if (n.isNegative()) {\n throw new Error('Value must be non-negative');\n }\n\n return gamma(n.plus(1));\n },\n 'Array | Matrix': function ArrayMatrix(n) {\n return deepMap(n, this);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'kldivergence';\nvar dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'dotDivide', 'log', 'isNumeric'];\nexport var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divide,\n sum,\n multiply,\n dotDivide,\n log,\n isNumeric\n } = _ref;\n\n /**\n * Calculate the Kullback-Leibler (KL) divergence between two distributions\n *\n * Syntax:\n *\n * math.kldivergence(x, y)\n *\n * Examples:\n *\n * math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5]) //returns 0.24376698773121153\n *\n *\n * @param {Array | Matrix} q First vector\n * @param {Array | Matrix} p Second vector\n * @return {number} Returns distance between q and p\n */\n return typed(name, {\n 'Array, Array': function ArrayArray(q, p) {\n return _kldiv(matrix(q), matrix(p));\n },\n 'Matrix, Array': function MatrixArray(q, p) {\n return _kldiv(q, matrix(p));\n },\n 'Array, Matrix': function ArrayMatrix(q, p) {\n return _kldiv(matrix(q), p);\n },\n 'Matrix, Matrix': function MatrixMatrix(q, p) {\n return _kldiv(q, p);\n }\n });\n\n function _kldiv(q, p) {\n var plength = p.size().length;\n var qlength = q.size().length;\n\n if (plength > 1) {\n throw new Error('first object must be one dimensional');\n }\n\n if (qlength > 1) {\n throw new Error('second object must be one dimensional');\n }\n\n if (plength !== qlength) {\n throw new Error('Length of two vectors must be equal');\n } // Before calculation, apply normalization\n\n\n var sumq = sum(q);\n\n if (sumq === 0) {\n throw new Error('Sum of elements in first object must be non zero');\n }\n\n var sump = sum(p);\n\n if (sump === 0) {\n throw new Error('Sum of elements in second object must be non zero');\n }\n\n var qnorm = divide(q, sum(q));\n var pnorm = divide(p, sum(p));\n var result = sum(multiply(qnorm, log(dotDivide(qnorm, pnorm))));\n\n if (isNumeric(result)) {\n return result;\n } else {\n return Number.NaN;\n }\n }\n});","import { deepForEach } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'multinomial';\nvar dependencies = ['typed', 'add', 'divide', 'multiply', 'factorial', 'isInteger', 'isPositive'];\nexport var createMultinomial = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide,\n multiply,\n factorial,\n isInteger,\n isPositive\n } = _ref;\n\n /**\n * Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities.\n *\n * multinomial takes one array of integers as an argument.\n * The following condition must be enforced: every ai <= 0\n *\n * Syntax:\n *\n * math.multinomial(a) // a is an array type\n *\n * Examples:\n *\n * math.multinomial([1,2,1]) // returns 12\n *\n * See also:\n *\n * combinations, factorial\n *\n * @param {number[] | BigNumber[]} a Integer numbers of objects in the subset\n * @return {Number | BigNumber} Multinomial coefficient.\n */\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(a) {\n var sum = 0;\n var denom = 1;\n deepForEach(a, function (ai) {\n if (!isInteger(ai) || !isPositive(ai)) {\n throw new TypeError('Positive integer value expected in function multinomial');\n }\n\n sum = add(sum, ai);\n denom = multiply(denom, factorial(ai));\n });\n return divide(factorial(sum), denom);\n }\n });\n});","import { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'permutations';\nvar dependencies = ['typed', 'factorial'];\nexport var createPermutations = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n factorial\n } = _ref;\n\n /**\n * Compute the number of ways of obtaining an ordered subset of `k` elements\n * from a set of `n` elements.\n *\n * Permutations only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.permutations(n)\n * math.permutations(n, k)\n *\n * Examples:\n *\n * math.permutations(5) // 120\n * math.permutations(5, 3) // 60\n *\n * See also:\n *\n * combinations, combinationsWithRep, factorial\n *\n * @param {number | BigNumber} n The number of objects in total\n * @param {number | BigNumber} [k] The number of objects in the subset\n * @return {number | BigNumber} The number of permutations\n */\n return typed(name, {\n 'number | BigNumber': factorial,\n 'number, number': function numberNumber(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n\n if (k > n) {\n throw new TypeError('second argument k must be less than or equal to first argument n');\n } // Permute n objects, k at a time\n\n\n return product(n - k + 1, n);\n },\n 'BigNumber, BigNumber': function BigNumberBigNumber(n, k) {\n var result, i;\n\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n\n if (k.gt(n)) {\n throw new TypeError('second argument k must be less than or equal to first argument n');\n }\n\n var one = n.mul(0).add(1);\n result = one;\n\n for (i = n.minus(k).plus(1); i.lte(n); i = i.plus(1)) {\n result = result.times(i);\n }\n\n return result;\n } // TODO: implement support for collection in permutations\n\n });\n});\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\n\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}","import seedrandom from 'seedrandom';\nvar singletonRandom = /* #__PURE__ */seedrandom(Date.now());\nexport function createRng(randomSeed) {\n var random; // create a new random generator with given seed\n\n function setSeed(seed) {\n random = seed === null ? singletonRandom : seedrandom(String(seed));\n } // initialize a seeded pseudo random number generator with config's random seed\n\n\n setSeed(randomSeed); // wrapper function so the rng can be updated via generator\n\n function rng() {\n return random();\n }\n\n return rng;\n}","import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isMatrix, isNumber } from '../../utils/is.js';\nimport { createRng } from './util/seededRNG.js';\nvar name = 'pickRandom';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createPickRandom = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n /**\n * Random pick one or more values from a one dimensional array.\n * Array elements are picked using a random function with uniform or weighted distribution.\n *\n * Syntax:\n *\n * math.pickRandom(array)\n * math.pickRandom(array, number)\n * math.pickRandom(array, weights)\n * math.pickRandom(array, number, weights)\n * math.pickRandom(array, weights, number)\n * math.pickRandom(array, { weights, number, elementWise })\n *\n * Examples:\n *\n * math.pickRandom([3, 6, 12, 2]) // returns one of the values in the array\n * math.pickRandom([3, 6, 12, 2], 2) // returns an array of two of the values in the array\n * math.pickRandom([3, 6, 12, 2], { number: 2 }) // returns an array of two of the values in the array\n * math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1]) // returns one of the values in the array with weighted distribution\n * math.pickRandom([3, 6, 12, 2], 2, [1, 3, 2, 1]) // returns an array of two of the values in the array with weighted distribution\n * math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1], 2) // returns an array of two of the values in the array with weighted distribution\n *\n * math.pickRandom([{x: 1.0, y: 2.0}, {x: 1.1, y: 2.0}], { elementWise: false })\n * // returns one of the items in the array\n *\n * See also:\n *\n * random, randomInt\n *\n * @param {Array | Matrix} array A one dimensional array\n * @param {Int} number An int or float\n * @param {Array | Matrix} weights An array of ints or floats\n * @return {number | Array} Returns a single random value from array when number is 1 or undefined.\n * Returns an array with the configured number of elements when number is > 1.\n */\n\n\n return typed(name, {\n 'Array | Matrix': function ArrayMatrix(possibles) {\n return _pickRandom(possibles, {});\n },\n 'Array | Matrix, Object': function ArrayMatrixObject(possibles, options) {\n return _pickRandom(possibles, options);\n },\n 'Array | Matrix, number': function ArrayMatrixNumber(possibles, number) {\n return _pickRandom(possibles, {\n number\n });\n },\n 'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(possibles, weights) {\n return _pickRandom(possibles, {\n weights\n });\n },\n 'Array | Matrix, Array | Matrix, number': function ArrayMatrixArrayMatrixNumber(possibles, weights, number) {\n return _pickRandom(possibles, {\n number,\n weights\n });\n },\n 'Array | Matrix, number, Array | Matrix': function ArrayMatrixNumberArrayMatrix(possibles, number, weights) {\n return _pickRandom(possibles, {\n number,\n weights\n });\n }\n });\n /**\n * @param {Array | Matrix} possibles\n * @param {{\n * number?: number,\n * weights?: Array | Matrix,\n * elementWise: boolean\n * }} options\n * @returns {number | Array}\n * @private\n */\n\n function _pickRandom(possibles, _ref2) {\n var {\n number,\n weights,\n elementWise = true\n } = _ref2;\n var single = typeof number === 'undefined';\n\n if (single) {\n number = 1;\n }\n\n var createMatrix = isMatrix(possibles) ? possibles.create : isMatrix(weights) ? weights.create : null;\n possibles = possibles.valueOf(); // get Array\n\n if (weights) {\n weights = weights.valueOf(); // get Array\n }\n\n if (elementWise === true) {\n possibles = flatten(possibles);\n weights = flatten(weights);\n }\n\n var totalWeights = 0;\n\n if (typeof weights !== 'undefined') {\n if (weights.length !== possibles.length) {\n throw new Error('Weights must have the same length as possibles');\n }\n\n for (var i = 0, len = weights.length; i < len; i++) {\n if (!isNumber(weights[i]) || weights[i] < 0) {\n throw new Error('Weights must be an array of positive numbers');\n }\n\n totalWeights += weights[i];\n }\n }\n\n var length = possibles.length;\n var result = [];\n var pick;\n\n while (result.length < number) {\n if (typeof weights === 'undefined') {\n pick = possibles[Math.floor(rng() * length)];\n } else {\n var randKey = rng() * totalWeights;\n\n for (var _i = 0, _len = possibles.length; _i < _len; _i++) {\n randKey -= weights[_i];\n\n if (randKey < 0) {\n pick = possibles[_i];\n break;\n }\n }\n }\n\n result.push(pick);\n }\n\n return single ? result[0] : createMatrix ? createMatrix(result) : result;\n }\n});","/**\n * This is a util function for generating a random matrix recursively.\n * @param {number[]} size\n * @param {function} random\n * @returns {Array}\n */\nexport function randomMatrix(size, random) {\n var data = [];\n size = size.slice(0);\n\n if (size.length > 1) {\n for (var i = 0, length = size.shift(); i < length; i++) {\n data.push(randomMatrix(size, random));\n }\n } else {\n for (var _i = 0, _length = size.shift(); _i < _length; _i++) {\n data.push(random());\n }\n }\n\n return data;\n}","import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { createRng } from './util/seededRNG.js';\nimport { randomMatrix } from './util/randomMatrix.js';\nvar name = 'random';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createRandom = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n /**\n * Return a random number larger or equal to `min` and smaller than `max`\n * using a uniform distribution.\n *\n * Syntax:\n *\n * math.random() // generate a random number between 0 and 1\n * math.random(max) // generate a random number between 0 and max\n * math.random(min, max) // generate a random number between min and max\n * math.random(size) // generate a matrix with random numbers between 0 and 1\n * math.random(size, max) // generate a matrix with random numbers between 0 and max\n * math.random(size, min, max) // generate a matrix with random numbers between min and max\n *\n * Examples:\n *\n * math.random() // returns a random number between 0 and 1\n * math.random(100) // returns a random number between 0 and 100\n * math.random(30, 40) // returns a random number between 30 and 40\n * math.random([2, 3]) // returns a 2x3 matrix with random numbers between 0 and 1\n *\n * See also:\n *\n * randomInt, pickRandom\n *\n * @param {Array | Matrix} [size] If provided, an array or matrix with given\n * size and filled with random values is returned\n * @param {number} [min] Minimum boundary for the random value, included\n * @param {number} [max] Maximum boundary for the random value, excluded\n * @return {number | Array | Matrix} A random number\n */\n\n\n return typed(name, {\n '': () => _random(0, 1),\n number: max => _random(0, max),\n 'number, number': (min, max) => _random(min, max),\n 'Array | Matrix': size => _randomMatrix(size, 0, 1),\n 'Array | Matrix, number': (size, max) => _randomMatrix(size, 0, max),\n 'Array | Matrix, number, number': (size, min, max) => _randomMatrix(size, min, max)\n });\n\n function _randomMatrix(size, min, max) {\n var res = randomMatrix(size.valueOf(), () => _random(min, max));\n return isMatrix(size) ? size.create(res) : res;\n }\n\n function _random(min, max) {\n return min + rng() * (max - min);\n }\n}); // number only implementation of random, no matrix support\n// TODO: there is quite some duplicate code in both createRandom and createRandomNumber, can we improve that?\n\nexport var createRandomNumber = /* #__PURE__ */factory(name, ['typed', 'config', '?on'], _ref2 => {\n var {\n typed,\n config,\n on,\n matrix\n } = _ref2;\n // seeded pseudo random number generator1\n var rng = createRng(config.randomSeed);\n\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n return typed(name, {\n '': () => _random(0, 1),\n number: max => _random(0, max),\n 'number, number': (min, max) => _random(min, max)\n });\n\n function _random(min, max) {\n return min + rng() * (max - min);\n }\n});","import { factory } from '../../utils/factory.js';\nimport { randomMatrix } from './util/randomMatrix.js';\nimport { createRng } from './util/seededRNG.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'randomInt';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n /**\n * Return a random integer number larger or equal to `min` and smaller than `max`\n * using a uniform distribution.\n *\n * Syntax:\n *\n * math.randomInt() // generate a random integer between 0 and 1\n * math.randomInt(max) // generate a random integer between 0 and max\n * math.randomInt(min, max) // generate a random integer between min and max\n * math.randomInt(size) // generate a matrix with random integer between 0 and 1\n * math.randomInt(size, max) // generate a matrix with random integer between 0 and max\n * math.randomInt(size, min, max) // generate a matrix with random integer between min and max\n *\n * Examples:\n *\n * math.randomInt(100) // returns a random integer between 0 and 100\n * math.randomInt(30, 40) // returns a random integer between 30 and 40\n * math.randomInt([2, 3]) // returns a 2x3 matrix with random integers between 0 and 1\n *\n * See also:\n *\n * random, pickRandom\n *\n * @param {Array | Matrix} [size] If provided, an array or matrix with given\n * size and filled with random values is returned\n * @param {number} [min] Minimum boundary for the random value, included\n * @param {number} [max] Maximum boundary for the random value, excluded\n * @return {number | Array | Matrix} A random integer value\n */\n\n\n return typed(name, {\n '': () => _randomInt(0, 1),\n number: max => _randomInt(0, max),\n 'number, number': (min, max) => _randomInt(min, max),\n 'Array | Matrix': size => _randomIntMatrix(size, 0, 1),\n 'Array | Matrix, number': (size, max) => _randomIntMatrix(size, 0, max),\n 'Array | Matrix, number, number': (size, min, max) => _randomIntMatrix(size, min, max)\n });\n\n function _randomIntMatrix(size, min, max) {\n var res = randomMatrix(size.valueOf(), () => _randomInt(min, max));\n return isMatrix(size) ? size.create(res) : res;\n }\n\n function _randomInt(min, max) {\n return Math.floor(min + rng() * (max - min));\n }\n});","import { factory } from '../../utils/factory.js';\nvar name = 'stirlingS2';\nvar dependencies = ['typed', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'factorial', 'combinations', 'isNegative', 'isInteger', 'larger'];\nexport var createStirlingS2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n subtract,\n multiplyScalar,\n divideScalar,\n pow,\n factorial,\n combinations,\n isNegative,\n isInteger,\n larger\n } = _ref;\n\n /**\n * The Stirling numbers of the second kind, counts the number of ways to partition\n * a set of n labelled objects into k nonempty unlabelled subsets.\n * stirlingS2 only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * If n = k or k = 1, then s(n,k) = 1\n *\n * Syntax:\n *\n * math.stirlingS2(n, k)\n *\n * Examples:\n *\n * math.stirlingS2(5, 3) //returns 25\n *\n * See also:\n *\n * bellNumbers\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @param {Number | BigNumber} k Number of objects in the subset\n * @return {Number | BigNumber} S(n,k)\n */\n return typed(name, {\n 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, k) {\n if (!isInteger(n) || isNegative(n) || !isInteger(k) || isNegative(k)) {\n throw new TypeError('Non-negative integer value expected in function stirlingS2');\n } else if (larger(k, n)) {\n throw new TypeError('k must be less than or equal to n in function stirlingS2');\n } // 1/k! Sum(i=0 -> k) [(-1)^(k-i)*C(k,j)* i^n]\n\n\n var kFactorial = factorial(k);\n var result = 0;\n\n for (var i = 0; i <= k; i++) {\n var negativeOne = pow(-1, subtract(k, i));\n var kChooseI = combinations(k, i);\n var iPower = pow(i, n);\n result = addScalar(result, multiplyScalar(multiplyScalar(kChooseI, iPower), negativeOne));\n }\n\n return divideScalar(result, kFactorial);\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'bellNumbers';\nvar dependencies = ['typed', 'addScalar', 'isNegative', 'isInteger', 'stirlingS2'];\nexport var createBellNumbers = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n isNegative,\n isInteger,\n stirlingS2\n } = _ref;\n\n /**\n * The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S.\n * bellNumbers only takes integer arguments.\n * The following condition must be enforced: n >= 0\n *\n * Syntax:\n *\n * math.bellNumbers(n)\n *\n * Examples:\n *\n * math.bellNumbers(3) // returns 5\n * math.bellNumbers(8) // returns 4140\n *\n * See also:\n *\n * stirlingS2\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @return {Number | BigNumber} B(n)\n */\n return typed(name, {\n 'number | BigNumber': function numberBigNumber(n) {\n if (!isInteger(n) || isNegative(n)) {\n throw new TypeError('Non-negative integer value expected in function bellNumbers');\n } // Sum (k=0, n) S(n,k).\n\n\n var result = 0;\n\n for (var i = 0; i <= n; i++) {\n result = addScalar(result, stirlingS2(n, i));\n }\n\n return result;\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'catalan';\nvar dependencies = ['typed', 'addScalar', 'divideScalar', 'multiplyScalar', 'combinations', 'isNegative', 'isInteger'];\nexport var createCatalan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n divideScalar,\n multiplyScalar,\n combinations,\n isNegative,\n isInteger\n } = _ref;\n\n /**\n * The Catalan Numbers enumerate combinatorial structures of many different types.\n * catalan only takes integer arguments.\n * The following condition must be enforced: n >= 0\n *\n * Syntax:\n *\n * math.catalan(n)\n *\n * Examples:\n *\n * math.catalan(3) // returns 5\n * math.catalan(8) // returns 1430\n *\n * See also:\n *\n * bellNumbers\n *\n * @param {Number | BigNumber} n nth Catalan number\n * @return {Number | BigNumber} Cn(n)\n */\n return typed(name, {\n 'number | BigNumber': function numberBigNumber(n) {\n if (!isInteger(n) || isNegative(n)) {\n throw new TypeError('Non-negative integer value expected in function catalan');\n }\n\n return divideScalar(combinations(multiplyScalar(n, 2), n), addScalar(n, 1));\n }\n });\n});","import { factory } from '../../utils/factory.js';\nvar name = 'composition';\nvar dependencies = ['typed', 'addScalar', 'combinations', 'isNegative', 'isPositive', 'isInteger', 'larger'];\nexport var createComposition = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n combinations,\n isPositive,\n isNegative,\n isInteger,\n larger\n } = _ref;\n\n /**\n * The composition counts of n into k parts.\n *\n * composition only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.composition(n, k)\n *\n * Examples:\n *\n * math.composition(5, 3) // returns 6\n *\n * See also:\n *\n * combinations\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @param {Number | BigNumber} k Number of objects in the subset\n * @return {Number | BigNumber} Returns the composition counts of n into k parts.\n */\n return typed(name, {\n 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, k) {\n if (!isInteger(n) || !isPositive(n) || !isInteger(k) || !isPositive(k)) {\n throw new TypeError('Positive integer value expected in function composition');\n } else if (larger(k, n)) {\n throw new TypeError('k must be less than or equal to n in function composition');\n }\n\n return combinations(addScalar(n, -1), addScalar(k, -1));\n }\n });\n});","import { isOperatorNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { hasOwnProperty } from '../../../utils/object.js';\nvar name = 'simplifyUtil';\nvar dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];\nexport var createUtil = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n FunctionNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n // TODO commutative/associative properties rely on the arguments\n // e.g. multiply is not commutative for matrices\n // The properties should be calculated from an argument to simplify, or possibly something in math.config\n // the other option is for typed() to specify a return type so that we can evaluate the type of arguments\n var commutative = {\n add: true,\n multiply: true\n };\n var associative = {\n add: true,\n multiply: true\n };\n\n function isCommutative(node, context) {\n if (!isOperatorNode(node)) {\n return true;\n }\n\n var name = node.fn.toString();\n\n if (context && hasOwnProperty(context, name) && hasOwnProperty(context[name], 'commutative')) {\n return context[name].commutative;\n }\n\n return commutative[name] || false;\n }\n\n function isAssociative(node, context) {\n if (!isOperatorNode(node)) {\n return false;\n }\n\n var name = node.fn.toString();\n\n if (context && hasOwnProperty(context, name) && hasOwnProperty(context[name], 'associative')) {\n return context[name].associative;\n }\n\n return associative[name] || false;\n }\n /**\n * Flatten all associative operators in an expression tree.\n * Assumes parentheses have already been removed.\n */\n\n\n function flatten(node) {\n if (!node.args || node.args.length === 0) {\n return node;\n }\n\n node.args = allChildren(node);\n\n for (var i = 0; i < node.args.length; i++) {\n flatten(node.args[i]);\n }\n }\n /**\n * Get the children of a node as if it has been flattened.\n * TODO implement for FunctionNodes\n */\n\n\n function allChildren(node) {\n var op;\n var children = [];\n\n var findChildren = function findChildren(node) {\n for (var i = 0; i < node.args.length; i++) {\n var child = node.args[i];\n\n if (isOperatorNode(child) && op === child.op) {\n findChildren(child);\n } else {\n children.push(child);\n }\n }\n };\n\n if (isAssociative(node)) {\n op = node.op;\n findChildren(node);\n return children;\n } else {\n return node.args;\n }\n }\n /**\n * Unflatten all flattened operators to a right-heavy binary tree.\n */\n\n\n function unflattenr(node) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n\n for (var i = 0; i < l; i++) {\n unflattenr(node.args[i]);\n }\n\n if (l > 2 && isAssociative(node)) {\n var curnode = node.args.pop();\n\n while (node.args.length > 0) {\n curnode = makeNode([node.args.pop(), curnode]);\n }\n\n node.args = curnode.args;\n }\n }\n /**\n * Unflatten all flattened operators to a left-heavy binary tree.\n */\n\n\n function unflattenl(node) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n\n for (var i = 0; i < l; i++) {\n unflattenl(node.args[i]);\n }\n\n if (l > 2 && isAssociative(node)) {\n var curnode = node.args.shift();\n\n while (node.args.length > 0) {\n curnode = makeNode([curnode, node.args.shift()]);\n }\n\n node.args = curnode.args;\n }\n }\n\n function createMakeNodeFunction(node) {\n if (isOperatorNode(node)) {\n return function (args) {\n try {\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } catch (err) {\n console.error(err);\n return [];\n }\n };\n } else {\n return function (args) {\n return new FunctionNode(new SymbolNode(node.name), args);\n };\n }\n }\n\n return {\n createMakeNodeFunction,\n isCommutative,\n isAssociative,\n flatten,\n allChildren,\n unflattenr,\n unflattenl\n };\n});","import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'simplifyCore';\nvar dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'ParenthesisNode'];\nexport var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n ParenthesisNode\n } = _ref;\n var node0 = new ConstantNode(0);\n var node1 = new ConstantNode(1);\n /**\n * simplifyCore() performs single pass simplification suitable for\n * applications requiring ultimate performance. In contrast, simplify()\n * extends simplifyCore() with additional passes to provide deeper\n * simplification.\n *\n * Syntax:\n *\n * simplify.simplifyCore(expr)\n *\n * Examples:\n *\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify.simpifyCore(f) // Node {2 * x}\n * math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplify.simpifyCore]) // Node {2 * x}\n *\n * See also:\n *\n * derivative\n *\n * @param {Node} node\n * The expression to be simplified\n */\n\n function simplifyCore(node) {\n if (isOperatorNode(node) && node.isUnary()) {\n var a0 = simplifyCore(node.args[0]);\n\n if (node.op === '+') {\n // unary plus\n return a0;\n }\n\n if (node.op === '-') {\n // unary minus\n if (isOperatorNode(a0)) {\n if (a0.isUnary() && a0.op === '-') {\n return a0.args[0];\n } else if (a0.isBinary() && a0.fn === 'subtract') {\n return new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);\n }\n }\n\n return new OperatorNode(node.op, node.fn, [a0]);\n }\n } else if (isOperatorNode(node) && node.isBinary()) {\n var _a = simplifyCore(node.args[0]);\n\n var a1 = simplifyCore(node.args[1]);\n\n if (node.op === '+') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return a1;\n } else if (isConstantNode(a1)) {\n return new ConstantNode(add(_a.value, a1.value));\n }\n }\n\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return new OperatorNode('-', 'subtract', [_a, a1.args[0]]);\n }\n\n return new OperatorNode(node.op, node.fn, a1 ? [_a, a1] : [_a]);\n } else if (node.op === '-') {\n if (isConstantNode(_a) && a1) {\n if (isConstantNode(a1)) {\n return new ConstantNode(subtract(_a.value, a1.value));\n } else if (isZero(_a.value)) {\n return new OperatorNode('-', 'unaryMinus', [a1]);\n }\n } // if (node.fn === \"subtract\" && node.args.length === 2) {\n\n\n if (node.fn === 'subtract') {\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]));\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n } else if (node.op === '*') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (equal(_a.value, 1)) {\n return a1;\n } else if (isConstantNode(a1)) {\n return new ConstantNode(multiply(_a.value, a1.value));\n }\n }\n\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node0;\n } else if (equal(a1.value, 1)) {\n return _a;\n } else if (isOperatorNode(_a) && _a.isBinary() && _a.op === node.op) {\n var a00 = _a.args[0];\n\n if (isConstantNode(a00)) {\n var a00a1 = new ConstantNode(multiply(a00.value, a1.value));\n return new OperatorNode(node.op, node.fn, [a00a1, _a.args[1]], node.implicit); // constants on left\n }\n }\n\n return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);\n } else if (node.op === '/') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (isConstantNode(a1) && (equal(a1.value, 1) || equal(a1.value, 2) || equal(a1.value, 4))) {\n return new ConstantNode(divide(_a.value, a1.value));\n }\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n } else if (node.op === '^') {\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node1;\n } else if (equal(a1.value, 1)) {\n return _a;\n } else {\n if (isConstantNode(_a)) {\n // fold constant\n return new ConstantNode(pow(_a.value, a1.value));\n } else if (isOperatorNode(_a) && _a.isBinary() && _a.op === '^') {\n var a01 = _a.args[1];\n\n if (isConstantNode(a01)) {\n return new OperatorNode(node.op, node.fn, [_a.args[0], new ConstantNode(multiply(a01.value, a1.value))]);\n }\n }\n }\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n } else if (isParenthesisNode(node)) {\n var c = simplifyCore(node.content);\n\n if (isParenthesisNode(c) || isSymbolNode(c) || isConstantNode(c)) {\n return c;\n }\n\n return new ParenthesisNode(c);\n } else if (isFunctionNode(node)) {\n var args = node.args.map(simplifyCore).map(function (arg) {\n return isParenthesisNode(arg) ? arg.content : arg;\n });\n return new FunctionNode(simplifyCore(node.fn), args);\n } else {// cannot simplify\n }\n\n return node;\n }\n\n return simplifyCore;\n});","// TODO this could be improved by simplifying seperated constants under associative and commutative operators\nimport { isFraction, isNode, isOperatorNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createUtil } from './util.js';\nimport { noBignumber, noFraction } from '../../../utils/noop.js';\nvar name = 'simplifyConstant';\nvar dependencies = ['typed', 'config', 'mathWithTransform', '?fraction', '?bignumber', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'SymbolNode'];\nexport var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n mathWithTransform,\n fraction,\n bignumber,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n SymbolNode\n } = _ref;\n var {\n isCommutative,\n isAssociative,\n allChildren,\n createMakeNodeFunction\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n function simplifyConstant(expr, options) {\n var res = foldFraction(expr, options);\n return isNode(res) ? res : _toNode(res);\n }\n\n function _eval(fnname, args, options) {\n try {\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n } catch (ignore) {\n // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions\n args = args.map(function (x) {\n if (isFraction(x)) {\n return x.valueOf();\n }\n\n return x;\n });\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n }\n }\n\n var _toNode = typed({\n Fraction: _fractionToNode,\n number: function number(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n\n return new ConstantNode(n);\n },\n BigNumber: function BigNumber(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n\n return new ConstantNode(n); // old parameters: (n.toString(), 'number')\n },\n Complex: function Complex(s) {\n throw new Error('Cannot convert Complex number to Node');\n }\n }); // convert a number to a fraction only if it can be expressed exactly,\n // and when both numerator and denominator are small enough\n\n\n function _exactFraction(n, options) {\n var exactFractions = options && options.exactFractions !== false;\n\n if (exactFractions && isFinite(n) && fraction) {\n var f = fraction(n);\n var fractionsLimit = options && typeof options.fractionsLimit === 'number' ? options.fractionsLimit : Infinity; // no limit by default\n\n if (f.valueOf() === n && f.n < fractionsLimit && f.d < fractionsLimit) {\n return f;\n }\n }\n\n return n;\n } // Convert numbers to a preferred number type in preference order: Fraction, number, Complex\n // BigNumbers are left alone\n\n\n var _toNumber = typed({\n 'string, Object': function stringObject(s, options) {\n if (config.number === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n\n return bignumber(s);\n } else if (config.number === 'Fraction') {\n if (fraction === undefined) {\n noFraction();\n }\n\n return fraction(s);\n } else {\n var n = parseFloat(s);\n return _exactFraction(n, options);\n }\n },\n 'Fraction, Object': function FractionObject(s, options) {\n return s;\n },\n // we don't need options here\n 'BigNumber, Object': function BigNumberObject(s, options) {\n return s;\n },\n // we don't need options here\n 'number, Object': function numberObject(s, options) {\n return _exactFraction(s, options);\n },\n 'Complex, Object': function ComplexObject(s, options) {\n if (s.im !== 0) {\n return s;\n }\n\n return _exactFraction(s.re, options);\n }\n });\n\n function unaryMinusNode(n) {\n return new OperatorNode('-', 'unaryMinus', [n]);\n }\n\n function _fractionToNode(f) {\n var n;\n var vn = f.s * f.n;\n\n if (vn < 0) {\n n = new OperatorNode('-', 'unaryMinus', [new ConstantNode(-vn)]);\n } else {\n n = new ConstantNode(vn);\n }\n\n if (f.d === 1) {\n return n;\n }\n\n return new OperatorNode('/', 'divide', [n, new ConstantNode(f.d)]);\n }\n /*\n * Create a binary tree from a list of Fractions and Nodes.\n * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so\n * `args` should be sorted to have the Fractions at the start (if the operator is commutative).\n * @param args - list of Fractions and Nodes\n * @param fn - evaluator for the binary operation evaluator that accepts two Fractions\n * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes\n * if args.length is 1, returns args[0]\n * @return - Either a Node representing a binary expression or Fraction\n */\n\n\n function foldOp(fn, args, makeNode, options) {\n return args.reduce(function (a, b) {\n if (!isNode(a) && !isNode(b)) {\n try {\n return _eval(fn, [a, b], options);\n } catch (ignoreandcontinue) {}\n\n a = _toNode(a);\n b = _toNode(b);\n } else if (!isNode(a)) {\n a = _toNode(a);\n } else if (!isNode(b)) {\n b = _toNode(b);\n }\n\n return makeNode([a, b]);\n });\n } // destroys the original node and returns a folded one\n\n\n function foldFraction(node, options) {\n switch (node.type) {\n case 'SymbolNode':\n return node;\n\n case 'ConstantNode':\n if (typeof node.value === 'number' || !isNaN(node.value)) {\n return _toNumber(node.value, options);\n }\n\n return node;\n\n case 'FunctionNode':\n if (mathWithTransform[node.name] && mathWithTransform[node.name].rawArgs) {\n return node;\n }\n\n {\n // Process operators as OperatorNode\n var operatorFunctions = ['add', 'multiply'];\n\n if (operatorFunctions.indexOf(node.name) === -1) {\n var args = node.args.map(arg => foldFraction(arg, options)); // If all args are numbers\n\n if (!args.some(isNode)) {\n try {\n return _eval(node.name, args, options);\n } catch (ignoreandcontine) {}\n } // Convert all args to nodes and construct a symbolic function call\n\n\n args = args.map(function (arg) {\n return isNode(arg) ? arg : _toNode(arg);\n });\n return new FunctionNode(node.name, args);\n } else {// treat as operator\n }\n }\n\n /* falls through */\n\n case 'OperatorNode':\n {\n var fn = node.fn.toString();\n\n var _args;\n\n var res;\n var makeNode = createMakeNodeFunction(node);\n\n if (isOperatorNode(node) && node.isUnary()) {\n _args = [foldFraction(node.args[0], options)];\n\n if (!isNode(_args[0])) {\n res = _eval(fn, _args, options);\n } else {\n res = makeNode(_args);\n }\n } else if (isAssociative(node)) {\n _args = allChildren(node);\n _args = _args.map(arg => foldFraction(arg, options));\n\n if (isCommutative(fn)) {\n // commutative binary operator\n var consts = [];\n var vars = [];\n\n for (var i = 0; i < _args.length; i++) {\n if (!isNode(_args[i])) {\n consts.push(_args[i]);\n } else {\n vars.push(_args[i]);\n }\n }\n\n if (consts.length > 1) {\n res = foldOp(fn, consts, makeNode, options);\n vars.unshift(res);\n res = foldOp(fn, vars, makeNode, options);\n } else {\n // we won't change the children order since it's not neccessary\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-commutative binary operator\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-associative binary operator\n _args = node.args.map(arg => foldFraction(arg, options));\n res = foldOp(fn, _args, makeNode, options);\n }\n\n return res;\n }\n\n case 'ParenthesisNode':\n // remove the uneccessary parenthesis\n return foldFraction(node.content, options);\n\n case 'AccessorNode':\n /* falls through */\n\n case 'ArrayNode':\n /* falls through */\n\n case 'AssignmentNode':\n /* falls through */\n\n case 'BlockNode':\n /* falls through */\n\n case 'FunctionAssignmentNode':\n /* falls through */\n\n case 'IndexNode':\n /* falls through */\n\n case 'ObjectNode':\n /* falls through */\n\n case 'RangeNode':\n /* falls through */\n\n case 'ConditionalNode':\n /* falls through */\n\n default:\n throw new Error(\"Unimplemented node type in simplifyConstant: \".concat(node.type));\n }\n }\n\n return simplifyConstant;\n});","import { createMap, isMap } from '../../../utils/map.js';\nimport { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'resolve';\nvar dependencies = ['parse', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];\nexport var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n FunctionNode,\n OperatorNode,\n ParenthesisNode\n } = _ref;\n\n /**\n * resolve(expr, scope) replaces variable nodes with their scoped values\n *\n * Syntax:\n *\n * simplify.resolve(expr, scope)\n *\n * Examples:\n *\n * math.simplify.resolve('x + y', {x:1, y:2}) // Node {1 + 2}\n * math.simplify.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}\n * math.simplify('x+y', {x:2, y:'x+x'}).toString() // \"6\"\n *\n * @param {Node} node\n * The expression tree to be simplified\n * @param {Object} scope with variables to be resolved\n */\n function resolve(node, scope) {\n if (!scope) {\n return node;\n }\n\n if (!isMap(scope)) {\n scope = createMap(scope);\n }\n\n if (isSymbolNode(node)) {\n var value = scope.get(node.name);\n\n if (isNode(value)) {\n return resolve(value, scope);\n } else if (typeof value === 'number') {\n return parse(String(value));\n }\n } else if (isOperatorNode(node)) {\n var args = node.args.map(function (arg) {\n return resolve(arg, scope);\n });\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } else if (isParenthesisNode(node)) {\n return new ParenthesisNode(resolve(node.content, scope));\n } else if (isFunctionNode(node)) {\n var _args = node.args.map(function (arg) {\n return resolve(arg, scope);\n });\n\n return new FunctionNode(node.name, _args);\n }\n\n return node;\n }\n\n return resolve;\n});","import { isConstantNode, isParenthesisNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { createUtil } from './simplify/util.js';\nimport { createSimplifyCore } from './simplify/simplifyCore.js';\nimport { createSimplifyConstant } from './simplify/simplifyConstant.js';\nimport { createResolve } from './simplify/resolve.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { createEmptyMap, createMap } from '../../utils/map.js';\nvar name = 'simplify';\nvar dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', '?fraction', '?bignumber', 'mathWithTransform', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n parse,\n add,\n subtract,\n multiply,\n divide,\n pow,\n isZero,\n equal,\n fraction,\n bignumber,\n mathWithTransform,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n var simplifyConstant = createSimplifyConstant({\n typed,\n config,\n mathWithTransform,\n fraction,\n bignumber,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n SymbolNode\n });\n var simplifyCore = createSimplifyCore({\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n ParenthesisNode\n });\n var resolve = createResolve({\n parse,\n FunctionNode,\n OperatorNode,\n ParenthesisNode\n });\n var {\n isCommutative,\n isAssociative,\n flatten,\n unflattenr,\n unflattenl,\n createMakeNodeFunction\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n /**\n * Simplify an expression tree.\n *\n * A list of rules are applied to an expression, repeating over the list until\n * no further changes are made.\n * It's possible to pass a custom set of rules to the function as second\n * argument. A rule can be specified as an object, string, or function:\n *\n * const rules = [\n * { l: 'n1*n3 + n2*n3', r: '(n1+n2)*n3' },\n * 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n * function (node) {\n * // ... return a new node or return the node unchanged\n * return node\n * }\n * ]\n *\n * String and object rules consist of a left and right pattern. The left is\n * used to match against the expression and the right determines what matches\n * are replaced with. The main difference between a pattern and a normal\n * expression is that variables starting with the following characters are\n * interpreted as wildcards:\n *\n * - 'n' - matches any Node\n * - 'c' - matches any ConstantNode\n * - 'v' - matches any Node that is not a ConstantNode\n *\n * The default list of rules is exposed on the function as `simplify.rules`\n * and can be used as a basis to built a set of custom rules.\n *\n * For more details on the theory, see:\n *\n * - [Strategies for simplifying math expressions (Stackoverflow)](https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions)\n * - [Symbolic computation - Simplification (Wikipedia)](https://en.wikipedia.org/wiki/Symbolic_computation#Simplification)\n *\n * An optional `options` argument can be passed as last argument of `simplify`.\n * There is currently one option available:\n * - `exactFractions`: a boolean which is `true` by default.\n * - `fractionsLimit`: when `exactFractions` is true, a fraction will be returned\n * only when both numerator and denominator are smaller than `fractionsLimit`.\n * Default value is 10000.\n *\n * Syntax:\n *\n * simplify(expr)\n * simplify(expr, rules)\n * simplify(expr, rules)\n * simplify(expr, rules, scope)\n * simplify(expr, rules, scope, options)\n * simplify(expr, scope)\n * simplify(expr, scope, options)\n *\n * Examples:\n *\n * math.simplify('2 * 1 * x ^ (2 - 1)') // Node \"2 * x\"\n * math.simplify('2 * 3 * x', {x: 4}) // Node \"24\"\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify(f) // Node \"2 * x\"\n * math.simplify('0.4 * x', {}, {exactFractions: true}) // Node \"x * 2 / 5\"\n * math.simplify('0.4 * x', {}, {exactFractions: false}) // Node \"0.4 * x\"\n *\n * See also:\n *\n * derivative, parse, evaluate, rationalize\n *\n * @param {Node | string} expr\n * The expression to be simplified\n * @param {Array<{l:string, r: string} | string | function>} [rules]\n * Optional list with custom rules\n * @return {Node} Returns the simplified form of `expr`\n */\n\n var simplify = typed('simplify', {\n string: function string(expr) {\n return this(parse(expr), this.rules, createEmptyMap(), {});\n },\n 'string, Map | Object': function stringMapObject(expr, scope) {\n return this(parse(expr), this.rules, scope, {});\n },\n 'string, Map | Object, Object': function stringMapObjectObject(expr, scope, options) {\n return this(parse(expr), this.rules, scope, options);\n },\n 'string, Array': function stringArray(expr, rules) {\n return this(parse(expr), rules, createEmptyMap(), {});\n },\n 'string, Array, Map | Object': function stringArrayMapObject(expr, rules, scope) {\n return this(parse(expr), rules, scope, {});\n },\n 'string, Array, Map | Object, Object': function stringArrayMapObjectObject(expr, rules, scope, options) {\n return this(parse(expr), rules, scope, options);\n },\n 'Node, Map | Object': function NodeMapObject(expr, scope) {\n return this(expr, this.rules, scope, {});\n },\n 'Node, Map | Object, Object': function NodeMapObjectObject(expr, scope, options) {\n return this(expr, this.rules, scope, options);\n },\n Node: function Node(expr) {\n return this(expr, this.rules, createEmptyMap(), {});\n },\n 'Node, Array': function NodeArray(expr, rules) {\n return this(expr, rules, createEmptyMap(), {});\n },\n 'Node, Array, Map | Object': function NodeArrayMapObject(expr, rules, scope) {\n return this(expr, rules, scope, {});\n },\n 'Node, Array, Object, Object': function NodeArrayObjectObject(expr, rules, scope, options) {\n return this(expr, rules, createMap(scope), options);\n },\n 'Node, Array, Map, Object': function NodeArrayMapObject(expr, rules, scope, options) {\n rules = _buildRules(rules);\n var res = resolve(expr, scope);\n res = removeParens(res);\n var visited = {};\n var str = res.toString({\n parenthesis: 'all'\n });\n\n while (!visited[str]) {\n visited[str] = true;\n _lastsym = 0; // counter for placeholder symbols\n\n for (var i = 0; i < rules.length; i++) {\n if (typeof rules[i] === 'function') {\n res = rules[i](res, options);\n } else {\n flatten(res);\n res = applyRule(res, rules[i]);\n }\n\n unflattenl(res); // using left-heavy binary tree here since custom rule functions may expect it\n }\n\n str = res.toString({\n parenthesis: 'all'\n });\n }\n\n return res;\n }\n });\n simplify.simplifyCore = simplifyCore;\n simplify.resolve = resolve;\n\n function removeParens(node) {\n return node.transform(function (node, path, parent) {\n return isParenthesisNode(node) ? removeParens(node.content) : node;\n });\n } // All constants that are allowed in rules\n\n\n var SUPPORTED_CONSTANTS = {\n true: true,\n false: true,\n e: true,\n i: true,\n Infinity: true,\n LN2: true,\n LN10: true,\n LOG2E: true,\n LOG10E: true,\n NaN: true,\n phi: true,\n pi: true,\n SQRT1_2: true,\n SQRT2: true,\n tau: true // null: false,\n // undefined: false,\n // version: false,\n\n }; // Array of strings, used to build the ruleSet.\n // Each l (left side) and r (right side) are parsed by\n // the expression parser into a node tree.\n // Left hand sides are matched to subtrees within the\n // expression to be parsed and replaced with the right\n // hand side.\n // TODO: Add support for constraints on constants (either in the form of a '=' expression or a callback [callback allows things like comparing symbols alphabetically])\n // To evaluate lhs constants for rhs constants, use: { l: 'c1+c2', r: 'c3', evaluate: 'c3 = c1 + c2' }. Multiple assignments are separated by ';' in block format.\n // It is possible to get into an infinite loop with conflicting rules\n\n simplify.rules = [simplifyCore, // { l: 'n+0', r: 'n' }, // simplifyCore\n // { l: 'n^0', r: '1' }, // simplifyCore\n // { l: '0*n', r: '0' }, // simplifyCore\n // { l: 'n/n', r: '1'}, // simplifyCore\n // { l: 'n^1', r: 'n' }, // simplifyCore\n // { l: '+n1', r:'n1' }, // simplifyCore\n // { l: 'n--n1', r:'n+n1' }, // simplifyCore\n {\n l: 'log(e)',\n r: '1'\n }, // temporary rules\n {\n l: 'n-n1',\n r: 'n+-n1'\n }, // temporarily replace 'subtract' so we can further flatten the 'add' operator\n {\n l: '-(c*v)',\n r: '(-c) * v'\n }, // make non-constant terms positive\n {\n l: '-v',\n r: '(-1) * v'\n }, {\n l: 'n/n1^n2',\n r: 'n*n1^-n2'\n }, // temporarily replace 'divide' so we can further flatten the 'multiply' operator\n {\n l: 'n/n1',\n r: 'n*n1^-1'\n }, // expand nested exponentiation\n {\n l: '(n ^ n1) ^ n2',\n r: 'n ^ (n1 * n2)'\n }, // collect like factors\n {\n l: 'n*n',\n r: 'n^2'\n }, {\n l: 'n * n^n1',\n r: 'n^(n1+1)'\n }, {\n l: 'n^n1 * n^n2',\n r: 'n^(n1+n2)'\n }, // collect like terms\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, {\n l: 'n1*n2 + n2',\n r: '(n1+1)*n2'\n }, {\n l: 'n1*n3 + n2*n3',\n r: '(n1+n2)*n3'\n }, // remove parenthesis in the case of negating a quantitiy\n {\n l: 'n1 + -1 * (n2 + n3)',\n r: 'n1 + -1 * n2 + -1 * n3'\n }, simplifyConstant, {\n l: '(-n)*n1',\n r: '-(n*n1)'\n }, // make factors positive (and undo 'make non-constant terms positive')\n // ordering of constants\n {\n l: 'c+v',\n r: 'v+c',\n context: {\n add: {\n commutative: false\n }\n }\n }, {\n l: 'v*c',\n r: 'c*v',\n context: {\n multiply: {\n commutative: false\n }\n }\n }, // undo temporary rules\n // { l: '(-1) * n', r: '-n' }, // #811 added test which proved this is redundant\n {\n l: 'n+-n1',\n r: 'n-n1'\n }, // undo replace 'subtract'\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, // undo replace 'divide'\n {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, // '*' before '/'\n {\n l: 'n-(n1+n2)',\n r: 'n-n1-n2'\n }, // '-' before '+'\n // { l: '(n1/n2)/n3', r: 'n1/(n2*n3)' },\n // { l: '(n*n1)/(n*n2)', r: 'n1/n2' },\n {\n l: '1*n',\n r: 'n'\n }, // this pattern can be produced by simplifyConstant\n {\n l: 'n1/(n2/n3)',\n r: '(n1*n3)/n2'\n }];\n /**\n * Parse the string array of rules into nodes\n *\n * Example syntax for rules:\n *\n * Position constants to the left in a product:\n * { l: 'n1 * c1', r: 'c1 * n1' }\n * n1 is any Node, and c1 is a ConstantNode.\n *\n * Apply difference of squares formula:\n * { l: '(n1 - n2) * (n1 + n2)', r: 'n1^2 - n2^2' }\n * n1, n2 mean any Node.\n *\n * Short hand notation:\n * 'n1 * c1 -> c1 * n1'\n */\n\n function _buildRules(rules) {\n // Array of rules to be used to simplify expressions\n var ruleSet = [];\n\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var newRule = void 0;\n var ruleType = typeof rule;\n\n switch (ruleType) {\n case 'string':\n {\n var lr = rule.split('->');\n\n if (lr.length === 2) {\n rule = {\n l: lr[0],\n r: lr[1]\n };\n } else {\n throw SyntaxError('Could not parse rule: ' + rule);\n }\n }\n\n /* falls through */\n\n case 'object':\n newRule = {\n l: removeParens(parse(rule.l)),\n r: removeParens(parse(rule.r))\n };\n\n if (rule.context) {\n newRule.evaluate = rule.context;\n }\n\n if (rule.evaluate) {\n newRule.evaluate = parse(rule.evaluate);\n }\n\n if (isAssociative(newRule.l)) {\n var makeNode = createMakeNodeFunction(newRule.l);\n\n var expandsym = _getExpandPlaceholderSymbol();\n\n newRule.expanded = {};\n newRule.expanded.l = makeNode([newRule.l.clone(), expandsym]); // Push the expandsym into the deepest possible branch.\n // This helps to match the newRule against nodes returned from getSplits() later on.\n\n flatten(newRule.expanded.l);\n unflattenr(newRule.expanded.l);\n newRule.expanded.r = makeNode([newRule.r, expandsym]);\n }\n\n break;\n\n case 'function':\n newRule = rule;\n break;\n\n default:\n throw TypeError('Unsupported type of rule: ' + ruleType);\n } // console.log('Adding rule: ' + rules[i])\n // console.log(newRule)\n\n\n ruleSet.push(newRule);\n }\n\n return ruleSet;\n }\n\n var _lastsym = 0;\n\n function _getExpandPlaceholderSymbol() {\n return new SymbolNode('_p' + _lastsym++);\n }\n /**\n * Returns a simplfied form of node, or the original node if no simplification was possible.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The simplified form of `expr`, or the original node if no simplification was possible.\n */\n\n\n var applyRule = typed('applyRule', {\n 'Node, Object': function NodeObject(node, rule) {\n // console.log('Entering applyRule(' + node.toString() + ')')\n // Do not clone node unless we find a match\n var res = node; // First replace our child nodes with their simplified versions\n // If a child could not be simplified, the assignments will have\n // no effect since the node is returned unchanged\n\n if (res instanceof OperatorNode || res instanceof FunctionNode) {\n if (res.args) {\n for (var i = 0; i < res.args.length; i++) {\n res.args[i] = applyRule(res.args[i], rule);\n }\n }\n } else if (res instanceof ParenthesisNode) {\n if (res.content) {\n res.content = applyRule(res.content, rule);\n }\n } // Try to match a rule against this node\n\n\n var repl = rule.r;\n\n var matches = _ruleMatch(rule.l, res)[0]; // If the rule is associative operator, we can try matching it while allowing additional terms.\n // This allows us to match rules like 'n+n' to the expression '(1+x)+x' or even 'x+1+x' if the operator is commutative.\n\n\n if (!matches && rule.expanded) {\n repl = rule.expanded.r;\n matches = _ruleMatch(rule.expanded.l, res)[0];\n }\n\n if (matches) {\n // const before = res.toString({parenthesis: 'all'})\n // Create a new node by cloning the rhs of the matched rule\n // we keep any implicit multiplication state if relevant\n var implicit = res.implicit;\n res = repl.clone();\n\n if (implicit && 'implicit' in repl) {\n res.implicit = true;\n } // Replace placeholders with their respective nodes without traversing deeper into the replaced nodes\n\n\n res = res.transform(function (node) {\n if (node.isSymbolNode && hasOwnProperty(matches.placeholders, node.name)) {\n return matches.placeholders[node.name].clone();\n } else {\n return node;\n }\n }); // const after = res.toString({parenthesis: 'all'})\n // console.log('Simplified ' + before + ' to ' + after)\n }\n\n return res;\n }\n });\n /**\n * Get (binary) combinations of a flattened binary node\n * e.g. +(node1, node2, node3) -> [\n * +(node1, +(node2, node3)),\n * +(node2, +(node1, node3)),\n * +(node3, +(node1, node2))]\n *\n */\n\n function getSplits(node, context) {\n var res = [];\n var right, rightArgs;\n var makeNode = createMakeNodeFunction(node);\n\n if (isCommutative(node, context)) {\n for (var i = 0; i < node.args.length; i++) {\n rightArgs = node.args.slice(0);\n rightArgs.splice(i, 1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[i], right]));\n }\n } else {\n rightArgs = node.args.slice(1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[0], right]));\n }\n\n return res;\n }\n /**\n * Returns the set union of two match-placeholders or null if there is a conflict.\n */\n\n\n function mergeMatch(match1, match2) {\n var res = {\n placeholders: {}\n }; // Some matches may not have placeholders; this is OK\n\n if (!match1.placeholders && !match2.placeholders) {\n return res;\n } else if (!match1.placeholders) {\n return match2;\n } else if (!match2.placeholders) {\n return match1;\n } // Placeholders with the same key must match exactly\n\n\n for (var key in match1.placeholders) {\n if (hasOwnProperty(match1.placeholders, key)) {\n res.placeholders[key] = match1.placeholders[key];\n\n if (hasOwnProperty(match2.placeholders, key)) {\n if (!_exactMatch(match1.placeholders[key], match2.placeholders[key])) {\n return null;\n }\n }\n }\n }\n\n for (var _key in match2.placeholders) {\n if (hasOwnProperty(match2.placeholders, _key)) {\n res.placeholders[_key] = match2.placeholders[_key];\n }\n }\n\n return res;\n }\n /**\n * Combine two lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n */\n\n\n function combineChildMatches(list1, list2) {\n var res = [];\n\n if (list1.length === 0 || list2.length === 0) {\n return res;\n }\n\n var merged;\n\n for (var i1 = 0; i1 < list1.length; i1++) {\n for (var i2 = 0; i2 < list2.length; i2++) {\n merged = mergeMatch(list1[i1], list2[i2]);\n\n if (merged) {\n res.push(merged);\n }\n }\n }\n\n return res;\n }\n /**\n * Combine multiple lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n * Returns a list of unique matches.\n */\n\n\n function mergeChildMatches(childMatches) {\n if (childMatches.length === 0) {\n return childMatches;\n }\n\n var sets = childMatches.reduce(combineChildMatches);\n var uniqueSets = [];\n var unique = {};\n\n for (var i = 0; i < sets.length; i++) {\n var s = JSON.stringify(sets[i]);\n\n if (!unique[s]) {\n unique[s] = true;\n uniqueSets.push(sets[i]);\n }\n }\n\n return uniqueSets;\n }\n /**\n * Determines whether node matches rule.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} rule\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @return {Object} Information about the match, if it exists.\n */\n\n\n function _ruleMatch(rule, node, isSplit) {\n // console.log('Entering _ruleMatch(' + JSON.stringify(rule) + ', ' + JSON.stringify(node) + ')')\n // console.log('rule = ' + rule)\n // console.log('node = ' + node)\n // console.log('Entering _ruleMatch(' + rule.toString() + ', ' + node.toString() + ')')\n var res = [{\n placeholders: {}\n }];\n\n if (rule instanceof OperatorNode && node instanceof OperatorNode || rule instanceof FunctionNode && node instanceof FunctionNode) {\n // If the rule is an OperatorNode or a FunctionNode, then node must match exactly\n if (rule instanceof OperatorNode) {\n if (rule.op !== node.op || rule.fn !== node.fn) {\n return [];\n }\n } else if (rule instanceof FunctionNode) {\n if (rule.name !== node.name) {\n return [];\n }\n } // rule and node match. Search the children of rule and node.\n\n\n if (node.args.length === 1 && rule.args.length === 1 || !isAssociative(node) && node.args.length === rule.args.length || isSplit) {\n // Expect non-associative operators to match exactly\n var childMatches = [];\n\n for (var i = 0; i < rule.args.length; i++) {\n var childMatch = _ruleMatch(rule.args[i], node.args[i]);\n\n if (childMatch.length === 0) {\n // Child did not match, so stop searching immediately\n return [];\n } // The child matched, so add the information returned from the child to our result\n\n\n childMatches.push(childMatch);\n }\n\n res = mergeChildMatches(childMatches);\n } else if (node.args.length >= 2 && rule.args.length === 2) {\n // node is flattened, rule is not\n // Associative operators/functions can be split in different ways so we check if the rule matches each\n // them and return their union.\n var splits = getSplits(node, rule.context);\n var splitMatches = [];\n\n for (var _i = 0; _i < splits.length; _i++) {\n var matchSet = _ruleMatch(rule, splits[_i], true); // recursing at the same tree depth here\n\n\n splitMatches = splitMatches.concat(matchSet);\n }\n\n return splitMatches;\n } else if (rule.args.length > 2) {\n throw Error('Unexpected non-binary associative function: ' + rule.toString());\n } else {\n // Incorrect number of arguments in rule and node, so no match\n return [];\n }\n } else if (rule instanceof SymbolNode) {\n // If the rule is a SymbolNode, then it carries a special meaning\n // according to the first character of the symbol node name.\n // c.* matches a ConstantNode\n // n.* matches any node\n if (rule.name.length === 0) {\n throw new Error('Symbol in rule has 0 length...!?');\n }\n\n if (SUPPORTED_CONSTANTS[rule.name]) {\n // built-in constant must match exactly\n if (rule.name !== node.name) {\n return [];\n }\n } else if (rule.name[0] === 'n' || rule.name.substring(0, 2) === '_p') {\n // rule matches _anything_, so assign this node to the rule.name placeholder\n // Assign node to the rule.name placeholder.\n // Our parent will check for matches among placeholders.\n res[0].placeholders[rule.name] = node;\n } else if (rule.name[0] === 'v') {\n // rule matches any variable thing (not a ConstantNode)\n if (!isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // Mis-match: rule was expecting something other than a ConstantNode\n return [];\n }\n } else if (rule.name[0] === 'c') {\n // rule matches any ConstantNode\n if (node instanceof ConstantNode) {\n res[0].placeholders[rule.name] = node;\n } else {\n // Mis-match: rule was expecting a ConstantNode\n return [];\n }\n } else {\n throw new Error('Invalid symbol in rule: ' + rule.name);\n }\n } else if (rule instanceof ConstantNode) {\n // Literal constant must match exactly\n if (!equal(rule.value, node.value)) {\n return [];\n }\n } else {\n // Some other node was encountered which we aren't prepared for, so no match\n return [];\n } // It's a match!\n // console.log('_ruleMatch(' + rule.toString() + ', ' + node.toString() + ') found a match')\n\n\n return res;\n }\n /**\n * Determines whether p and q (and all their children nodes) are identical.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} p\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} q\n * @return {Object} Information about the match, if it exists.\n */\n\n\n function _exactMatch(p, q) {\n if (p instanceof ConstantNode && q instanceof ConstantNode) {\n if (!equal(p.value, q.value)) {\n return false;\n }\n } else if (p instanceof SymbolNode && q instanceof SymbolNode) {\n if (p.name !== q.name) {\n return false;\n }\n } else if (p instanceof OperatorNode && q instanceof OperatorNode || p instanceof FunctionNode && q instanceof FunctionNode) {\n if (p instanceof OperatorNode) {\n if (p.op !== q.op || p.fn !== q.fn) {\n return false;\n }\n } else if (p instanceof FunctionNode) {\n if (p.name !== q.name) {\n return false;\n }\n }\n\n if (p.args.length !== q.args.length) {\n return false;\n }\n\n for (var i = 0; i < p.args.length; i++) {\n if (!_exactMatch(p.args[i], q.args[i])) {\n return false;\n }\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n return simplify;\n});","import { isConstantNode, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'derivative';\nvar dependencies = ['typed', 'config', 'parse', 'simplify', 'equal', 'isZero', 'numeric', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n parse,\n simplify,\n equal,\n isZero,\n numeric,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n\n /**\n * Takes the derivative of an expression expressed in parser Nodes.\n * The derivative will be taken over the supplied variable in the\n * second parameter. If there are multiple variables in the expression,\n * it will return a partial derivative.\n *\n * This uses rules of differentiation which can be found here:\n *\n * - [Differentiation rules (Wikipedia)](https://en.wikipedia.org/wiki/Differentiation_rules)\n *\n * Syntax:\n *\n * derivative(expr, variable)\n * derivative(expr, variable, options)\n *\n * Examples:\n *\n * math.derivative('x^2', 'x') // Node {2 * x}\n * math.derivative('x^2', 'x', {simplify: false}) // Node {2 * 1 * x ^ (2 - 1)\n * math.derivative('sin(2x)', 'x')) // Node {2 * cos(2 * x)}\n * math.derivative('2*x', 'x').evaluate() // number 2\n * math.derivative('x^2', 'x').evaluate({x: 4}) // number 8\n * const f = math.parse('x^2')\n * const x = math.parse('x')\n * math.derivative(f, x) // Node {2 * x}\n *\n * See also:\n *\n * simplify, parse, evaluate\n *\n * @param {Node | string} expr The expression to differentiate\n * @param {SymbolNode | string} variable The variable over which to differentiate\n * @param {{simplify: boolean}} [options]\n * There is one option available, `simplify`, which\n * is true by default. When false, output will not\n * be simplified.\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n var derivative = typed('derivative', {\n 'Node, SymbolNode, Object': function NodeSymbolNodeObject(expr, variable, options) {\n var constNodes = {};\n constTag(constNodes, expr, variable.name);\n\n var res = _derivative(expr, constNodes);\n\n return options.simplify ? simplify(res) : res;\n },\n 'Node, SymbolNode': function NodeSymbolNode(expr, variable) {\n return this(expr, variable, {\n simplify: true\n });\n },\n 'string, SymbolNode': function stringSymbolNode(expr, variable) {\n return this(parse(expr), variable);\n },\n 'string, SymbolNode, Object': function stringSymbolNodeObject(expr, variable, options) {\n return this(parse(expr), variable, options);\n },\n 'string, string': function stringString(expr, variable) {\n return this(parse(expr), parse(variable));\n },\n 'string, string, Object': function stringStringObject(expr, variable, options) {\n return this(parse(expr), parse(variable), options);\n },\n 'Node, string': function NodeString(expr, variable) {\n return this(expr, parse(variable));\n },\n 'Node, string, Object': function NodeStringObject(expr, variable, options) {\n return this(expr, parse(variable), options);\n } // TODO: replace the 8 signatures above with 4 as soon as typed-function supports optional arguments\n\n /* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}\n 'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {\n let res = expr\n for (let i = 0; i < order; i++) {\n let constNodes = {}\n constTag(constNodes, expr, variable.name)\n res = _derivative(res, constNodes)\n }\n return res\n }\n */\n\n });\n derivative._simplify = true;\n\n derivative.toTex = function (deriv) {\n return _derivTex.apply(null, deriv.args);\n }; // FIXME: move the toTex method of derivative to latex.js. Difficulty is that it relies on parse.\n // NOTE: the optional \"order\" parameter here is currently unused\n\n\n var _derivTex = typed('_derivTex', {\n 'Node, SymbolNode': function NodeSymbolNode(expr, x) {\n if (isConstantNode(expr) && typeOf(expr.value) === 'string') {\n return _derivTex(parse(expr.value).toString(), x.toString(), 1);\n } else {\n return _derivTex(expr.toString(), x.toString(), 1);\n }\n },\n 'Node, ConstantNode': function NodeConstantNode(expr, x) {\n if (typeOf(x.value) === 'string') {\n return _derivTex(expr, parse(x.value));\n } else {\n throw new Error(\"The second parameter to 'derivative' is a non-string constant\");\n }\n },\n 'Node, SymbolNode, ConstantNode': function NodeSymbolNodeConstantNode(expr, x, order) {\n return _derivTex(expr.toString(), x.name, order.value);\n },\n 'string, string, number': function stringStringNumber(expr, x, order) {\n var d;\n\n if (order === 1) {\n d = '{d\\\\over d' + x + '}';\n } else {\n d = '{d^{' + order + '}\\\\over d' + x + '^{' + order + '}}';\n }\n\n return d + \"\\\\left[\".concat(expr, \"\\\\right]\");\n }\n });\n /**\n * Does a depth-first search on the expression tree to identify what Nodes\n * are constants (e.g. 2 + 2), and stores the ones that are constants in\n * constNodes. Classification is done as follows:\n *\n * 1. ConstantNodes are constants.\n * 2. If there exists a SymbolNode, of which we are differentiating over,\n * in the subtree it is not constant.\n *\n * @param {Object} constNodes Holds the nodes that are constant\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {string} varName Variable that we are differentiating\n * @return {boolean} if node is constant\n */\n // TODO: can we rewrite constTag into a pure function?\n\n\n var constTag = typed('constTag', {\n 'Object, ConstantNode, string': function ObjectConstantNodeString(constNodes, node) {\n constNodes[node] = true;\n return true;\n },\n 'Object, SymbolNode, string': function ObjectSymbolNodeString(constNodes, node, varName) {\n // Treat other variables like constants. For reasoning, see:\n // https://en.wikipedia.org/wiki/Partial_derivative\n if (node.name !== varName) {\n constNodes[node] = true;\n return true;\n }\n\n return false;\n },\n 'Object, ParenthesisNode, string': function ObjectParenthesisNodeString(constNodes, node, varName) {\n return constTag(constNodes, node.content, varName);\n },\n 'Object, FunctionAssignmentNode, string': function ObjectFunctionAssignmentNodeString(constNodes, node, varName) {\n if (node.params.indexOf(varName) === -1) {\n constNodes[node] = true;\n return true;\n }\n\n return constTag(constNodes, node.expr, varName);\n },\n 'Object, FunctionNode | OperatorNode, string': function ObjectFunctionNodeOperatorNodeString(constNodes, node, varName) {\n if (node.args.length > 0) {\n var isConst = constTag(constNodes, node.args[0], varName);\n\n for (var i = 1; i < node.args.length; ++i) {\n isConst = constTag(constNodes, node.args[i], varName) && isConst;\n }\n\n if (isConst) {\n constNodes[node] = true;\n return true;\n }\n }\n\n return false;\n }\n });\n /**\n * Applies differentiation rules.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} constNodes Holds the nodes that are constant\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n\n var _derivative = typed('_derivative', {\n 'ConstantNode, Object': function ConstantNodeObject(node) {\n return createConstantNode(0);\n },\n 'SymbolNode, Object': function SymbolNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n return createConstantNode(1);\n },\n 'ParenthesisNode, Object': function ParenthesisNodeObject(node, constNodes) {\n return new ParenthesisNode(_derivative(node.content, constNodes));\n },\n 'FunctionAssignmentNode, Object': function FunctionAssignmentNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n return _derivative(node.expr, constNodes);\n },\n 'FunctionNode, Object': function FunctionNodeObject(node, constNodes) {\n if (node.args.length !== 1) {\n funcArgsCheck(node);\n }\n\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n var arg0 = node.args[0];\n var arg1;\n var div = false; // is output a fraction?\n\n var negative = false; // is output negative?\n\n var funcDerivative;\n\n switch (node.name) {\n case 'cbrt':\n // d/dx(cbrt(x)) = 1 / (3x^(2/3))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(3), new OperatorNode('^', 'pow', [arg0, new OperatorNode('/', 'divide', [createConstantNode(2), createConstantNode(3)])])]);\n break;\n\n case 'sqrt':\n case 'nthRoot':\n // d/dx(sqrt(x)) = 1 / (2*sqrt(x))\n if (node.args.length === 1) {\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(2), new FunctionNode('sqrt', [arg0])]);\n } else if (node.args.length === 2) {\n // Rearrange from nthRoot(x, a) -> x^(1/a)\n arg1 = new OperatorNode('/', 'divide', [createConstantNode(1), node.args[1]]); // Is a variable?\n\n constNodes[arg1] = constNodes[node.args[1]];\n return _derivative(new OperatorNode('^', 'pow', [arg0, arg1]), constNodes);\n }\n\n break;\n\n case 'log10':\n arg1 = createConstantNode(10);\n\n /* fall through! */\n\n case 'log':\n if (!arg1 && node.args.length === 1) {\n // d/dx(log(x)) = 1 / x\n funcDerivative = arg0.clone();\n div = true;\n } else if (node.args.length === 1 && arg1 || node.args.length === 2 && constNodes[node.args[1]] !== undefined) {\n // d/dx(log(x, c)) = 1 / (x*ln(c))\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('log', [arg1 || node.args[1]])]);\n div = true;\n } else if (node.args.length === 2) {\n // d/dx(log(f(x), g(x))) = d/dx(log(f(x)) / log(g(x)))\n return _derivative(new OperatorNode('/', 'divide', [new FunctionNode('log', [arg0]), new FunctionNode('log', [node.args[1]])]), constNodes);\n }\n\n break;\n\n case 'pow':\n constNodes[arg1] = constNodes[node.args[1]]; // Pass to pow operator node parser\n\n return _derivative(new OperatorNode('^', 'pow', [arg0, node.args[1]]), constNodes);\n\n case 'exp':\n // d/dx(e^x) = e^x\n funcDerivative = new FunctionNode('exp', [arg0.clone()]);\n break;\n\n case 'sin':\n // d/dx(sin(x)) = cos(x)\n funcDerivative = new FunctionNode('cos', [arg0.clone()]);\n break;\n\n case 'cos':\n // d/dx(cos(x)) = -sin(x)\n funcDerivative = new OperatorNode('-', 'unaryMinus', [new FunctionNode('sin', [arg0.clone()])]);\n break;\n\n case 'tan':\n // d/dx(tan(x)) = sec(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sec', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'sec':\n // d/dx(sec(x)) = sec(x)tan(x)\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tan', [arg0.clone()])]);\n break;\n\n case 'csc':\n // d/dx(csc(x)) = -csc(x)cot(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('cot', [arg0.clone()])]);\n break;\n\n case 'cot':\n // d/dx(cot(x)) = -csc(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csc', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'asin':\n // d/dx(asin(x)) = 1 / sqrt(1 - x^2)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n\n case 'acos':\n // d/dx(acos(x)) = -1 / sqrt(1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n\n case 'atan':\n // d/dx(atan(x)) = 1 / (x^2 + 1)\n div = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n\n case 'asec':\n // d/dx(asec(x)) = 1 / (|x|*sqrt(x^2 - 1))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n\n case 'acsc':\n // d/dx(acsc(x)) = -1 / (|x|*sqrt(x^2 - 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n\n case 'acot':\n // d/dx(acot(x)) = -1 / (x^2 + 1)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n\n case 'sinh':\n // d/dx(sinh(x)) = cosh(x)\n funcDerivative = new FunctionNode('cosh', [arg0.clone()]);\n break;\n\n case 'cosh':\n // d/dx(cosh(x)) = sinh(x)\n funcDerivative = new FunctionNode('sinh', [arg0.clone()]);\n break;\n\n case 'tanh':\n // d/dx(tanh(x)) = sech(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sech', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'sech':\n // d/dx(sech(x)) = -sech(x)tanh(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tanh', [arg0.clone()])]);\n break;\n\n case 'csch':\n // d/dx(csch(x)) = -csch(x)coth(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('coth', [arg0.clone()])]);\n break;\n\n case 'coth':\n // d/dx(coth(x)) = -csch(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csch', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'asinh':\n // d/dx(asinh(x)) = 1 / sqrt(x^2 + 1)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n\n case 'acosh':\n // d/dx(acosh(x)) = 1 / sqrt(x^2 - 1); XXX potentially only for x >= 1 (the real spectrum)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n\n case 'atanh':\n // d/dx(atanh(x)) = 1 / (1 - x^2)\n div = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n\n case 'asech':\n // d/dx(asech(x)) = -1 / (x*sqrt(1 - x^2))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])])]);\n break;\n\n case 'acsch':\n // d/dx(acsch(x)) = -1 / (|x|*sqrt(x^2 + 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n\n case 'acoth':\n // d/dx(acoth(x)) = -1 / (1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n\n case 'abs':\n // d/dx(abs(x)) = abs(x)/x\n funcDerivative = new OperatorNode('/', 'divide', [new FunctionNode(new SymbolNode('abs'), [arg0.clone()]), arg0.clone()]);\n break;\n\n case 'gamma': // Needs digamma function, d/dx(gamma(x)) = gamma(x)digamma(x)\n\n default:\n throw new Error('Function \"' + node.name + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n\n var op, func;\n\n if (div) {\n op = '/';\n func = 'divide';\n } else {\n op = '*';\n func = 'multiply';\n }\n /* Apply chain rule to all functions:\n F(x) = f(g(x))\n F'(x) = g'(x)*f'(g(x)) */\n\n\n var chainDerivative = _derivative(arg0, constNodes);\n\n if (negative) {\n chainDerivative = new OperatorNode('-', 'unaryMinus', [chainDerivative]);\n }\n\n return new OperatorNode(op, func, [chainDerivative, funcDerivative]);\n },\n 'OperatorNode, Object': function OperatorNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n if (node.op === '+') {\n // d/dx(sum(f(x)) = sum(f'(x))\n return new OperatorNode(node.op, node.fn, node.args.map(function (arg) {\n return _derivative(arg, constNodes);\n }));\n }\n\n if (node.op === '-') {\n // d/dx(+/-f(x)) = +/-f'(x)\n if (node.isUnary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes)]);\n } // Linearity of differentiation, d/dx(f(x) +/- g(x)) = f'(x) +/- g'(x)\n\n\n if (node.isBinary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes), _derivative(node.args[1], constNodes)]);\n }\n }\n\n if (node.op === '*') {\n // d/dx(c*f(x)) = c*f'(x)\n var constantTerms = node.args.filter(function (arg) {\n return constNodes[arg] !== undefined;\n });\n\n if (constantTerms.length > 0) {\n var nonConstantTerms = node.args.filter(function (arg) {\n return constNodes[arg] === undefined;\n });\n var nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode('*', 'multiply', nonConstantTerms);\n var newArgs = constantTerms.concat(_derivative(nonConstantNode, constNodes));\n return new OperatorNode('*', 'multiply', newArgs);\n } // Product Rule, d/dx(f(x)*g(x)) = f'(x)*g(x) + f(x)*g'(x)\n\n\n return new OperatorNode('+', 'add', node.args.map(function (argOuter) {\n return new OperatorNode('*', 'multiply', node.args.map(function (argInner) {\n return argInner === argOuter ? _derivative(argInner, constNodes) : argInner.clone();\n }));\n }));\n }\n\n if (node.op === '/' && node.isBinary()) {\n var arg0 = node.args[0];\n var arg1 = node.args[1]; // d/dx(f(x) / c) = f'(x) / c\n\n if (constNodes[arg1] !== undefined) {\n return new OperatorNode('/', 'divide', [_derivative(arg0, constNodes), arg1]);\n } // Reciprocal Rule, d/dx(c / f(x)) = -c(f'(x)/f(x)^2)\n\n\n if (constNodes[arg0] !== undefined) {\n return new OperatorNode('*', 'multiply', [new OperatorNode('-', 'unaryMinus', [arg0]), new OperatorNode('/', 'divide', [_derivative(arg1, constNodes), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])])]);\n } // Quotient rule, d/dx(f(x) / g(x)) = (f'(x)g(x) - f(x)g'(x)) / g(x)^2\n\n\n return new OperatorNode('/', 'divide', [new OperatorNode('-', 'subtract', [new OperatorNode('*', 'multiply', [_derivative(arg0, constNodes), arg1.clone()]), new OperatorNode('*', 'multiply', [arg0.clone(), _derivative(arg1, constNodes)])]), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])]);\n }\n\n if (node.op === '^' && node.isBinary()) {\n var _arg = node.args[0];\n var _arg2 = node.args[1];\n\n if (constNodes[_arg] !== undefined) {\n // If is secretly constant; 0^f(x) = 1 (in JS), 1^f(x) = 1\n if (isConstantNode(_arg) && (isZero(_arg.value) || equal(_arg.value, 1))) {\n return createConstantNode(0);\n } // d/dx(c^f(x)) = c^f(x)*ln(c)*f'(x)\n\n\n return new OperatorNode('*', 'multiply', [node, new OperatorNode('*', 'multiply', [new FunctionNode('log', [_arg.clone()]), _derivative(_arg2.clone(), constNodes)])]);\n }\n\n if (constNodes[_arg2] !== undefined) {\n if (isConstantNode(_arg2)) {\n // If is secretly constant; f(x)^0 = 1 -> d/dx(1) = 0\n if (isZero(_arg2.value)) {\n return createConstantNode(0);\n } // Ignore exponent; f(x)^1 = f(x)\n\n\n if (equal(_arg2.value, 1)) {\n return _derivative(_arg, constNodes);\n }\n } // Elementary Power Rule, d/dx(f(x)^c) = c*f'(x)*f(x)^(c-1)\n\n\n var powMinusOne = new OperatorNode('^', 'pow', [_arg.clone(), new OperatorNode('-', 'subtract', [_arg2, createConstantNode(1)])]);\n return new OperatorNode('*', 'multiply', [_arg2.clone(), new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), powMinusOne])]);\n } // Functional Power Rule, d/dx(f^g) = f^g*[f'*(g/f) + g'ln(f)]\n\n\n return new OperatorNode('*', 'multiply', [new OperatorNode('^', 'pow', [_arg.clone(), _arg2.clone()]), new OperatorNode('+', 'add', [new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), new OperatorNode('/', 'divide', [_arg2.clone(), _arg.clone()])]), new OperatorNode('*', 'multiply', [_derivative(_arg2, constNodes), new FunctionNode('log', [_arg.clone()])])])]);\n }\n\n throw new Error('Operator \"' + node.op + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n });\n /**\n * Ensures the number of arguments for a function are correct,\n * and will throw an error otherwise.\n *\n * @param {FunctionNode} node\n */\n\n\n function funcArgsCheck(node) {\n // TODO add min, max etc\n if ((node.name === 'log' || node.name === 'nthRoot' || node.name === 'pow') && node.args.length === 2) {\n return;\n } // There should be an incorrect number of arguments if we reach here\n // Change all args to constants to avoid unidentified\n // symbol error when compiling function\n\n\n for (var i = 0; i < node.args.length; ++i) {\n node.args[i] = createConstantNode(0);\n }\n\n node.compile().evaluate();\n throw new Error('Expected TypeError, but none found');\n }\n /**\n * Helper function to create a constant node with a specific type\n * (number, BigNumber, Fraction)\n * @param {number} value\n * @param {string} [valueType]\n * @return {ConstantNode}\n */\n\n\n function createConstantNode(value, valueType) {\n return new ConstantNode(numeric(value, valueType || config.number));\n }\n\n return derivative;\n});","import { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createSimplifyConstant } from './simplify/simplifyConstant.js';\nimport { createSimplifyCore } from './simplify/simplifyCore.js';\nvar name = 'rationalize';\nvar dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'SymbolNode', 'ParenthesisNode'];\nexport var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n parse,\n simplify,\n fraction,\n bignumber,\n mathWithTransform,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n SymbolNode,\n ParenthesisNode\n } = _ref;\n var simplifyConstant = createSimplifyConstant({\n typed,\n config,\n mathWithTransform,\n fraction,\n bignumber,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n SymbolNode\n });\n var simplifyCore = createSimplifyCore({\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n ConstantNode,\n OperatorNode,\n FunctionNode,\n ParenthesisNode\n });\n /**\n * Transform a rationalizable expression in a rational fraction.\n * If rational fraction is one variable polynomial then converts\n * the numerator and denominator in canonical form, with decreasing\n * exponents, returning the coefficients of numerator.\n *\n * Syntax:\n *\n * rationalize(expr)\n * rationalize(expr, detailed)\n * rationalize(expr, scope)\n * rationalize(expr, scope, detailed)\n *\n * Examples:\n *\n * math.rationalize('sin(x)+y')\n * // Error: There is an unsolved function call\n * math.rationalize('2x/y - y/(x+1)')\n * // (2*x^2-y^2+2*x)/(x*y+y)\n * math.rationalize('(2x+1)^6')\n * // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1\n * math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3')\n * // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4)\n * math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') =\n * // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/\n * // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72)\n *\n * math.rationalize('x+x+x+y',{y:1}) // 3*x+1\n * math.rationalize('x+x+x+y',{}) // 3*x+y\n *\n * const ret = math.rationalize('x+x+x+y',{},true)\n * // ret.expression=3*x+y, ret.variables = [\"x\",\"y\"]\n * const ret = math.rationalize('-2+5x^2',{},true)\n * // ret.expression=5*x^2-2, ret.variables = [\"x\"], ret.coefficients=[-2,0,5]\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to check if is a polynomial expression\n * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input\n * @param {Boolean} detailed optional True if return an object, false if return expression node (default)\n *\n * @return {Object | Node} The rational polynomial of `expr` or na object\n * {Object}\n * {Expression Node} expression: node simplified expression\n * {Expression Node} numerator: simplified numerator of expression\n * {Expression Node | boolean} denominator: simplified denominator or false (if there is no denominator)\n * {Array} variables: variable names\n * {Array} coefficients: coefficients of numerator sorted by increased exponent\n * {Expression Node} node simplified expression\n *\n */\n\n return typed(name, {\n string: function string(expr) {\n return this(parse(expr), {}, false);\n },\n 'string, boolean': function stringBoolean(expr, detailed) {\n return this(parse(expr), {}, detailed);\n },\n 'string, Object': function stringObject(expr, scope) {\n return this(parse(expr), scope, false);\n },\n 'string, Object, boolean': function stringObjectBoolean(expr, scope, detailed) {\n return this(parse(expr), scope, detailed);\n },\n Node: function Node(expr) {\n return this(expr, {}, false);\n },\n 'Node, boolean': function NodeBoolean(expr, detailed) {\n return this(expr, {}, detailed);\n },\n 'Node, Object': function NodeObject(expr, scope) {\n return this(expr, scope, false);\n },\n 'Node, Object, boolean': function NodeObjectBoolean(expr, scope, detailed) {\n var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form\n\n var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial\n\n var nVars = polyRet.variables.length;\n expr = polyRet.expression;\n\n if (nVars >= 1) {\n // If expression in not a constant\n expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)\n\n var sBefore; // Previous expression\n\n var rules;\n var eDistrDiv = true;\n var redoInic = false;\n expr = simplify(expr, setRules.firstRules, {}, {\n exactFractions: false\n }); // Apply the initial rules, including succ div rules\n\n var s;\n\n while (true) {\n // Apply alternately successive division rules and distr.div.rules\n rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;\n expr = simplify(expr, rules); // until no more changes\n\n eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules\n\n s = expr.toString();\n\n if (s === sBefore) {\n break; // No changes : end of the loop\n }\n\n redoInic = true;\n sBefore = s;\n }\n\n if (redoInic) {\n // Apply first rules again without succ div rules (if there are changes)\n expr = simplify(expr, setRules.firstRulesAgain, {}, {\n exactFractions: false\n });\n }\n\n expr = simplify(expr, setRules.finalRules, {}, {\n exactFractions: false\n }); // Apply final rules\n } // NVars >= 1\n\n\n var coefficients = [];\n var retRationalize = {};\n\n if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {\n // Separate numerator from denominator\n if (nVars === 1) {\n expr.args[0] = polyToCanonical(expr.args[0], coefficients);\n expr.args[1] = polyToCanonical(expr.args[1]);\n }\n\n if (detailed) {\n retRationalize.numerator = expr.args[0];\n retRationalize.denominator = expr.args[1];\n }\n } else {\n if (nVars === 1) {\n expr = polyToCanonical(expr, coefficients);\n }\n\n if (detailed) {\n retRationalize.numerator = expr;\n retRationalize.denominator = null;\n }\n } // nVars\n\n\n if (!detailed) return expr;\n retRationalize.coefficients = coefficients;\n retRationalize.variables = polyRet.variables;\n retRationalize.expression = expr;\n return retRationalize;\n } // ^^^^^^^ end of rationalize ^^^^^^^^\n\n }); // end of typed rationalize\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * polynomial(expr,scope,extended, rules)\n *\n * @param {Node | string} expr The expression to simplify and check if is polynomial expression\n * @param {object} scope Optional scope for expression simplification\n * @param {boolean} extended Optional. Default is false. When true allows divide operator.\n * @param {array} rules Optional. Default is no rule.\n *\n *\n * @return {Object}\n * {Object} node: node simplified expression\n * {Array} variables: variable names\n */\n\n function polynomial(expr, scope, extended, rules) {\n var variables = [];\n var node = simplify(expr, rules, scope, {\n exactFractions: false\n }); // Resolves any variables and functions with all defined parameters\n\n extended = !!extended;\n var oper = '+-*' + (extended ? '/' : '');\n recPoly(node);\n var retFunc = {};\n retFunc.expression = node;\n retFunc.variables = variables;\n return retFunc; // -------------------------------------------------------------------------------------------------------\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * recPoly(node)\n *\n *\n * @param {Node} node The current sub tree expression in recursion\n *\n * @return nothing, throw an exception if error\n */\n\n function recPoly(node) {\n var tp = node.type; // node type\n\n if (tp === 'FunctionNode') {\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n if (node.op === '^') {\n // TODO: handle negative exponents like in '1/x^(-2)'\n if (node.args[1].type !== 'ConstantNode' || !isInteger(parseFloat(node.args[1].value))) {\n throw new Error('There is a non-integer exponent');\n } else {\n recPoly(node.args[0]);\n }\n } else {\n if (oper.indexOf(node.op) === -1) {\n throw new Error('Operator ' + node.op + ' invalid in polynomial expression');\n }\n\n for (var i = 0; i < node.args.length; i++) {\n recPoly(node.args[i]);\n }\n } // type of operator\n\n } else if (tp === 'SymbolNode') {\n var _name = node.name; // variable name\n\n var pos = variables.indexOf(_name);\n\n if (pos === -1) {\n // new variable in expression\n variables.push(_name);\n }\n } else if (tp === 'ParenthesisNode') {\n recPoly(node.content);\n } else if (tp !== 'ConstantNode') {\n throw new Error('type ' + tp + ' is not allowed in polynomial expression');\n }\n } // end of recPoly\n\n } // end of polynomial\n // ---------------------------------------------------------------------------------------\n\n /**\n * Return a rule set to rationalize an polynomial expression in rationalize\n *\n * Syntax:\n *\n * rulesRationalize()\n *\n * @return {array} rule set to rationalize an polynomial expression\n */\n\n\n function rulesRationalize() {\n var oldRules = [simplifyCore, // sCore\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, simplifyConstant, // sConstant\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, {\n l: '1*n',\n r: 'n'\n }];\n var rulesFirst = [{\n l: '(-n1)/(-n2)',\n r: 'n1/n2'\n }, // Unary division\n {\n l: '(-n1)*(-n2)',\n r: 'n1*n2'\n }, // Unary multiplication\n {\n l: 'n1--n2',\n r: 'n1+n2'\n }, // '--' elimination\n {\n l: 'n1-n2',\n r: 'n1+(-n2)'\n }, // Subtraction turn into add with un�ry minus\n {\n l: '(n1+n2)*n3',\n r: '(n1*n3 + n2*n3)'\n }, // Distributive 1\n {\n l: 'n1*(n2+n3)',\n r: '(n1*n2+n1*n3)'\n }, // Distributive 2\n {\n l: 'c1*n + c2*n',\n r: '(c1+c2)*n'\n }, // Joining constants\n {\n l: 'c1*n + n',\n r: '(c1+1)*n'\n }, // Joining constants\n {\n l: 'c1*n - c2*n',\n r: '(c1-c2)*n'\n }, // Joining constants\n {\n l: 'c1*n - n',\n r: '(c1-1)*n'\n }, // Joining constants\n {\n l: 'v/c',\n r: '(1/c)*v'\n }, // variable/constant (new!)\n {\n l: 'v/-c',\n r: '-(1/c)*v'\n }, // variable/constant (new!)\n {\n l: '-v*-c',\n r: 'c*v'\n }, // Inversion constant and variable 1\n {\n l: '-v*c',\n r: '-c*v'\n }, // Inversion constant and variable 2\n {\n l: 'v*-c',\n r: '-c*v'\n }, // Inversion constant and variable 3\n {\n l: 'v*c',\n r: 'c*v'\n }, // Inversion constant and variable 4\n {\n l: '-(-n1*n2)',\n r: '(n1*n2)'\n }, // Unary propagation\n {\n l: '-(n1*n2)',\n r: '(-n1*n2)'\n }, // Unary propagation\n {\n l: '-(-n1+n2)',\n r: '(n1-n2)'\n }, // Unary propagation\n {\n l: '-(n1+n2)',\n r: '(-n1-n2)'\n }, // Unary propagation\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n }, // Power to Power\n {\n l: '-(-n1/n2)',\n r: '(n1/n2)'\n }, // Division and Unary\n {\n l: '-(n1/n2)',\n r: '(-n1/n2)'\n }]; // Divisao and Unary\n\n var rulesDistrDiv = [{\n l: '(n1/n2 + n3/n4)',\n r: '((n1*n4 + n3*n2)/(n2*n4))'\n }, // Sum of fractions\n {\n l: '(n1/n2 + n3)',\n r: '((n1 + n3*n2)/n2)'\n }, // Sum fraction with number 1\n {\n l: '(n1 + n2/n3)',\n r: '((n1*n3 + n2)/n3)'\n }]; // Sum fraction with number 1\n\n var rulesSucDiv = [{\n l: '(n1/(n2/n3))',\n r: '((n1*n3)/n2)'\n }, // Division simplification\n {\n l: '(n1/n2/n3)',\n r: '(n1/(n2*n3))'\n }];\n var setRules = {}; // rules set in 4 steps.\n // All rules => infinite loop\n // setRules.allRules =oldRules.concat(rulesFirst,rulesDistrDiv,rulesSucDiv)\n\n setRules.firstRules = oldRules.concat(rulesFirst, rulesSucDiv); // First rule set\n\n setRules.distrDivRules = rulesDistrDiv; // Just distr. div. rules\n\n setRules.sucDivRules = rulesSucDiv; // Jus succ. div. rules\n\n setRules.firstRulesAgain = oldRules.concat(rulesFirst); // Last rules set without succ. div.\n // Division simplification\n // Second rule set.\n // There is no aggregate expression with parentesis, but the only variable can be scattered.\n\n setRules.finalRules = [simplifyCore, // simplify.rules[0]\n {\n l: 'n*-n',\n r: '-n^2'\n }, // Joining multiply with power 1\n {\n l: 'n*n',\n r: 'n^2'\n }, // Joining multiply with power 2\n simplifyConstant, // simplify.rules[14] old 3rd index in oldRules\n {\n l: 'n*-n^n1',\n r: '-n^(n1+1)'\n }, // Joining multiply with power 3\n {\n l: 'n*n^n1',\n r: 'n^(n1+1)'\n }, // Joining multiply with power 4\n {\n l: 'n^n1*-n^n2',\n r: '-n^(n1+n2)'\n }, // Joining multiply with power 5\n {\n l: 'n^n1*n^n2',\n r: 'n^(n1+n2)'\n }, // Joining multiply with power 6\n {\n l: 'n^n1*-n',\n r: '-n^(n1+1)'\n }, // Joining multiply with power 7\n {\n l: 'n^n1*n',\n r: 'n^(n1+1)'\n }, // Joining multiply with power 8\n {\n l: 'n^n1/-n',\n r: '-n^(n1-1)'\n }, // Joining multiply with power 8\n {\n l: 'n^n1/n',\n r: 'n^(n1-1)'\n }, // Joining division with power 1\n {\n l: 'n/-n^n1',\n r: '-n^(1-n1)'\n }, // Joining division with power 2\n {\n l: 'n/n^n1',\n r: 'n^(1-n1)'\n }, // Joining division with power 3\n {\n l: 'n^n1/-n^n2',\n r: 'n^(n1-n2)'\n }, // Joining division with power 4\n {\n l: 'n^n1/n^n2',\n r: 'n^(n1-n2)'\n }, // Joining division with power 5\n {\n l: 'n1+(-n2*n3)',\n r: 'n1-n2*n3'\n }, // Solving useless parenthesis 1\n {\n l: 'v*(-c)',\n r: '-c*v'\n }, // Solving useless unary 2\n {\n l: 'n1+-n2',\n r: 'n1-n2'\n }, // Solving +- together (new!)\n {\n l: 'v*c',\n r: 'c*v'\n }, // inversion constant with variable\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n } // Power to Power\n ];\n return setRules;\n } // End rulesRationalize\n // ---------------------------------------------------------------------------------------\n\n /**\n * Expand recursively a tree node for handling with expressions with exponents\n * (it's not for constants, symbols or functions with exponents)\n * PS: The other parameters are internal for recursion\n *\n * Syntax:\n *\n * expandPower(node)\n *\n * @param {Node} node Current expression node\n * @param {node} parent Parent current node inside the recursion\n * @param (int} Parent number of chid inside the rercursion\n *\n * @return {node} node expression with all powers expanded.\n */\n\n\n function expandPower(node, parent, indParent) {\n var tp = node.type;\n var internal = arguments.length > 1; // TRUE in internal calls\n\n if (tp === 'OperatorNode' && node.isBinary()) {\n var does = false;\n var val;\n\n if (node.op === '^') {\n // First operator: Parenthesis or UnaryMinus\n if ((node.args[0].type === 'ParenthesisNode' || node.args[0].type === 'OperatorNode') && node.args[1].type === 'ConstantNode') {\n // Second operator: Constant\n val = parseFloat(node.args[1].value);\n does = val >= 2 && isInteger(val);\n }\n }\n\n if (does) {\n // Exponent >= 2\n // Before:\n // operator A --> Subtree\n // parent pow\n // constant\n //\n if (val > 2) {\n // Exponent > 2,\n // AFTER: (exponent > 2)\n // operator A --> Subtree\n // parent *\n // deep clone (operator A --> Subtree\n // pow\n // constant - 1\n //\n var nEsqTopo = node.args[0];\n var nDirTopo = new OperatorNode('^', 'pow', [node.args[0].cloneDeep(), new ConstantNode(val - 1)]);\n node = new OperatorNode('*', 'multiply', [nEsqTopo, nDirTopo]);\n } else {\n // Expo = 2 - no power\n // AFTER: (exponent = 2)\n // operator A --> Subtree\n // parent oper\n // deep clone (operator A --> Subtree)\n //\n node = new OperatorNode('*', 'multiply', [node.args[0], node.args[0].cloneDeep()]);\n }\n\n if (internal) {\n // Change parent references in internal recursive calls\n if (indParent === 'content') {\n parent.content = node;\n } else {\n parent.args[indParent] = node;\n }\n }\n } // does\n\n } // binary OperatorNode\n\n\n if (tp === 'ParenthesisNode') {\n // Recursion\n expandPower(node.content, node, 'content');\n } else if (tp !== 'ConstantNode' && tp !== 'SymbolNode') {\n for (var i = 0; i < node.args.length; i++) {\n expandPower(node.args[i], node, i);\n }\n }\n\n if (!internal) {\n // return the root node\n return node;\n }\n } // End expandPower\n // ---------------------------------------------------------------------------------------\n\n /**\n * Auxilary function for rationalize\n * Convert near canonical polynomial in one variable in a canonical polynomial\n * with one term for each exponent in decreasing order\n *\n * Syntax:\n *\n * polyToCanonical(node [, coefficients])\n *\n * @param {Node | string} expr The near canonical polynomial expression to convert in a a canonical polynomial expression\n *\n * The string or tree expression needs to be at below syntax, with free spaces:\n * ( (^(-)? | [+-]? )cte (*)? var (^expo)? | cte )+\n * Where 'var' is one variable with any valid name\n * 'cte' are real numeric constants with any value. It can be omitted if equal than 1\n * 'expo' are integers greater than 0. It can be omitted if equal than 1.\n *\n * @param {array} coefficients Optional returns coefficients sorted by increased exponent\n *\n *\n * @return {node} new node tree with one variable polynomial or string error.\n */\n\n\n function polyToCanonical(node, coefficients) {\n if (coefficients === undefined) {\n coefficients = [];\n } // coefficients.\n\n\n coefficients[0] = 0; // index is the exponent\n\n var o = {};\n o.cte = 1;\n o.oper = '+'; // fire: mark with * or ^ when finds * or ^ down tree, reset to \"\" with + and -.\n // It is used to deduce the exponent: 1 for *, 0 for \"\".\n\n o.fire = '';\n var maxExpo = 0; // maximum exponent\n\n var varname = ''; // variable name\n\n recurPol(node, null, o);\n maxExpo = coefficients.length - 1;\n var first = true;\n var no;\n\n for (var i = maxExpo; i >= 0; i--) {\n if (coefficients[i] === 0) continue;\n var n1 = new ConstantNode(first ? coefficients[i] : Math.abs(coefficients[i]));\n var op = coefficients[i] < 0 ? '-' : '+';\n\n if (i > 0) {\n // Is not a constant without variable\n var n2 = new SymbolNode(varname);\n\n if (i > 1) {\n var n3 = new ConstantNode(i);\n n2 = new OperatorNode('^', 'pow', [n2, n3]);\n }\n\n if (coefficients[i] === -1 && first) {\n n1 = new OperatorNode('-', 'unaryMinus', [n2]);\n } else if (Math.abs(coefficients[i]) === 1) {\n n1 = n2;\n } else {\n n1 = new OperatorNode('*', 'multiply', [n1, n2]);\n }\n }\n\n if (first) {\n no = n1;\n } else if (op === '+') {\n no = new OperatorNode('+', 'add', [no, n1]);\n } else {\n no = new OperatorNode('-', 'subtract', [no, n1]);\n }\n\n first = false;\n } // for\n\n\n if (first) {\n return new ConstantNode(0);\n } else {\n return no;\n }\n /**\n * Recursive auxilary function inside polyToCanonical for\n * converting expression in canonical form\n *\n * Syntax:\n *\n * recurPol(node, noPai, obj)\n *\n * @param {Node} node The current subpolynomial expression\n * @param {Node | Null} noPai The current parent node\n * @param {object} obj Object with many internal flags\n *\n * @return {} No return. If error, throws an exception\n */\n\n\n function recurPol(node, noPai, o) {\n var tp = node.type;\n\n if (tp === 'FunctionNode') {\n // ***** FunctionName *****\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n // ***** OperatorName *****\n if ('+-*^'.indexOf(node.op) === -1) throw new Error('Operator ' + node.op + ' invalid');\n\n if (noPai !== null) {\n // -(unary),^ : children of *,+,-\n if ((node.fn === 'unaryMinus' || node.fn === 'pow') && noPai.fn !== 'add' && noPai.fn !== 'subtract' && noPai.fn !== 'multiply') {\n throw new Error('Invalid ' + node.op + ' placing');\n } // -,+,* : children of +,-\n\n\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'multiply') && noPai.fn !== 'add' && noPai.fn !== 'subtract') {\n throw new Error('Invalid ' + node.op + ' placing');\n } // -,+ : first child\n\n\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'unaryMinus') && o.noFil !== 0) {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n } // Has parent\n // Firers: ^,* Old: ^,&,-(unary): firers\n\n\n if (node.op === '^' || node.op === '*') {\n o.fire = node.op;\n }\n\n for (var _i = 0; _i < node.args.length; _i++) {\n // +,-: reset fire\n if (node.fn === 'unaryMinus') o.oper = '-';\n\n if (node.op === '+' || node.fn === 'subtract') {\n o.fire = '';\n o.cte = 1; // default if there is no constant\n\n o.oper = _i === 0 ? '+' : node.op;\n }\n\n o.noFil = _i; // number of son\n\n recurPol(node.args[_i], node, o);\n } // for in children\n\n } else if (tp === 'SymbolNode') {\n // ***** SymbolName *****\n if (node.name !== varname && varname !== '') {\n throw new Error('There is more than one variable');\n }\n\n varname = node.name;\n\n if (noPai === null) {\n coefficients[1] = 1;\n return;\n } // ^: Symbol is First child\n\n\n if (noPai.op === '^' && o.noFil !== 0) {\n throw new Error('In power the variable should be the first parameter');\n } // *: Symbol is Second child\n\n\n if (noPai.op === '*' && o.noFil !== 1) {\n throw new Error('In multiply the variable should be the second parameter');\n } // Symbol: firers '',* => it means there is no exponent above, so it's 1 (cte * var)\n\n\n if (o.fire === '' || o.fire === '*') {\n if (maxExpo < 1) coefficients[1] = 0;\n coefficients[1] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(1, maxExpo);\n }\n } else if (tp === 'ConstantNode') {\n var valor = parseFloat(node.value);\n\n if (noPai === null) {\n coefficients[0] = valor;\n return;\n }\n\n if (noPai.op === '^') {\n // cte: second child of power\n if (o.noFil !== 1) throw new Error('Constant cannot be powered');\n\n if (!isInteger(valor) || valor <= 0) {\n throw new Error('Non-integer exponent is not allowed');\n }\n\n for (var _i2 = maxExpo + 1; _i2 < valor; _i2++) {\n coefficients[_i2] = 0;\n }\n\n if (valor > maxExpo) coefficients[valor] = 0;\n coefficients[valor] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(valor, maxExpo);\n return;\n }\n\n o.cte = valor; // Cte: firer '' => There is no exponent and no multiplication, so the exponent is 0.\n\n if (o.fire === '') {\n coefficients[0] += o.cte * (o.oper === '+' ? 1 : -1);\n }\n } else {\n throw new Error('Type ' + tp + ' is not allowed');\n }\n } // End of recurPol\n\n } // End of polyToCanonical\n\n});","import { factory } from '../utils/factory.js';\nvar name = 'reviver';\nvar dependencies = ['classes'];\nexport var createReviver = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n classes\n } = _ref;\n\n /**\n * Instantiate mathjs data types from their JSON representation\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the revived object\n */\n return function reviver(key, value) {\n var constructor = classes[value && value.mathjs];\n\n if (constructor && typeof constructor.fromJSON === 'function') {\n return constructor.fromJSON(value);\n }\n\n return value;\n };\n});","import { factory } from '../utils/factory.js';\nvar name = 'replacer';\nvar dependencies = [];\nexport var createReplacer = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Stringify data types into their JSON representation.\n * Most data types can be serialized using their `.toJSON` method,\n * but not all, for example the number `Infinity`. For these cases you have\n * to use the replacer. Example usage:\n *\n * JSON.stringify([2, Infinity], math.replacer)\n *\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the replaced object\n */\n return function replacer(key, value) {\n // the numeric values Infinitiy, -Infinity, and NaN cannot be serialized to JSON\n if (typeof value === 'number' && (!isFinite(value) || isNaN(value))) {\n return {\n mathjs: 'number',\n value: String(value)\n };\n }\n\n return value;\n };\n});","export var pi = Math.PI;\nexport var tau = 2 * Math.PI;\nexport var e = Math.E;\nexport var phi = 1.6180339887498948; // eslint-disable-line no-loss-of-precision","import { factory } from './utils/factory.js';\nimport { version } from './version.js';\nimport { createBigNumberE, createBigNumberPhi, createBigNumberPi, createBigNumberTau } from './utils/bignumber/constants.js';\nimport { pi, tau, e, phi } from './plain/number/index.js';\nexport var createTrue = /* #__PURE__ */factory('true', [], () => true);\nexport var createFalse = /* #__PURE__ */factory('false', [], () => false);\nexport var createNull = /* #__PURE__ */factory('null', [], () => null);\nexport var createInfinity = /* #__PURE__ */recreateFactory('Infinity', ['config', '?BigNumber'], _ref => {\n var {\n config,\n BigNumber\n } = _ref;\n return config.number === 'BigNumber' ? new BigNumber(Infinity) : Infinity;\n});\nexport var createNaN = /* #__PURE__ */recreateFactory('NaN', ['config', '?BigNumber'], _ref2 => {\n var {\n config,\n BigNumber\n } = _ref2;\n return config.number === 'BigNumber' ? new BigNumber(NaN) : NaN;\n});\nexport var createPi = /* #__PURE__ */recreateFactory('pi', ['config', '?BigNumber'], _ref3 => {\n var {\n config,\n BigNumber\n } = _ref3;\n return config.number === 'BigNumber' ? createBigNumberPi(BigNumber) : pi;\n});\nexport var createTau = /* #__PURE__ */recreateFactory('tau', ['config', '?BigNumber'], _ref4 => {\n var {\n config,\n BigNumber\n } = _ref4;\n return config.number === 'BigNumber' ? createBigNumberTau(BigNumber) : tau;\n});\nexport var createE = /* #__PURE__ */recreateFactory('e', ['config', '?BigNumber'], _ref5 => {\n var {\n config,\n BigNumber\n } = _ref5;\n return config.number === 'BigNumber' ? createBigNumberE(BigNumber) : e;\n}); // golden ratio, (1+sqrt(5))/2\n\nexport var createPhi = /* #__PURE__ */recreateFactory('phi', ['config', '?BigNumber'], _ref6 => {\n var {\n config,\n BigNumber\n } = _ref6;\n return config.number === 'BigNumber' ? createBigNumberPhi(BigNumber) : phi;\n});\nexport var createLN2 = /* #__PURE__ */recreateFactory('LN2', ['config', '?BigNumber'], _ref7 => {\n var {\n config,\n BigNumber\n } = _ref7;\n return config.number === 'BigNumber' ? new BigNumber(2).ln() : Math.LN2;\n});\nexport var createLN10 = /* #__PURE__ */recreateFactory('LN10', ['config', '?BigNumber'], _ref8 => {\n var {\n config,\n BigNumber\n } = _ref8;\n return config.number === 'BigNumber' ? new BigNumber(10).ln() : Math.LN10;\n});\nexport var createLOG2E = /* #__PURE__ */recreateFactory('LOG2E', ['config', '?BigNumber'], _ref9 => {\n var {\n config,\n BigNumber\n } = _ref9;\n return config.number === 'BigNumber' ? new BigNumber(1).div(new BigNumber(2).ln()) : Math.LOG2E;\n});\nexport var createLOG10E = /* #__PURE__ */recreateFactory('LOG10E', ['config', '?BigNumber'], _ref10 => {\n var {\n config,\n BigNumber\n } = _ref10;\n return config.number === 'BigNumber' ? new BigNumber(1).div(new BigNumber(10).ln()) : Math.LOG10E;\n});\nexport var createSQRT1_2 = /* #__PURE__ */recreateFactory( // eslint-disable-line camelcase\n'SQRT1_2', ['config', '?BigNumber'], _ref11 => {\n var {\n config,\n BigNumber\n } = _ref11;\n return config.number === 'BigNumber' ? new BigNumber('0.5').sqrt() : Math.SQRT1_2;\n});\nexport var createSQRT2 = /* #__PURE__ */recreateFactory('SQRT2', ['config', '?BigNumber'], _ref12 => {\n var {\n config,\n BigNumber\n } = _ref12;\n return config.number === 'BigNumber' ? new BigNumber(2).sqrt() : Math.SQRT2;\n});\nexport var createI = /* #__PURE__ */recreateFactory('i', ['Complex'], _ref13 => {\n var {\n Complex\n } = _ref13;\n return Complex.I;\n}); // for backward compatibility with v5\n\nexport var createUppercasePi = /* #__PURE__ */factory('PI', ['pi'], _ref14 => {\n var {\n pi\n } = _ref14;\n return pi;\n});\nexport var createUppercaseE = /* #__PURE__ */factory('E', ['e'], _ref15 => {\n var {\n e\n } = _ref15;\n return e;\n});\nexport var createVersion = /* #__PURE__ */factory('version', [], () => version); // helper function to create a factory with a flag recreateOnConfigChange\n// idea: allow passing optional properties to be attached to the factory function as 4th argument?\n\nfunction recreateFactory(name, dependencies, create) {\n return factory(name, dependencies, create, {\n recreateOnConfigChange: true\n });\n}","export var version = '9.5.2'; // Note: This file is automatically generated when building math.js.\n// Changes made in this file will be overwritten.","import { factory } from '../../utils/factory.js'; // Source: https://en.wikipedia.org/wiki/Physical_constant\n// Universal constants\n\nexport var createSpeedOfLight = /* #__PURE__ */unitFactory('speedOfLight', '299792458', 'm s^-1');\nexport var createGravitationConstant = /* #__PURE__ */unitFactory('gravitationConstant', '6.67430e-11', 'm^3 kg^-1 s^-2');\nexport var createPlanckConstant = /* #__PURE__ */unitFactory('planckConstant', '6.62607015e-34', 'J s');\nexport var createReducedPlanckConstant = /* #__PURE__ */unitFactory('reducedPlanckConstant', '1.0545718176461565e-34', 'J s'); // Electromagnetic constants\n\nexport var createMagneticConstant = /* #__PURE__ */unitFactory('magneticConstant', '1.25663706212e-6', 'N A^-2');\nexport var createElectricConstant = /* #__PURE__ */unitFactory('electricConstant', '8.8541878128e-12', 'F m^-1');\nexport var createVacuumImpedance = /* #__PURE__ */unitFactory('vacuumImpedance', '376.730313667', 'ohm');\nexport var createCoulomb = /* #__PURE__ */unitFactory('coulomb', '8.987551792261171e9', 'N m^2 C^-2');\nexport var createElementaryCharge = /* #__PURE__ */unitFactory('elementaryCharge', '1.602176634e-19', 'C');\nexport var createBohrMagneton = /* #__PURE__ */unitFactory('bohrMagneton', '9.2740100783e-24', 'J T^-1');\nexport var createConductanceQuantum = /* #__PURE__ */unitFactory('conductanceQuantum', '7.748091729863649e-5', 'S');\nexport var createInverseConductanceQuantum = /* #__PURE__ */unitFactory('inverseConductanceQuantum', '12906.403729652257', 'ohm');\nexport var createMagneticFluxQuantum = /* #__PURE__ */unitFactory('magneticFluxQuantum', '2.0678338484619295e-15', 'Wb');\nexport var createNuclearMagneton = /* #__PURE__ */unitFactory('nuclearMagneton', '5.0507837461e-27', 'J T^-1');\nexport var createKlitzing = /* #__PURE__ */unitFactory('klitzing', '25812.807459304513', 'ohm');\nexport var createJosephson = /* #__PURE__ */unitFactory('josephson', '4.835978484169836e14 Hz V', 'Hz V^-1'); // TODO: support for Hz needed\n// Atomic and nuclear constants\n\nexport var createBohrRadius = /* #__PURE__ */unitFactory('bohrRadius', '5.29177210903e-11', 'm');\nexport var createClassicalElectronRadius = /* #__PURE__ */unitFactory('classicalElectronRadius', '2.8179403262e-15', 'm');\nexport var createElectronMass = /* #__PURE__ */unitFactory('electronMass', '9.1093837015e-31', 'kg');\nexport var createFermiCoupling = /* #__PURE__ */unitFactory('fermiCoupling', '1.1663787e-5', 'GeV^-2');\nexport var createFineStructure = numberFactory('fineStructure', 7.2973525693e-3);\nexport var createHartreeEnergy = /* #__PURE__ */unitFactory('hartreeEnergy', '4.3597447222071e-18', 'J');\nexport var createProtonMass = /* #__PURE__ */unitFactory('protonMass', '1.67262192369e-27', 'kg');\nexport var createDeuteronMass = /* #__PURE__ */unitFactory('deuteronMass', '3.3435830926e-27', 'kg');\nexport var createNeutronMass = /* #__PURE__ */unitFactory('neutronMass', '1.6749271613e-27', 'kg');\nexport var createQuantumOfCirculation = /* #__PURE__ */unitFactory('quantumOfCirculation', '3.6369475516e-4', 'm^2 s^-1');\nexport var createRydberg = /* #__PURE__ */unitFactory('rydberg', '10973731.568160', 'm^-1');\nexport var createThomsonCrossSection = /* #__PURE__ */unitFactory('thomsonCrossSection', '6.6524587321e-29', 'm^2');\nexport var createWeakMixingAngle = numberFactory('weakMixingAngle', 0.22290);\nexport var createEfimovFactor = numberFactory('efimovFactor', 22.7); // Physico-chemical constants\n\nexport var createAtomicMass = /* #__PURE__ */unitFactory('atomicMass', '1.66053906660e-27', 'kg');\nexport var createAvogadro = /* #__PURE__ */unitFactory('avogadro', '6.02214076e23', 'mol^-1');\nexport var createBoltzmann = /* #__PURE__ */unitFactory('boltzmann', '1.380649e-23', 'J K^-1');\nexport var createFaraday = /* #__PURE__ */unitFactory('faraday', '96485.33212331001', 'C mol^-1');\nexport var createFirstRadiation = /* #__PURE__ */unitFactory('firstRadiation', '3.7417718521927573e-16', 'W m^2'); // export const createSpectralRadiance = /* #__PURE__ */ unitFactory('spectralRadiance', '1.1910429723971881e-16', 'W m^2 sr^-1') // TODO spectralRadiance\n\nexport var createLoschmidt = /* #__PURE__ */unitFactory('loschmidt', '2.686780111798444e25', 'm^-3');\nexport var createGasConstant = /* #__PURE__ */unitFactory('gasConstant', '8.31446261815324', 'J K^-1 mol^-1');\nexport var createMolarPlanckConstant = /* #__PURE__ */unitFactory('molarPlanckConstant', '3.990312712893431e-10', 'J s mol^-1');\nexport var createMolarVolume = /* #__PURE__ */unitFactory('molarVolume', '0.022413969545014137', 'm^3 mol^-1');\nexport var createSackurTetrode = numberFactory('sackurTetrode', -1.16487052358);\nexport var createSecondRadiation = /* #__PURE__ */unitFactory('secondRadiation', '0.014387768775039337', 'm K');\nexport var createStefanBoltzmann = /* #__PURE__ */unitFactory('stefanBoltzmann', '5.67037441918443e-8', 'W m^-2 K^-4');\nexport var createWienDisplacement = /* #__PURE__ */unitFactory('wienDisplacement', '2.897771955e-3', 'm K'); // Adopted values\n\nexport var createMolarMass = /* #__PURE__ */unitFactory('molarMass', '0.99999999965e-3', 'kg mol^-1');\nexport var createMolarMassC12 = /* #__PURE__ */unitFactory('molarMassC12', '11.9999999958e-3', 'kg mol^-1');\nexport var createGravity = /* #__PURE__ */unitFactory('gravity', '9.80665', 'm s^-2'); // atm is defined in Unit.js\n// Natural units\n\nexport var createPlanckLength = /* #__PURE__ */unitFactory('planckLength', '1.616255e-35', 'm');\nexport var createPlanckMass = /* #__PURE__ */unitFactory('planckMass', '2.176435e-8', 'kg');\nexport var createPlanckTime = /* #__PURE__ */unitFactory('planckTime', '5.391245e-44', 's');\nexport var createPlanckCharge = /* #__PURE__ */unitFactory('planckCharge', '1.87554603778e-18', 'C');\nexport var createPlanckTemperature = /* #__PURE__ */unitFactory('planckTemperature', '1.416785e+32', 'K'); // helper function to create a factory function which creates a physical constant,\n// a Unit with either a number value or a BigNumber value depending on the configuration\n\nfunction unitFactory(name, valueStr, unitStr) {\n var dependencies = ['config', 'Unit', 'BigNumber'];\n return factory(name, dependencies, _ref => {\n var {\n config,\n Unit,\n BigNumber\n } = _ref;\n // Note that we can parse into number or BigNumber.\n // We do not parse into Fractions as that doesn't make sense: we would lose precision of the values\n // Therefore we dont use Unit.parse()\n var value = config.number === 'BigNumber' ? new BigNumber(valueStr) : parseFloat(valueStr);\n var unit = new Unit(value, unitStr);\n unit.fixPrefix = true;\n return unit;\n });\n} // helper function to create a factory function which creates a numeric constant,\n// either a number or BigNumber depending on the configuration\n\n\nfunction numberFactory(name, value) {\n var dependencies = ['config', 'BigNumber'];\n return factory(name, dependencies, _ref2 => {\n var {\n config,\n BigNumber\n } = _ref2;\n return config.number === 'BigNumber' ? new BigNumber(value) : value;\n });\n}","import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createApply } from '../../function/matrix/apply.js';\nimport { isBigNumber, isNumber } from '../../utils/is.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\n/**\n * Attach a transform function to math.apply\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function apply\n * from one-based to zero based\n */\n\nexport var createApplyTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n var apply = createApply({\n typed,\n isInteger\n }); // @see: comment of concat itself\n\n return typed('apply', {\n '...any': function any(args) {\n // change dim from one-based to zero-based\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n\n try {\n return apply.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createColumn } from '../../function/matrix/column.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\n\nexport var createColumnTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var column = createColumn({\n typed,\n Index,\n matrix,\n range\n }); // @see: comment of column itself\n\n return typed('column', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n\n try {\n return column.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isSymbolNode } from '../../../utils/is.js';\nimport { createSubScope } from '../../../utils/scope.js';\n/**\n * Compile an inline expression like \"x > 0\"\n * @param {Node} expression\n * @param {Object} math\n * @param {Object} scope\n * @return {function} Returns a function with one argument which fills in the\n * undefined variable (like \"x\") and evaluates the expression\n */\n\nexport function compileInlineExpression(expression, math, scope) {\n // find an undefined symbol\n var symbol = expression.filter(function (node) {\n return isSymbolNode(node) && !(node.name in math) && !scope.has(node.name);\n })[0];\n\n if (!symbol) {\n throw new Error('No undefined variable found in inline expression \"' + expression + '\"');\n } // create a test function for this equation\n\n\n var name = symbol.name; // variable name\n\n var subScope = createSubScope(scope);\n var eq = expression.compile();\n return function inlineExpression(x) {\n subScope.set(name, x);\n return eq.evaluate(subScope);\n };\n}","import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { filter, filterRegExp } from '../../utils/array.js';\nimport { maxArgumentCount } from '../../utils/function.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilterTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Attach a transform function to math.filter\n * Adds a property transform containing the transform function.\n *\n * This transform adds support for equations as test function for math.filter,\n * so you can do something like 'filter([3, -2, 5], x > 0)'.\n */\n function filterTransform(args, math, scope) {\n var x, callback;\n\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n\n return filter(x, callback);\n }\n\n filterTransform.rawArgs = true; // one based version of function filter\n\n var filter = typed('filter', {\n 'Array, function': _filter,\n 'Matrix, function': function MatrixFunction(x, test) {\n return x.create(_filter(x.toArray(), test));\n },\n 'Array, RegExp': filterRegExp,\n 'Matrix, RegExp': function MatrixRegExp(x, test) {\n return x.create(filterRegExp(x.toArray(), test));\n }\n });\n return filterTransform;\n}, {\n isTransformFunction: true\n});\n/**\n * Filter values in a callback given a callback function\n *\n * !!! Passes a one-based index !!!\n *\n * @param {Array} x\n * @param {Function} callback\n * @return {Array} Returns the filtered array\n * @private\n */\n\nfunction _filter(x, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n return filter(x, function (value, index, array) {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n return callback(value);\n } else if (args === 2) {\n return callback(value, [index + 1]);\n } else {\n // 3 or -1\n return callback(value, [index + 1], array);\n }\n });\n}","import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { maxArgumentCount } from '../../utils/function.js';\nimport { forEach } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEachTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Attach a transform function to math.forEach\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n function forEachTransform(args, math, scope) {\n var x, callback;\n\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like forEach([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like forEach([3, -2, 5], x > 0 ? callback1(x) : callback2(x) )\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n\n return _forEach(x, callback);\n }\n\n forEachTransform.rawArgs = true; // one-based version of forEach\n\n var _forEach = typed('forEach', {\n 'Array | Matrix, function': function ArrayMatrixFunction(array, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n\n var recurse = function recurse(value, index) {\n if (Array.isArray(value)) {\n forEach(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n recurse(child, index.concat(i + 1)); // one based index, hence i+1\n });\n } else {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n callback(value);\n } else if (args === 2) {\n callback(value, index);\n } else {\n // 3 or -1\n callback(value, index, array);\n }\n }\n };\n\n recurse(array.valueOf(), []); // pass Array\n }\n });\n\n return forEachTransform;\n}, {\n isTransformFunction: true\n});","import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'index';\nvar dependencies = ['Index'];\nexport var createIndexTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Index\n } = _ref;\n\n /**\n * Attach a transform function to math.index\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n return function indexTransform() {\n var args = [];\n\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i]; // change from one-based to zero based, and convert BigNumber to number\n\n if (isRange(arg)) {\n arg.start--;\n arg.end -= arg.step > 0 ? 0 : 2;\n } else if (arg && arg.isSet === true) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isArray(arg) || isMatrix(arg)) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isNumber(arg)) {\n arg--;\n } else if (isBigNumber(arg)) {\n arg = arg.toNumber() - 1;\n } else if (typeof arg === 'string') {// leave as is\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n\n args[i] = arg;\n }\n\n var res = new Index();\n Index.apply(res, args);\n return res;\n };\n}, {\n isTransformFunction: true\n});","import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { maxArgumentCount } from '../../utils/function.js';\nimport { map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n\n /**\n * Attach a transform function to math.map\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n function mapTransform(args, math, scope) {\n var x, callback;\n\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n\n return map(x, callback);\n }\n\n mapTransform.rawArgs = true; // one-based version of map function\n\n var map = typed('map', {\n 'Array, function': function ArrayFunction(x, callback) {\n return _map(x, callback, x);\n },\n 'Matrix, function': function MatrixFunction(x, callback) {\n return x.create(_map(x.valueOf(), callback, x));\n }\n });\n return mapTransform;\n}, {\n isTransformFunction: true\n});\n/**\n * Map for a multi dimensional array. One-based indexes\n * @param {Array} array\n * @param {function} callback\n * @param {Array} orig\n * @return {Array}\n * @private\n */\n\nfunction _map(array, callback, orig) {\n // figure out what number of arguments the callback function expects\n var argsCount = maxArgumentCount(callback);\n\n function recurse(value, index) {\n if (Array.isArray(value)) {\n return map(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n return recurse(child, index.concat(i + 1)); // one based index, hence i + 1\n });\n } else {\n // invoke the (typed) callback function with the right number of arguments\n if (argsCount === 1) {\n return callback(value);\n } else if (argsCount === 2) {\n return callback(value, index);\n } else {\n // 3 or -1\n return callback(value, index, orig);\n }\n }\n }\n\n return recurse(array, []);\n}","import { isBigNumber, isCollection, isNumber } from '../../../utils/is.js';\n/**\n * Change last argument dim from one-based to zero-based.\n */\n\nexport function lastDimToZeroBase(args) {\n if (args.length === 2 && isCollection(args[0])) {\n args = args.slice();\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n return args;\n}","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMax } from '../../function/statistics/max.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMaxTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n var max = createMax({\n typed,\n config,\n numeric,\n larger\n });\n /**\n * Attach a transform function to math.max\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function max\n * from one-based to zero based\n */\n\n return typed('max', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return max.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMean } from '../../function/statistics/mean.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMeanTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n var mean = createMean({\n typed,\n add,\n divide\n });\n /**\n * Attach a transform function to math.mean\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n\n return typed('mean', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return mean.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMin } from '../../function/statistics/min.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMinTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n var min = createMin({\n typed,\n config,\n numeric,\n smaller\n });\n /**\n * Attach a transform function to math.min\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function min\n * from one-based to zero based\n */\n\n return typed('min', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return min.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { createRange } from '../../function/matrix/range.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq'];\nexport var createRangeTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq\n } = _ref;\n var range = createRange({\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq\n });\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n\n return typed('range', {\n '...any': function any(args) {\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (typeof last !== 'boolean') {\n // append a parameter includeEnd=true\n args.push(true);\n }\n\n return range.apply(null, args);\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { createRow } from '../../function/matrix/row.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\n\nexport var createRowTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var row = createRow({\n typed,\n Index,\n matrix,\n range\n }); // @see: comment of row itself\n\n return typed('row', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n\n try {\n return row.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSubset } from '../../function/matrix/subset.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix'];\nexport var createSubsetTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n var subset = createSubset({\n typed,\n matrix\n });\n /**\n * Attach a transform function to math.subset\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n\n return typed('subset', {\n '...any': function any(args) {\n try {\n return subset.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isNumber } from '../../utils/is.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createConcat } from '../../function/matrix/concat.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcatTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n var concat = createConcat({\n typed,\n matrix,\n isInteger\n });\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function concat\n * from one-based to zero based\n */\n\n return typed('concat', {\n '...any': function any(args) {\n // change last argument from one-based to zero-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n } else if (isBigNumber(last)) {\n args[lastIndex] = last.minus(1);\n }\n\n try {\n return concat.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createDiff } from '../../function/matrix/diff.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number', 'bignumber'];\nexport var createDiffTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number,\n bignumber\n } = _ref;\n var diff = createDiff({\n typed,\n matrix,\n subtract,\n number,\n bignumber\n });\n /**\n * Attach a transform function to math.diff\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return diff.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { createStd } from '../../function/statistics/std.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'std';\nvar dependencies = ['typed', 'sqrt', 'variance'];\n/**\n * Attach a transform function to math.std\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\n\nexport var createStdTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n sqrt,\n variance\n } = _ref;\n var std = createStd({\n typed,\n sqrt,\n variance\n });\n return typed('std', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return std.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSum } from '../../function/statistics/sum.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n var sum = createSum({\n typed,\n config,\n add,\n numeric\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return sum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createVariance } from '../../function/statistics/variance.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\n/**\n * Attach a transform function to math.var\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function var\n * from one-based to zero based\n */\n\nexport var createVarianceTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n var variance = createVariance({\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n\n try {\n return variance.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","// creating all factories here in a separate file is needed to get tree-shaking working\nimport * as allFactories from '../factoriesAny.js';\nexport var all = allFactories;","import { BigNumber, utils } from 'ethers';\nimport { all, create } from 'mathjs';\n\nconst ZERO = BigNumber.from(0);\nconst ONE = BigNumber.from(1);\nconst TEN = BigNumber.from(10);\nconst FIXED_POINT = TEN.pow(18);\nconst MIN_SHOW_STAKE = FIXED_POINT.div(100);\nconst THOUSAND = FIXED_POINT.mul(1000);\n\nconst math = create(all, {\n number: 'BigNumber',\n precision: 64,\n});\n\nfunction formatRounded(bigNumber, digits = 18) {\n if (!bigNumber || !BigNumber.isBigNumber(bigNumber)) {\n throw new Error('not a BigNumber');\n }\n const digitsCopy = Math.floor(digits);\n if (digitsCopy < 0 || digitsCopy > 18) {\n throw new Error('digits out of range');\n }\n const mathBn = math.bignumber(utils.formatEther(bigNumber));\n return math.format(mathBn.round(digitsCopy), {\n notation: 'fixed',\n precision: digitsCopy,\n });\n}\n\nfunction checkValidNumberString(str) {\n try {\n parseFloatToBigNumber(str);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction parseFloatToBigNumber(str) {\n const mathBn = math.bignumber(str);\n return utils.parseEther(math.round(mathBn, 18).toString());\n}\n\nexport {\n math,\n ZERO,\n ONE,\n TEN,\n FIXED_POINT,\n THOUSAND,\n MIN_SHOW_STAKE,\n formatRounded,\n checkValidNumberString,\n parseFloatToBigNumber,\n};\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport './../utils/polyfills.js';\nimport { deepFlatten, isLegacyFactory, values } from '../utils/object.js';\nimport * as emitter from './../utils/emitter.js';\nimport { importFactory } from './function/import.js';\nimport { configFactory } from './function/config.js';\nimport { factory, isFactory } from '../utils/factory.js';\nimport { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigNumber, isBlockNode, isBoolean, isChain, isCollection, isComplex, isConditionalNode, isConstantNode, isDate, isDenseMatrix, isFraction, isFunction, isFunctionAssignmentNode, isFunctionNode, isHelp, isIndex, isIndexNode, isMatrix, isNode, isNull, isNumber, isObject, isObjectNode, isOperatorNode, isParenthesisNode, isRange, isRangeNode, isRegExp, isResultSet, isSparseMatrix, isString, isSymbolNode, isUndefined, isUnit } from '../utils/is.js';\nimport { ArgumentsError } from '../error/ArgumentsError.js';\nimport { DimensionError } from '../error/DimensionError.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { DEFAULT_CONFIG } from './config.js';\n/**\n * Create a mathjs instance from given factory functions and optionally config\n *\n * Usage:\n *\n * const mathjs1 = create({ createAdd, createMultiply, ...})\n * const config = { number: 'BigNumber' }\n * const mathjs2 = create(all, config)\n *\n * @param {Object} [factories] An object with factory functions\n * The object can contain nested objects,\n * all nested objects will be flattened.\n * @param {Object} [config] Available options:\n * {number} epsilon\n * Minimum relative difference between two\n * compared values, used by all comparison functions.\n * {string} matrix\n * A string 'Matrix' (default) or 'Array'.\n * {string} number\n * A string 'number' (default), 'BigNumber', or 'Fraction'\n * {number} precision\n * The number of significant digits for BigNumbers.\n * Not applicable for Numbers.\n * {boolean} predictable\n * Predictable output type of functions. When true,\n * output type depends only on the input types. When\n * false (default), output type can vary depending\n * on input values. For example `math.sqrt(-4)`\n * returns `complex('2i')` when predictable is false, and\n * returns `NaN` when true.\n * {string} randomSeed\n * Random seed for seeded pseudo random number generator.\n * Set to null to randomly seed.\n * @returns {Object} Returns a bare-bone math.js instance containing\n * functions:\n * - `import` to add new functions\n * - `config` to change configuration\n * - `on`, `off`, `once`, `emit` for events\n */\n\nexport function create(factories, config) {\n var configInternal = _extends({}, DEFAULT_CONFIG, config); // simple test for ES5 support\n\n\n if (typeof Object.create !== 'function') {\n throw new Error('ES5 not supported by this JavaScript engine. ' + 'Please load the es5-shim and es5-sham library for compatibility.');\n } // create the mathjs instance\n\n\n var math = emitter.mixin({\n // only here for backward compatibility for legacy factory functions\n isNumber,\n isComplex,\n isBigNumber,\n isFraction,\n isUnit,\n isString,\n isArray,\n isMatrix,\n isCollection,\n isDenseMatrix,\n isSparseMatrix,\n isRange,\n isIndex,\n isBoolean,\n isResultSet,\n isHelp,\n isFunction,\n isDate,\n isRegExp,\n isObject,\n isNull,\n isUndefined,\n isAccessorNode,\n isArrayNode,\n isAssignmentNode,\n isBlockNode,\n isConditionalNode,\n isConstantNode,\n isFunctionAssignmentNode,\n isFunctionNode,\n isIndexNode,\n isNode,\n isObjectNode,\n isOperatorNode,\n isParenthesisNode,\n isRangeNode,\n isSymbolNode,\n isChain\n }); // load config function and apply provided config\n\n math.config = configFactory(configInternal, math.emit);\n math.expression = {\n transform: {},\n mathWithTransform: {\n config: math.config\n }\n }; // cached factories and instances used by function load\n\n var legacyFactories = [];\n var legacyInstances = [];\n /**\n * Load a function or data type from a factory.\n * If the function or data type already exists, the existing instance is\n * returned.\n * @param {Function} factory\n * @returns {*}\n */\n\n function load(factory) {\n if (isFactory(factory)) {\n return factory(math);\n }\n\n var firstProperty = factory[Object.keys(factory)[0]];\n\n if (isFactory(firstProperty)) {\n return firstProperty(math);\n }\n\n if (!isLegacyFactory(factory)) {\n console.warn('Factory object with properties `type`, `name`, and `factory` expected', factory);\n throw new Error('Factory object with properties `type`, `name`, and `factory` expected');\n }\n\n var index = legacyFactories.indexOf(factory);\n var instance;\n\n if (index === -1) {\n // doesn't yet exist\n if (factory.math === true) {\n // pass with math namespace\n instance = factory.factory(math.type, configInternal, load, math.typed, math);\n } else {\n instance = factory.factory(math.type, configInternal, load, math.typed);\n } // append to the cache\n\n\n legacyFactories.push(factory);\n legacyInstances.push(instance);\n } else {\n // already existing function, return the cached instance\n instance = legacyInstances[index];\n }\n\n return instance;\n }\n\n var importedFactories = {}; // load the import function\n\n function lazyTyped() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return math.typed.apply(math.typed, args);\n }\n\n var internalImport = importFactory(lazyTyped, load, math, importedFactories);\n math.import = internalImport; // listen for changes in config, import all functions again when changed\n // TODO: move this listener into the import function?\n\n math.on('config', () => {\n values(importedFactories).forEach(factory => {\n if (factory && factory.meta && factory.meta.recreateOnConfigChange) {\n // FIXME: only re-create when the current instance is the same as was initially created\n // FIXME: delete the functions/constants before importing them again?\n internalImport(factory, {\n override: true\n });\n }\n });\n }); // the create function exposed on the mathjs instance is bound to\n // the factory functions passed before\n\n math.create = create.bind(null, factories); // export factory function\n\n math.factory = factory; // import the factory functions like createAdd as an array instead of object,\n // else they will get a different naming (`createAdd` instead of `add`).\n\n math.import(values(deepFlatten(factories)));\n math.ArgumentsError = ArgumentsError;\n math.DimensionError = DimensionError;\n math.IndexError = IndexError;\n return math;\n}","import Emitter from 'tiny-emitter';\n/**\n * Extend given object with emitter functions `on`, `off`, `once`, `emit`\n * @param {Object} obj\n * @return {Object} obj\n */\n\nexport function mixin(obj) {\n // create event emitter\n var emitter = new Emitter(); // bind methods to obj (we don't want to expose the emitter.e Array...)\n\n obj.on = emitter.on.bind(emitter);\n obj.off = emitter.off.bind(emitter);\n obj.once = emitter.once.bind(emitter);\n obj.emit = emitter.emit.bind(emitter);\n return obj;\n}","import { ENABLE_DEBUG_LOG } from \"config\";\n\nimport \"animate.css/animate.min.css\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nexport const formatThousand = (num) => {\n // eslint-disable-next-line no-param-reassign\n num = Number(num);\n if (Math.abs(num) >= 1e9) {\n return `${Math.abs(num / 1e9).toFixed(2)}b`;\n }\n if (Math.abs(num) >= 1e6) {\n return `${Math.abs(num / 1e6).toFixed(2)}m`;\n }\n if (Math.abs(num) > 1e3) {\n return `${Math.abs(num / 1e3).toFixed(2)}k`;\n }\n return num.toFixed(2);\n};\nexport const formatThousandNoLocale = (num) => {\n // eslint-disable-next-line no-param-reassign\n num = Number(num);\n if (Math.abs(num) >= 1e9) {\n return `${Math.abs(num / 1e9).toFixed(0)}b`;\n }\n if (Math.abs(num) >= 1e6) {\n return `${Math.abs(num / 1e6).toFixed(0)}m`;\n }\n if (Math.abs(num) > 1e3) {\n return `${Math.abs(num / 1e3).toFixed(0)}k`;\n }\n return num.toFixed(2);\n};\n/* eslint-disable-next-line no-console */\nexport const debugLog = (...logs) => ENABLE_DEBUG_LOG && console.log(...logs);\n\nexport const days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nexport const months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const formatDate = (timestamp, showDate = false, showTime = false) => {\n const date = new Date(timestamp);\n const dayName = days[date.getDay()];\n const day = `0${date.getDate()}`.slice(-2);\n const month = date.getMonth();\n // const year = date.getFullYear();\n const hours = `0${date.getHours()}`.slice(-2);\n const minutes = `0${date.getMinutes()}`.slice(-2);\n const seconds = `0${date.getSeconds()}`.slice(-2);\n\n if (showTime) {\n return `${\n showDate ? `${dayName}, ${day} ${months[month]}` : \"\"\n }${hours}:${minutes}:${seconds}`;\n }\n return `${showDate ? `${day} ${months[month]}` : \"\"}`;\n};\n","import React from \"react\";\nimport * as PropTypes from \"prop-types\";\nimport { formatThousand } from \"utils/helpers\";\n\nconst DisplayValue = ({ symbol = \"AMB\", value, noSpace = false }) => {\n return value ? (\n `${formatThousand(value)}${noSpace ? \"\" : \" \"}${symbol}`\n ) : (\n \n );\n};\n\nDisplayValue.propTypes = {\n value: PropTypes.any,\n size: PropTypes.string,\n color: PropTypes.any,\n symbol: PropTypes.string,\n styles: PropTypes.object,\n};\nexport default DisplayValue;\n","export const collapsedReducer = (state, action) => {\n const stateCopy = [false];\n switch (action.type) {\n case 'toggle':\n stateCopy[action.index] = !stateCopy[action.index];\n return [...stateCopy];\n case 'hide':\n stateCopy[action.index] = false;\n return [...stateCopy];\n case 'show':\n stateCopy[action.index] = true;\n return [...stateCopy];\n default:\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n};\n\nexport const asyncReducer = (state, action) => {\n switch (action.type) {\n case 'pending': {\n return { status: 'pending', data: null, error: null };\n }\n case 'resolved': {\n return { status: 'resolved', data: action.data, error: null };\n }\n case 'rejected': {\n return { status: 'rejected', data: null, error: action.error };\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n};\n","import React from 'react';\nimport { asyncReducer } from 'utils/reducers';\nimport { useSafeDispatch } from './useSafeDispatch';\n\nconst useAsync = (asyncCallback, initialState) => {\n const [state, unsafeDispatch] = React.useReducer(asyncReducer, {\n status: 'idle',\n data: null,\n error: null,\n ...initialState,\n });\n\n const dispatch = useSafeDispatch(unsafeDispatch);\n\n const { data, error, status } = state;\n\n const run = React.useCallback(\n (promise) => {\n dispatch({ type: 'pending' });\n promise.then(\n (dataObj) => {\n dispatch({ type: 'resolved', data: dataObj });\n },\n (errorObj) => {\n dispatch({ type: 'rejected', error: errorObj });\n },\n );\n },\n [dispatch],\n );\n\n return {\n error,\n status,\n data,\n run,\n };\n};\nexport default useAsync;\n","import React from 'react';\n\nexport const useSafeDispatch = (dispatch) => {\n const mountedRef = React.useRef(false);\n React.useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n return React.useCallback(\n (...args) => (mountedRef.current ? dispatch(...args) : undefined),\n [dispatch],\n );\n};\n","import { useState } from 'react';\n\nconst useModal = () => {\n const [isShowing, setIsShowing] = useState(false);\n\n function toggle() {\n setIsShowing(!isShowing);\n }\n\n return {\n isShowing,\n toggle,\n };\n};\n\nexport default useModal;\n","import { runInAction, makeAutoObservable } from \"mobx\";\nimport { debugLog } from \"utils/helpers\";\n\nexport class AppStore {\n poolsData = [];\n\n tokenPrice = undefined;\n\n tokenChange = undefined;\n\n refresh = false;\n\n constructor(poolsData, tokenPrice, refresh) {\n this.poolsData = poolsData;\n this.tokenPrice = tokenPrice;\n this.refresh = refresh;\n makeAutoObservable(this);\n }\n\n setRefresh() {\n runInAction(() => {\n this.refresh = !this.refresh;\n });\n }\n\n async updatePoolData(data) {\n debugLog(\"poolsData\", data);\n runInAction(() => {\n this.poolsData = data;\n });\n }\n\n setTokenPrice(price) {\n runInAction(() => {\n this.tokenPrice = price;\n });\n }\n\n setTokenChange(change) {\n runInAction(() => {\n this.tokenChange = change;\n });\n }\n}\n\nconst appStore = new AppStore();\nexport default appStore;\n","export const version = \"abi/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray) {\n let abi: ReadonlyArray = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array = [ ];\n\n const dataTypes: Array = [ ];\n const dataValues: Array = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array = [];\n let nonIndexed: Array = [];\n let dynamic: Array = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise;\n gasPrice?: BigNumberish | Promise;\n maxFeePerGas?: BigNumberish | Promise;\n maxPriorityFeePerGas?: BigNumberish | Promise;\n nonce?: BigNumberish | Promise;\n type?: number;\n accessList?: AccessListish;\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise;\n from?: string | Promise;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array>;\n};\n\n\nexport type ContractFunction = (...args: Array) => Promise;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise;\n getTransaction: () => Promise;\n getTransactionReceipt: () => Promise;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise): Promise {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array): Promise {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array): Promise {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return function(...args: Array): Promise {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array): Promise {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array): Promise {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return async function(...args: Array): Promise {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction };\n readonly populateTransaction: { [ name: string ]: ContractFunction };\n\n readonly filters: { [ name: string ]: (...args: Array) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((this)[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((this)[name] == null) {\n defineReadOnly(this, name, (this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n\n fallback(overrides?: TransactionRequest): Promise {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (filter).blockHash = fromBlockOrBlockhash;\n } else {\n (filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array): Promise {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return ((this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n","export const version = \"contracts/5.7.0\";\n","/* eslint-disable */\nimport { ethers, providers } from \"ethers\";\nimport { contractJsons, pool } from \"ambrosus-node-contracts\";\nimport { headContractAddress } from \"ambrosus-node-contracts/config/config\";\nimport {\n abiPoolsWithLimit,\n network,\n transactionGasLimit,\n transactionGasPrice,\n} from \"config\";\nimport { math, FIXED_POINT, parseFloatToBigNumber, ZERO } from \"./numbers\";\nimport { debugLog, formatDate } from \"utils/helpers\";\nimport moment from \"moment\";\n\nexport default class StakingWrapper {\n static privateProvider = null;\n\n static poolsStore = null;\n\n static privateStaticConstructorPromise = (async () => {\n this.privateProvider = new providers.JsonRpcProvider(\n process.env.REACT_APP_RPC_URL\n );\n\n const headContract = new ethers.Contract(\n headContractAddress,\n contractJsons.head.abi,\n this.privateProvider\n );\n const contextContract = new ethers.Contract(\n await headContract.context(),\n contractJsons.context.abi,\n this.privateProvider\n );\n const storageCatalogueContr = new ethers.Contract(\n await contextContract.storageCatalogue(),\n contractJsons.storageCatalogue.abi,\n this.privateProvider\n );\n const poolsStoreAddr = await storageCatalogueContr.poolsStore();\n\n this.poolsStore = new ethers.Contract(\n poolsStoreAddr,\n contractJsons.poolsStore.abi,\n this.privateProvider\n );\n debugLog(\"StakingWrapper done\");\n })();\n\n static async getPools() {\n const poolsCount = await this.poolsStore.getPoolsCount();\n return poolsCount && poolsCount.gt(ZERO)\n ? this.poolsStore.getPools(0, poolsCount)\n : null;\n }\n\n static async getPoolsData(provider) {\n const providerOrSigner = provider\n ? provider.getSigner()\n : this.privateProvider;\n\n await this.privateStaticConstructorPromise;\n\n const [poolsAddrs] = await Promise.all([this.getPools()]);\n\n if (!poolsAddrs || !poolsAddrs.length) return [];\n const poolsApi = await fetch(\n network\n ? \"https://staking-api.ambrosus.io/pools/v2\"\n : \"https://staking-api.ambrosus-test.io/pools/v2\"\n );\n const response = await poolsApi.json();\n const polsApiData = response.data;\n\n const poolsDataPromises = poolsAddrs.map(async (poolAddr, index) => {\n const poolContract = new ethers.Contract(\n poolAddr,\n poolAddr === \"0x7fecce438b087a83E95C91DC168ad3D150225543\"\n ? abiPoolsWithLimit\n : pool.abi,\n providerOrSigner\n );\n\n const [\n contractName,\n active,\n totalStakeInAMB,\n tokenPriceAMB,\n myStakeInTokens,\n maxUserTotalStake,\n userStake,\n ] = await Promise.all([\n poolContract.name && poolContract.name(),\n poolContract.active && poolContract.active(),\n poolContract.totalStake && poolContract.totalStake(),\n poolContract.getTokenPrice && poolContract.getTokenPrice(),\n poolContract.viewStake && poolContract.viewStake(),\n poolContract.maxUserTotalStake && poolContract.maxUserTotalStake(),\n poolContract.getStake && poolContract.getStake(),\n ]);\n\n let days = [];\n let day = moment();\n let count = 0;\n while (count <= 10) {\n count++;\n days.push(formatDate(day.valueOf(), true));\n day = day.clone().add(-1, \"d\");\n }\n const rewardsArr =\n contractName &&\n days.reverse().map((day, indexN) => {\n return {\n timestamp: day,\n reward:\n polsApiData &&\n polsApiData[contractName] &&\n polsApiData[contractName].rewards\n ? polsApiData[contractName].rewards[10 - indexN]\n : null,\n };\n });\n const myStakeInAMB = myStakeInTokens.mul(tokenPriceAMB).div(FIXED_POINT);\n const estAR = math\n .chain(\n polsApiData[contractName] && polsApiData[contractName].apy\n ? polsApiData[contractName].apy\n : \"0\"\n )\n .divide(100)\n .multiply(myStakeInAMB.toString())\n .divide(FIXED_POINT.toString())\n .round(2)\n .done()\n .toFixed(2);\n\n return (\n rewardsArr && {\n index,\n contractName,\n address: poolAddr,\n active,\n contract: poolContract,\n totalStakeInAMB,\n tokenPriceAMB,\n myStakeInTokens,\n myStakeInAMB,\n poolAPY:\n polsApiData &&\n polsApiData[contractName] &&\n polsApiData[contractName]?.apy,\n estAR,\n poolRewards: rewardsArr.slice(1, rewardsArr.length - 1),\n // maxPoolTotalStake,\n maxUserTotalStake,\n userStake,\n }\n );\n });\n return Promise.all(poolsDataPromises);\n }\n\n static async stake(poolInfo, value) {\n const overrides = {\n value: parseFloatToBigNumber(value),\n gasPrice: transactionGasPrice,\n gasLimit: transactionGasLimit,\n };\n\n const poolContract = poolInfo.contract;\n try {\n overrides.gasLimit = await poolContract.estimateGas.stake(overrides);\n return poolContract.stake(overrides);\n } catch (err) {\n debugLog(\"stake error\", err);\n return null;\n }\n }\n\n static async unstake(poolInfo, value, fullUnstake = false) {\n const poolContract = poolInfo.contract;\n const [tokenPriceAMB, myStakeInTokens] = await Promise.all([\n poolContract.getTokenPrice(),\n poolContract.viewStake(),\n ]);\n\n const tokens = fullUnstake\n ? myStakeInTokens\n : parseFloatToBigNumber(value).mul(FIXED_POINT).div(tokenPriceAMB);\n\n const overrides = {\n gasPrice: transactionGasPrice,\n gasLimit: transactionGasLimit,\n };\n\n try {\n overrides.gasLimit = await poolContract.estimateGas.unstake(\n tokens,\n overrides\n );\n return poolContract.unstake(tokens, overrides);\n } catch (err) {\n debugLog(\"unstake error\", err);\n return null;\n }\n }\n}\n","/** Forked from https://github.com/epoberezkin/fast-deep-equal */\n\nexport function deepEqual(a: any, b: any) {\n if (a === b) return true\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) return false\n\n let length: number\n let i: number\n\n if (Array.isArray(a) && Array.isArray(b)) {\n length = a.length\n if (length !== b.length) return false\n for (i = length; i-- !== 0; ) if (!deepEqual(a[i], b[i])) return false\n return true\n }\n\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf()\n if (a.toString !== Object.prototype.toString)\n return a.toString() === b.toString()\n\n const keys = Object.keys(a)\n length = keys.length\n if (length !== Object.keys(b).length) return false\n\n for (i = length; i-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]!)) return false\n\n for (i = length; i-- !== 0; ) {\n const key = keys[i]\n\n if (key && !deepEqual(a[key], b[key])) return false\n }\n\n return true\n }\n\n // true if both NaN, false otherwise\n // biome-ignore lint/suspicious/noSelfCompare: \n return a !== a && b !== b\n}\n","import type { Address, Chain } from 'viem'\n\nimport type { Config, Connector } from '../createConfig.js'\n\nexport type GetAccountReturnType<\n config extends Config = Config,\n ///\n chain = Config extends config ? Chain : config['chains'][number],\n> =\n | {\n address: Address\n addresses: readonly [Address, ...Address[]]\n chain: chain | undefined\n chainId: number\n connector: Connector\n isConnected: true\n isConnecting: false\n isDisconnected: false\n isReconnecting: false\n status: 'connected'\n }\n | {\n address: Address | undefined\n addresses: readonly Address[] | undefined\n chain: chain | undefined\n chainId: number | undefined\n connector: Connector | undefined\n isConnected: boolean\n isConnecting: false\n isDisconnected: false\n isReconnecting: true\n status: 'reconnecting'\n }\n | {\n address: Address | undefined\n addresses: readonly Address[] | undefined\n chain: chain | undefined\n chainId: number | undefined\n connector: Connector | undefined\n isConnected: false\n isReconnecting: false\n isConnecting: true\n isDisconnected: false\n status: 'connecting'\n }\n | {\n address: undefined\n addresses: undefined\n chain: undefined\n chainId: undefined\n connector: undefined\n isConnected: false\n isReconnecting: false\n isConnecting: false\n isDisconnected: true\n status: 'disconnected'\n }\n\n/** https://wagmi.sh/core/api/actions/getAccount */\nexport function getAccount(\n config: config,\n): GetAccountReturnType {\n const uid = config.state.current!\n const connection = config.state.connections.get(uid)\n const addresses = connection?.accounts\n const address = addresses?.[0]\n const chain = config.chains.find(\n (chain) => chain.id === connection?.chainId,\n ) as GetAccountReturnType['chain']\n const status = config.state.status\n\n switch (status) {\n case 'connected':\n return {\n address: address!,\n addresses: addresses!,\n chain,\n chainId: connection?.chainId!,\n connector: connection?.connector!,\n isConnected: true,\n isConnecting: false,\n isDisconnected: false,\n isReconnecting: false,\n status,\n }\n case 'reconnecting':\n return {\n address,\n addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: !!address,\n isConnecting: false,\n isDisconnected: false,\n isReconnecting: true,\n status,\n }\n case 'connecting':\n return {\n address,\n addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: false,\n isConnecting: true,\n isDisconnected: false,\n isReconnecting: false,\n status,\n }\n case 'disconnected':\n return {\n address: undefined,\n addresses: undefined,\n chain: undefined,\n chainId: undefined,\n connector: undefined,\n isConnected: false,\n isConnecting: false,\n isDisconnected: true,\n isReconnecting: false,\n status,\n }\n }\n}\n","import type { Address } from 'viem'\n\nimport type { CreateConnectorFn } from '../connectors/createConnector.js'\nimport type { Config, Connection, Connector } from '../createConfig.js'\nimport type { ErrorType } from '../errors/base.js'\nimport type { Compute } from '../types/utils.js'\n\nexport type ReconnectParameters = {\n /** Connectors to attempt reconnect with */\n connectors?: readonly (CreateConnectorFn | Connector)[] | undefined\n}\n\nexport type ReconnectReturnType = Compute[]\n\nexport type ReconnectErrorType = ErrorType\n\nlet isReconnecting = false\n\n/** https://wagmi.sh/core/api/actions/reconnect */\nexport async function reconnect(\n config: Config,\n parameters: ReconnectParameters = {},\n): Promise {\n // If already reconnecting, do nothing\n if (isReconnecting) return []\n isReconnecting = true\n\n config.setState((x) => ({\n ...x,\n status: x.current ? 'reconnecting' : 'connecting',\n }))\n\n const connectors: Connector[] = []\n if (parameters.connectors?.length) {\n for (const connector_ of parameters.connectors) {\n let connector: Connector\n // \"Register\" connector if not already created\n if (typeof connector_ === 'function')\n connector = config._internal.connectors.setup(connector_)\n else connector = connector_\n connectors.push(connector)\n }\n } else connectors.push(...config.connectors)\n\n // Try recently-used connectors first\n let recentConnectorId: string | null | undefined\n try {\n recentConnectorId = await config.storage?.getItem('recentConnectorId')\n } catch {}\n const scores: Record = {}\n for (const [, connection] of config.state.connections) {\n scores[connection.connector.id] = 1\n }\n if (recentConnectorId) scores[recentConnectorId] = 0\n const sorted =\n Object.keys(scores).length > 0\n ? // .toSorted()\n [...connectors].sort(\n (a, b) => (scores[a.id] ?? 10) - (scores[b.id] ?? 10),\n )\n : connectors\n\n // Iterate through each connector and try to connect\n let connected = false\n const connections: Connection[] = []\n const providers: unknown[] = []\n for (const connector of sorted) {\n const provider = await connector.getProvider().catch(() => undefined)\n if (!provider) continue\n\n // If we already have an instance of this connector's provider,\n // then we have already checked it (ie. injected connectors can\n // share the same `window.ethereum` instance, so we don't want to\n // connect to it again).\n if (providers.some((x) => x === provider)) continue\n\n const isAuthorized = await connector.isAuthorized()\n if (!isAuthorized) continue\n\n const data = await connector\n .connect({ isReconnecting: true })\n .catch(() => null)\n if (!data) continue\n\n connector.emitter.off('connect', config._internal.events.connect)\n connector.emitter.on('change', config._internal.events.change)\n connector.emitter.on('disconnect', config._internal.events.disconnect)\n\n config.setState((x) => {\n const connections = new Map(connected ? x.connections : new Map()).set(\n connector.uid,\n { accounts: data.accounts, chainId: data.chainId, connector },\n )\n return {\n ...x,\n current: connected ? x.current : connector.uid,\n connections,\n }\n })\n connections.push({\n accounts: data.accounts as readonly [Address, ...Address[]],\n chainId: data.chainId,\n connector,\n })\n providers.push(provider)\n connected = true\n }\n\n // Prevent overwriting connected status from race condition\n if (\n config.state.status === 'reconnecting' ||\n config.state.status === 'connecting'\n ) {\n // If connecting didn't succeed, set to disconnected\n if (!connected)\n config.setState((x) => ({\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }))\n else config.setState((x) => ({ ...x, status: 'connected' }))\n }\n\n isReconnecting = false\n return connections\n}\n","import { reconnect } from './actions/reconnect.js'\nimport type { Config, State } from './createConfig.js'\n\ntype HydrateParameters = {\n initialState?: State | undefined\n reconnectOnMount?: boolean | undefined\n}\n\nexport function hydrate(config: Config, parameters: HydrateParameters) {\n const { initialState, reconnectOnMount } = parameters\n\n if (initialState && !config._internal.store.persist.hasHydrated())\n config.setState({\n ...initialState,\n chainId: config.chains.some((x) => x.id === initialState.chainId)\n ? initialState.chainId\n : config.chains[0].id,\n connections: reconnectOnMount ? initialState.connections : new Map(),\n status: reconnectOnMount ? 'reconnecting' : 'disconnected',\n })\n\n return {\n async onMount() {\n if (config._internal.ssr) {\n await config._internal.store.persist.rehydrate()\n if (config._internal.mipd) {\n config._internal.connectors.setState((connectors) => {\n const rdnsSet = new Set()\n for (const connector of connectors ?? []) {\n if (connector.rdns) rdnsSet.add(connector.rdns)\n }\n const mipdConnectors = []\n const providers = config._internal.mipd?.getProviders() ?? []\n for (const provider of providers) {\n if (rdnsSet.has(provider.info.rdns)) continue\n const connectorFn =\n config._internal.connectors.providerDetailToConnector(provider)\n const connector = config._internal.connectors.setup(connectorFn)\n mipdConnectors.push(connector)\n }\n return [...connectors, ...mipdConnectors]\n })\n }\n }\n\n if (reconnectOnMount) reconnect(config)\n else if (config.storage)\n // Reset connections that may have been hydrated from storage.\n config.setState((x) => ({\n ...x,\n connections: new Map(),\n }))\n },\n }\n}\n","'use client'\n\nimport { type ResolvedRegister, type State, hydrate } from '@wagmi/core'\nimport { type ReactElement, useEffect, useRef } from 'react'\n\nexport type HydrateProps = {\n config: ResolvedRegister['config']\n initialState?: State | undefined\n reconnectOnMount?: boolean | undefined\n}\n\nexport function Hydrate(parameters: React.PropsWithChildren) {\n const { children, config, initialState, reconnectOnMount = true } = parameters\n\n const { onMount } = hydrate(config, {\n initialState,\n reconnectOnMount,\n })\n\n // Hydrate for non-SSR\n if (!config._internal.ssr) onMount()\n\n // Hydrate for SSR\n const active = useRef(true)\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n if (!active.current) return\n if (!config._internal.ssr) return\n onMount()\n return () => {\n active.current = false\n }\n }, [])\n\n return children as ReactElement\n}\n","'use client'\n\nimport type { ResolvedRegister, State } from '@wagmi/core'\nimport { createContext, createElement } from 'react'\nimport { Hydrate } from './hydrate.js'\n\nexport const WagmiContext = createContext<\n ResolvedRegister['config'] | undefined\n>(undefined)\n\nexport type WagmiProviderProps = {\n config: ResolvedRegister['config']\n initialState?: State | undefined\n reconnectOnMount?: boolean | undefined\n}\n\nexport function WagmiProvider(\n parameters: React.PropsWithChildren,\n) {\n const { children, config } = parameters\n\n const props = { value: config }\n return createElement(\n Hydrate,\n parameters,\n createElement(WagmiContext.Provider, props, children),\n )\n}\n","export const version = '2.14.2'\n","import type { Compute, OneOf } from '../types/utils.js'\nimport { getVersion } from '../utils/getVersion.js'\n\nexport type ErrorType = Error & { name: name }\n\ntype BaseErrorOptions = Compute<\n OneOf<{ details?: string | undefined } | { cause: BaseError | Error }> & {\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n }\n>\n\nexport type BaseErrorType = BaseError & { name: 'WagmiCoreError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n\n override name = 'WagmiCoreError'\n get docsBaseUrl() {\n return 'https://wagmi.sh/core'\n }\n get version() {\n return getVersion()\n }\n\n constructor(shortMessage: string, options: BaseErrorOptions = {}) {\n super()\n\n const details =\n options.cause instanceof BaseError\n ? options.cause.details\n : options.cause?.message\n ? options.cause.message\n : options.details!\n const docsPath =\n options.cause instanceof BaseError\n ? options.cause.docsPath || options.docsPath\n : options.docsPath\n\n this.message = [\n shortMessage || 'An error occurred.',\n '',\n ...(options.metaMessages ? [...options.metaMessages, ''] : []),\n ...(docsPath\n ? [\n `Docs: ${this.docsBaseUrl}${docsPath}.html${\n options.docsSlug ? `#${options.docsSlug}` : ''\n }`,\n ]\n : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: ${this.version}`,\n ].join('\\n')\n\n if (options.cause) this.cause = options.cause\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = options.metaMessages\n this.shortMessage = shortMessage\n }\n\n walk(fn?: (err: unknown) => boolean) {\n return this.#walk(this, fn)\n }\n\n #walk(err: unknown, fn?: (err: unknown) => boolean): unknown {\n if (fn?.(err)) return err\n if ((err as Error).cause) return this.#walk((err as Error).cause, fn)\n return err\n }\n}\n","import { version } from '../version.js'\n\nexport const getVersion = () => `@wagmi/core@${version}`\n","import { BaseError as CoreError } from '@wagmi/core'\n\nimport { getVersion } from '../utils/getVersion.js'\n\nexport type BaseErrorType = BaseError & { name: 'WagmiError' }\nexport class BaseError extends CoreError {\n override name = 'WagmiError'\n override get docsBaseUrl() {\n return 'https://wagmi.sh/react'\n }\n override get version() {\n return getVersion()\n }\n}\n","import { version } from '../version.js'\n\nexport const getVersion = () => `wagmi@${version}`\n","import { BaseError } from './base.js'\n\nexport type WagmiProviderNotFoundErrorType = WagmiProviderNotFoundError & {\n name: 'WagmiProviderNotFoundError'\n}\nexport class WagmiProviderNotFoundError extends BaseError {\n override name = 'WagmiProviderNotFoundError'\n constructor() {\n super('`useConfig` must be used within `WagmiProvider`.', {\n docsPath: '/api/WagmiProvider',\n })\n }\n}\n","'use client'\n\nimport type { Config, ResolvedRegister } from '@wagmi/core'\nimport { useContext } from 'react'\n\nimport { WagmiContext } from '../context.js'\nimport { WagmiProviderNotFoundError } from '../errors/context.js'\nimport type { ConfigParameter } from '../types/properties.js'\n\nexport type UseConfigParameters =\n ConfigParameter\n\nexport type UseConfigReturnType = config\n\n/** https://wagmi.sh/react/api/hooks/useConfig */\nexport function useConfig(\n parameters: UseConfigParameters = {},\n): UseConfigReturnType {\n const config = parameters.config ?? useContext(WagmiContext)\n if (!config) throw new WagmiProviderNotFoundError()\n return config as UseConfigReturnType\n}\n","'use client'\n\nimport { deepEqual } from '@wagmi/core/internal'\nimport { useMemo, useRef } from 'react'\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js'\n\nconst isPlainObject = (obj: unknown) =>\n typeof obj === 'object' && !Array.isArray(obj)\n\nexport function useSyncExternalStoreWithTracked<\n snapshot extends selection,\n selection = snapshot,\n>(\n subscribe: (onStoreChange: () => void) => () => void,\n getSnapshot: () => snapshot,\n getServerSnapshot: undefined | null | (() => snapshot) = getSnapshot,\n isEqual: (a: selection, b: selection) => boolean = deepEqual,\n) {\n const trackedKeys = useRef([])\n const result = useSyncExternalStoreWithSelector(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n (x) => x,\n (a, b) => {\n if (isPlainObject(a) && isPlainObject(b) && trackedKeys.current.length) {\n for (const key of trackedKeys.current) {\n const equal = isEqual(\n (a as { [_a: string]: any })[key],\n (b as { [_b: string]: any })[key],\n )\n if (!equal) return false\n }\n return true\n }\n return isEqual(a, b)\n },\n )\n\n return useMemo(() => {\n if (isPlainObject(result)) {\n const trackedResult = { ...result }\n let properties = {}\n for (const [key, value] of Object.entries(\n trackedResult as { [key: string]: any },\n )) {\n properties = {\n ...properties,\n [key]: {\n configurable: false,\n enumerable: true,\n get: () => {\n if (!trackedKeys.current.includes(key)) {\n trackedKeys.current.push(key)\n }\n return value\n },\n },\n }\n }\n Object.defineProperties(trackedResult, properties)\n return trackedResult\n }\n\n return result\n }, [result])\n}\n","'use client'\n\nimport {\n type Config,\n type GetAccountReturnType,\n type ResolvedRegister,\n getAccount,\n watchAccount,\n} from '@wagmi/core'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\nimport { useSyncExternalStoreWithTracked } from './useSyncExternalStoreWithTracked.js'\n\nexport type UseAccountParameters =\n ConfigParameter\n\nexport type UseAccountReturnType =\n GetAccountReturnType\n\n/** https://wagmi.sh/react/api/hooks/useAccount */\nexport function useAccount(\n parameters: UseAccountParameters = {},\n): UseAccountReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStoreWithTracked(\n (onChange) => watchAccount(config, { onChange }),\n () => getAccount(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\nimport { type GetAccountReturnType, getAccount } from './getAccount.js'\n\nexport type WatchAccountParameters = {\n onChange(\n account: GetAccountReturnType,\n prevAccount: GetAccountReturnType,\n ): void\n}\n\nexport type WatchAccountReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchAccount */\nexport function watchAccount(\n config: config,\n parameters: WatchAccountParameters,\n): WatchAccountReturnType {\n const { onChange } = parameters\n\n return config.subscribe(() => getAccount(config), onChange, {\n equalityFn(a, b) {\n const { connector: aConnector, ...aRest } = a\n const { connector: bConnector, ...bRest } = b\n return (\n deepEqual(aRest, bRest) &&\n // check connector separately\n aConnector?.id === bConnector?.id &&\n aConnector?.uid === bConnector?.uid\n )\n },\n })\n}\n","// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\ntype BatchCallsCallback> = (...args: T) => void\n\ntype ScheduleFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: Array = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n let scheduleFn: ScheduleFunction = (cb) => setTimeout(cb, 0)\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleFn(() => {\n notifyFn(callback)\n })\n }\n }\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n return {\n batch: (callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: >(\n callback: BatchCallsCallback,\n ): BatchCallsCallback => {\n return (...args) => {\n schedule(() => {\n callback(...args)\n })\n }\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn: NotifyFunction) => {\n notifyFn = fn\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n },\n setScheduler: (fn: ScheduleFunction) => {\n scheduleFn = fn\n },\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n","import type {\n DefaultError,\n Enabled,\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryFunction,\n QueryKey,\n QueryOptions,\n StaleTime,\n} from './types'\nimport type { Mutation } from './mutation'\nimport type { FetchOptions, Query } from './query'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type Updater = TOutput | ((input: TInput) => TOutput)\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in globalThis\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate(\n updater: Updater,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as (_: TInput) => TOutput)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime: undefined | StaleTime,\n query: Query,\n): number | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime\n}\n\nexport function resolveEnabled<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n enabled: undefined | Enabled,\n query: Query,\n): boolean | undefined {\n return typeof enabled === 'function' ? enabled(query) : enabled\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions(\n queryKey: TQueryKey,\n options?: Pick, 'queryKeyHashFn'>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aItems = array ? a : Object.keys(a)\n const aSize = aItems.length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n if (\n ((!array && aItems.includes(key)) || array) &&\n a[key] === undefined &&\n b[key] === undefined\n ) {\n copy[key] = undefined\n equalItems++\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key] && a[key] !== undefined) {\n equalItems++\n }\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects.\n */\nexport function shallowEqualObjects>(\n a: T,\n b: T | undefined,\n): boolean {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\n// eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has no constructor\n const ctor = o.constructor\n if (ctor === undefined) {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Handles Objects created by Object.create()\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data) as TData\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== 'production') {\n try {\n return replaceEqualDeep(prevData, data)\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`,\n )\n }\n }\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd(items: Array, item: T, max = 0): Array {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart(items: Array, item: T, max = 0): Array {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n\nexport const skipToken = Symbol()\nexport type SkipToken = typeof skipToken\n\nexport function ensureQueryFn<\n TQueryFnData = unknown,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: {\n queryFn?: QueryFunction | SkipToken\n queryHash?: string\n },\n fetchOptions?: FetchOptions,\n): QueryFunction {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,\n )\n }\n }\n\n // if we attempt to retry a fetch that was triggered from an initialPromise\n // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise\n // if an observer has already mounted, we will be able to retry with that queryFn\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise!\n }\n\n if (!options.queryFn || options.queryFn === skipToken) {\n return () =>\n Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))\n }\n\n return options.queryFn\n}\n","import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n gcTime!: number\n #gcTimeout?: ReturnType\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.gcTime)\n }\n }\n\n protected updateGcTime(newGcTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no gcTime is set\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout)\n this.#gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n","export class Subscribable {\n protected listeners = new Set()\n\n constructor() {\n this.subscribe = this.subscribe.bind(this)\n }\n\n subscribe(listener: TListener): () => void {\n this.listeners.add(listener)\n\n this.onSubscribe()\n\n return () => {\n this.listeners.delete(listener)\n this.onUnsubscribe()\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.size > 0\n }\n\n protected onSubscribe(): void {\n // Do nothing\n }\n\n protected onUnsubscribe(): void {\n // Do nothing\n }\n}\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (focused: boolean) => void\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable {\n #focused?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibilitychange\n window.addEventListener('visibilitychange', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n }\n }\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n const changed = this.#focused !== focused\n if (changed) {\n this.#focused = focused\n this.onFocus()\n }\n }\n\n onFocus(): void {\n const isFocused = this.isFocused()\n this.listeners.forEach((listener) => {\n listener(isFocused)\n })\n }\n\n isFocused(): boolean {\n if (typeof this.#focused === 'boolean') {\n return this.#focused\n }\n\n // document global can be unavailable in react native\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return globalThis.document?.visibilityState !== 'hidden'\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable {\n #online = true\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n","/**\n * Thenable types which matches React's types for promises\n *\n * React seemingly uses `.status`, `.value` and `.reason` properties on a promises to optimistically unwrap data from promises\n *\n * @see https://github.com/facebook/react/blob/main/packages/shared/ReactTypes.js#L112-L138\n * @see https://github.com/facebook/react/blob/4f604941569d2e8947ce1460a0b2997e835f37b9/packages/react-debug-tools/src/ReactDebugHooks.js#L224-L227\n */\n\ninterface Fulfilled {\n status: 'fulfilled'\n value: T\n}\ninterface Rejected {\n status: 'rejected'\n reason: unknown\n}\ninterface Pending {\n status: 'pending'\n\n /**\n * Resolve the promise with a value.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n resolve: (value: T) => void\n /**\n * Reject the promise with a reason.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n reject: (reason: unknown) => void\n}\n\nexport type FulfilledThenable = Promise & Fulfilled\nexport type RejectedThenable = Promise & Rejected\nexport type PendingThenable = Promise & Pending\n\nexport type Thenable =\n | FulfilledThenable\n | RejectedThenable\n | PendingThenable\n\nexport function pendingThenable(): PendingThenable {\n let resolve: Pending['resolve']\n let reject: Pending['reject']\n // this could use `Promise.withResolvers()` in the future\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n }) as PendingThenable\n\n thenable.status = 'pending'\n thenable.catch(() => {\n // prevent unhandled rejection errors\n })\n\n function finalize(data: Fulfilled | Rejected) {\n Object.assign(thenable, data)\n\n // clear pending props props to avoid calling them twice\n delete (thenable as Partial>).resolve\n delete (thenable as Partial>).reject\n }\n\n thenable.resolve = (value) => {\n finalize({\n status: 'fulfilled',\n value,\n })\n\n resolve(value)\n }\n thenable.reject = (reason) => {\n finalize({\n status: 'rejected',\n reason,\n })\n\n reject(reason)\n }\n\n return thenable\n}\n","import { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { pendingThenable } from './thenable'\nimport { isServer, sleep } from './utils'\nimport type { CancelOptions, DefaultError, NetworkMode } from './types'\n\n// TYPES\n\ninterface RetryerConfig {\n fn: () => TData | Promise\n initialPromise?: Promise\n abort?: () => void\n onError?: (error: TError) => void\n onSuccess?: (data: TData) => void\n onFail?: (failureCount: number, error: TError) => void\n onPause?: () => void\n onContinue?: () => void\n retry?: RetryValue\n retryDelay?: RetryDelayValue\n networkMode: NetworkMode | undefined\n canRun: () => boolean\n}\n\nexport interface Retryer {\n promise: Promise\n cancel: (cancelOptions?: CancelOptions) => void\n continue: () => Promise\n cancelRetry: () => void\n continueRetry: () => void\n canStart: () => boolean\n start: () => Promise\n}\n\nexport type RetryValue = boolean | number | ShouldRetryFunction\n\ntype ShouldRetryFunction = (\n failureCount: number,\n error: TError,\n) => boolean\n\nexport type RetryDelayValue = number | RetryDelayFunction\n\ntype RetryDelayFunction = (\n failureCount: number,\n error: TError,\n) => number\n\nfunction defaultRetryDelay(failureCount: number) {\n return Math.min(1000 * 2 ** failureCount, 30000)\n}\n\nexport function canFetch(networkMode: NetworkMode | undefined): boolean {\n return (networkMode ?? 'online') === 'online'\n ? onlineManager.isOnline()\n : true\n}\n\nexport class CancelledError extends Error {\n revert?: boolean\n silent?: boolean\n constructor(options?: CancelOptions) {\n super('CancelledError')\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport function isCancelledError(value: any): value is CancelledError {\n return value instanceof CancelledError\n}\n\nexport function createRetryer(\n config: RetryerConfig,\n): Retryer {\n let isRetryCancelled = false\n let failureCount = 0\n let isResolved = false\n let continueFn: ((value?: unknown) => void) | undefined\n\n const thenable = pendingThenable()\n\n const cancel = (cancelOptions?: CancelOptions): void => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions))\n\n config.abort?.()\n }\n }\n const cancelRetry = () => {\n isRetryCancelled = true\n }\n\n const continueRetry = () => {\n isRetryCancelled = false\n }\n\n const canContinue = () =>\n focusManager.isFocused() &&\n (config.networkMode === 'always' || onlineManager.isOnline()) &&\n config.canRun()\n\n const canStart = () => canFetch(config.networkMode) && config.canRun()\n\n const resolve = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onSuccess?.(value)\n continueFn?.()\n thenable.resolve(value)\n }\n }\n\n const reject = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onError?.(value)\n continueFn?.()\n thenable.reject(value)\n }\n }\n\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value)\n }\n }\n config.onPause?.()\n }).then(() => {\n continueFn = undefined\n if (!isResolved) {\n config.onContinue?.()\n }\n })\n }\n\n // Create loop function\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return\n }\n\n let promiseOrValue: any\n\n // we can re-use config.initialPromise on the first call of run()\n const initialPromise =\n failureCount === 0 ? config.initialPromise : undefined\n\n // Execute query\n try {\n promiseOrValue = initialPromise ?? config.fn()\n } catch (error) {\n promiseOrValue = Promise.reject(error)\n }\n\n Promise.resolve(promiseOrValue)\n .then(resolve)\n .catch((error) => {\n // Stop if the fetch is already resolved\n if (isResolved) {\n return\n }\n\n // Do we need to retry the request?\n const retry = config.retry ?? (isServer ? 0 : 3)\n const retryDelay = config.retryDelay ?? defaultRetryDelay\n const delay =\n typeof retryDelay === 'function'\n ? retryDelay(failureCount, error)\n : retryDelay\n const shouldRetry =\n retry === true ||\n (typeof retry === 'number' && failureCount < retry) ||\n (typeof retry === 'function' && retry(failureCount, error))\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error)\n return\n }\n\n failureCount++\n\n // Notify on fail\n config.onFail?.(failureCount, error)\n\n // Delay\n sleep(delay)\n // Pause if the document is not visible or when the device is offline\n .then(() => {\n return canContinue() ? undefined : pause()\n })\n .then(() => {\n if (isRetryCancelled) {\n reject(error)\n } else {\n run()\n }\n })\n })\n }\n\n return {\n promise: thenable,\n cancel,\n continue: () => {\n continueFn?.()\n return thenable\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n // Start loop\n if (canStart()) {\n run()\n } else {\n pause().then(run)\n }\n return thenable\n },\n }\n}\n","import { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { createRetryer } from './retryer'\nimport type {\n DefaultError,\n MutationMeta,\n MutationOptions,\n MutationStatus,\n} from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions\n state?: MutationState\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n failureReason: TError | null\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n submittedAt: number\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError | null\n}\n\ninterface PendingAction {\n type: 'pending'\n isPaused: boolean\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | PendingAction\n | PauseAction\n | SuccessAction\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> extends Removable {\n state: MutationState\n options!: MutationOptions\n readonly mutationId: number\n\n #observers: Array>\n #mutationCache: MutationCache\n #retryer?: Retryer\n\n constructor(config: MutationConfig) {\n super()\n\n this.mutationId = config.mutationId\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.setOptions(config.options)\n this.scheduleGc()\n }\n\n setOptions(\n options: MutationOptions,\n ): void {\n this.options = options\n\n this.updateGcTime(this.options.gcTime)\n }\n\n get meta(): MutationMeta | undefined {\n return this.options.meta\n }\n\n addObserver(observer: MutationObserver): void {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.#mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver): void {\n this.#observers = this.#observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.#mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === 'pending') {\n this.scheduleGc()\n } else {\n this.#mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise {\n return (\n this.#retryer?.continue() ??\n // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables!)\n )\n }\n\n async execute(variables: TVariables): Promise {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error('No mutationFn found'))\n }\n return this.options.mutationFn(variables)\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this),\n })\n\n const restored = this.state.status === 'pending'\n const isPaused = !this.#retryer.canStart()\n\n try {\n if (!restored) {\n this.#dispatch({ type: 'pending', variables, isPaused })\n // Notify cache callback\n await this.#mutationCache.config.onMutate?.(\n variables,\n this as Mutation,\n )\n const context = await this.options.onMutate?.(variables)\n if (context !== this.state.context) {\n this.#dispatch({\n type: 'pending',\n context,\n variables,\n isPaused,\n })\n }\n }\n const data = await this.#retryer.start()\n\n // Notify cache callback\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSuccess?.(data, variables, this.state.context!)\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSettled?.(data, null, variables, this.state.context)\n\n this.#dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n await this.#mutationCache.config.onError?.(\n error as any,\n variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onError?.(\n error as TError,\n variables,\n this.state.context,\n )\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n undefined,\n error as any,\n this.state.variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n variables,\n this.state.context,\n )\n throw error\n } finally {\n this.#dispatch({ type: 'error', error: error as TError })\n }\n } finally {\n this.#mutationCache.runNext(this)\n }\n }\n\n #dispatch(action: Action): void {\n const reducer = (\n state: MutationState,\n ): MutationState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'pending':\n return {\n ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: 'pending',\n variables: action.variables,\n submittedAt: Date.now(),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error',\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.#mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n submittedAt: 0,\n }\n}\n","import { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport { hashKey, shallowEqualObjects } from './utils'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n MutateOptions,\n MutationObserverOptions,\n MutationObserverResult,\n} from './types'\nimport type { Action, Mutation } from './mutation'\n\n// TYPES\n\ntype MutationObserverListener = (\n result: MutationObserverResult,\n) => void\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener\n> {\n options!: MutationObserverOptions\n\n #client: QueryClient\n #currentResult: MutationObserverResult =\n undefined!\n #currentMutation?: Mutation\n #mutateOptions?: MutateOptions\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions,\n ) {\n super()\n\n this.#client = client\n this.setOptions(options)\n this.bindMethods()\n this.#updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options: MutationObserverOptions,\n ) {\n const prevOptions = this.options as\n | MutationObserverOptions\n | undefined\n this.options = this.#client.defaultMutationOptions(options)\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.#currentMutation,\n observer: this,\n })\n }\n\n if (\n prevOptions?.mutationKey &&\n this.options.mutationKey &&\n hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)\n ) {\n this.reset()\n } else if (this.#currentMutation?.state.status === 'pending') {\n this.#currentMutation.setOptions(this.options)\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action): void {\n this.#updateResult()\n\n this.#notify(action)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.#currentResult\n }\n\n reset(): void {\n // reset needs to remove the observer from the mutation because there is no way to \"get it back\"\n // another mutate call will yield a new mutation!\n this.#currentMutation?.removeObserver(this)\n this.#currentMutation = undefined\n this.#updateResult()\n this.#notify()\n }\n\n mutate(\n variables: TVariables,\n options?: MutateOptions,\n ): Promise {\n this.#mutateOptions = options\n\n this.#currentMutation?.removeObserver(this)\n\n this.#currentMutation = this.#client\n .getMutationCache()\n .build(this.#client, this.options)\n\n this.#currentMutation.addObserver(this)\n\n return this.#currentMutation.execute(variables)\n }\n\n #updateResult(): void {\n const state =\n this.#currentMutation?.state ??\n getDefaultState()\n\n this.#currentResult = {\n ...state,\n isPending: state.status === 'pending',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n } as MutationObserverResult\n }\n\n #notify(action?: Action): void {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables!\n const context = this.#currentResult.context\n\n if (action?.type === 'success') {\n this.#mutateOptions.onSuccess?.(action.data, variables, context!)\n this.#mutateOptions.onSettled?.(action.data, null, variables, context)\n } else if (action?.type === 'error') {\n this.#mutateOptions.onError?.(action.error, variables, context)\n this.#mutateOptions.onSettled?.(\n undefined,\n action.error,\n variables,\n context,\n )\n }\n }\n\n // Then trigger the listeners\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n })\n }\n}\n","'use client'\nimport * as React from 'react'\n\nimport type { QueryClient } from '@tanstack/query-core'\n\nexport const QueryClientContext = React.createContext(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = React.useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: React.ReactNode\n}\n\nexport const QueryClientProvider = ({\n client,\n children,\n}: QueryClientProviderProps): React.JSX.Element => {\n React.useEffect(() => {\n client.mount()\n return () => {\n client.unmount()\n }\n }, [client])\n\n return (\n \n {children}\n \n )\n}\n","export function shouldThrowError) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n\nexport function noop() {}\n","'use client'\nimport * as React from 'react'\nimport { MutationObserver, notifyManager } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport { noop, shouldThrowError } from './utils'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport type { DefaultError, QueryClient } from '@tanstack/query-core'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions,\n queryClient?: QueryClient,\n): UseMutationResult {\n const client = useQueryClient(queryClient)\n\n const [observer] = React.useState(\n () =>\n new MutationObserver(\n client,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n","import type { Address } from 'viem'\n\nimport type { Connector } from '../createConfig.js'\nimport { BaseError } from './base.js'\n\nexport type ChainNotConfiguredErrorType = ChainNotConfiguredError & {\n name: 'ChainNotConfiguredError'\n}\nexport class ChainNotConfiguredError extends BaseError {\n override name = 'ChainNotConfiguredError'\n constructor() {\n super('Chain not configured.')\n }\n}\n\nexport type ConnectorAlreadyConnectedErrorType =\n ConnectorAlreadyConnectedError & {\n name: 'ConnectorAlreadyConnectedError'\n }\nexport class ConnectorAlreadyConnectedError extends BaseError {\n override name = 'ConnectorAlreadyConnectedError'\n constructor() {\n super('Connector already connected.')\n }\n}\n\nexport type ConnectorNotConnectedErrorType = ConnectorNotConnectedError & {\n name: 'ConnectorNotConnectedError'\n}\nexport class ConnectorNotConnectedError extends BaseError {\n override name = 'ConnectorNotConnectedError'\n constructor() {\n super('Connector not connected.')\n }\n}\n\nexport type ConnectorNotFoundErrorType = ConnectorNotFoundError & {\n name: 'ConnectorNotFoundError'\n}\nexport class ConnectorNotFoundError extends BaseError {\n override name = 'ConnectorNotFoundError'\n constructor() {\n super('Connector not found.')\n }\n}\n\nexport type ConnectorAccountNotFoundErrorType =\n ConnectorAccountNotFoundError & {\n name: 'ConnectorAccountNotFoundError'\n }\nexport class ConnectorAccountNotFoundError extends BaseError {\n override name = 'ConnectorAccountNotFoundError'\n constructor({\n address,\n connector,\n }: {\n address: Address\n connector: Connector\n }) {\n super(`Account \"${address}\" not found for connector \"${connector.name}\".`)\n }\n}\n\nexport type ConnectorChainMismatchErrorType = ConnectorAccountNotFoundError & {\n name: 'ConnectorChainMismatchError'\n}\nexport class ConnectorChainMismatchError extends BaseError {\n override name = 'ConnectorChainMismatchError'\n constructor({\n connectionChainId,\n connectorChainId,\n }: {\n connectionChainId: number\n connectorChainId: number\n }) {\n super(\n `The current chain of the connector (id: ${connectorChainId}) does not match the connection's chain (id: ${connectionChainId}).`,\n {\n metaMessages: [\n `Current Chain ID: ${connectorChainId}`,\n `Expected Chain ID: ${connectionChainId}`,\n ],\n },\n )\n }\n}\n\nexport type ConnectorUnavailableReconnectingErrorType =\n ConnectorUnavailableReconnectingError & {\n name: 'ConnectorUnavailableReconnectingError'\n }\nexport class ConnectorUnavailableReconnectingError extends BaseError {\n override name = 'ConnectorUnavailableReconnectingError'\n constructor({ connector }: { connector: { name: string } }) {\n super(`Connector \"${connector.name}\" unavailable while reconnecting.`, {\n details: [\n 'During the reconnection step, the only connector methods guaranteed to be available are: `id`, `name`, `type`, `uuid`.',\n 'All other methods are not guaranteed to be available until reconnection completes and connectors are fully restored.',\n 'This error commonly occurs for connectors that asynchronously inject after reconnection has already started.',\n ].join(' '),\n })\n }\n}\n","import type { MutationOptions } from '@tanstack/query-core'\n\nimport {\n type ConnectErrorType,\n type ConnectParameters,\n type ConnectReturnType,\n connect,\n} from '../actions/connect.js'\nimport type { Config } from '../createConfig.js'\n\nimport type { Mutate, MutateAsync } from './types.js'\n\nexport function connectMutationOptions(config: config) {\n return {\n mutationFn(variables) {\n return connect(config, variables)\n },\n mutationKey: ['connect'],\n } as const satisfies MutationOptions<\n ConnectData,\n ConnectErrorType,\n ConnectVariables\n >\n}\n\nexport type ConnectData = ConnectReturnType\n\nexport type ConnectVariables = ConnectParameters\n\nexport type ConnectMutate = Mutate<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n>\n\nexport type ConnectMutateAsync<\n config extends Config,\n context = unknown,\n> = MutateAsync<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n>\n","import type {\n Address,\n ResourceUnavailableRpcErrorType,\n UserRejectedRequestErrorType,\n} from 'viem'\n\nimport type { CreateConnectorFn } from '../connectors/createConnector.js'\nimport type { Config, Connector } from '../createConfig.js'\nimport type { BaseErrorType, ErrorType } from '../errors/base.js'\nimport {\n ConnectorAlreadyConnectedError,\n type ConnectorAlreadyConnectedErrorType,\n} from '../errors/config.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport type { Compute } from '../types/utils.js'\n\nexport type ConnectParameters = Compute<\n ChainIdParameter & {\n connector: Connector | CreateConnectorFn\n }\n>\n\nexport type ConnectReturnType = {\n accounts: readonly [Address, ...Address[]]\n chainId:\n | config['chains'][number]['id']\n | (number extends config['chains'][number]['id'] ? number : number & {})\n}\n\nexport type ConnectErrorType =\n | ConnectorAlreadyConnectedErrorType\n // connector.connect()\n | UserRejectedRequestErrorType\n | ResourceUnavailableRpcErrorType\n // base\n | BaseErrorType\n | ErrorType\n\n/** https://wagmi.sh/core/api/actions/connect */\nexport async function connect(\n config: config,\n parameters: ConnectParameters,\n): Promise> {\n // \"Register\" connector if not already created\n let connector: Connector\n if (typeof parameters.connector === 'function') {\n connector = config._internal.connectors.setup(parameters.connector)\n } else connector = parameters.connector\n\n // Check if connector is already connected\n if (connector.uid === config.state.current)\n throw new ConnectorAlreadyConnectedError()\n\n try {\n config.setState((x) => ({ ...x, status: 'connecting' }))\n connector.emitter.emit('message', { type: 'connecting' })\n\n const data = await connector.connect({ chainId: parameters.chainId })\n const accounts = data.accounts as readonly [Address, ...Address[]]\n\n connector.emitter.off('connect', config._internal.events.connect)\n connector.emitter.on('change', config._internal.events.change)\n connector.emitter.on('disconnect', config._internal.events.disconnect)\n\n await config.storage?.setItem('recentConnectorId', connector.id)\n config.setState((x) => ({\n ...x,\n connections: new Map(x.connections).set(connector.uid, {\n accounts,\n chainId: data.chainId,\n connector: connector,\n }),\n current: connector.uid,\n status: 'connected',\n }))\n\n return { accounts, chainId: data.chainId }\n } catch (error) {\n config.setState((x) => ({\n ...x,\n // Keep existing connector connected in case of error\n status: x.current ? 'connected' : 'disconnected',\n }))\n throw error\n }\n}\n","import type { Config, Connector } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport type GetConnectorsReturnType = readonly Connector[]\n\nlet previousConnectors: readonly Connector[] = []\n\n/** https://wagmi.sh/core/api/actions/getConnectors */\nexport function getConnectors(config: Config): GetConnectorsReturnType {\n const connectors = config.connectors\n if (deepEqual(previousConnectors, connectors)) return previousConnectors\n previousConnectors = connectors\n return connectors\n}\n","'use client'\n\nimport {\n type GetConnectorsReturnType,\n getConnectors,\n watchConnectors,\n} from '@wagmi/core'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseConnectorsParameters = ConfigParameter\n\nexport type UseConnectorsReturnType = GetConnectorsReturnType\n\n/** https://wagmi.sh/react/api/hooks/useConnectors */\nexport function useConnectors(\n parameters: UseConnectorsParameters = {},\n): UseConnectorsReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchConnectors(config, { onChange }),\n () => getConnectors(config),\n () => getConnectors(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport type { GetConnectorsReturnType } from './getConnectors.js'\n\nexport type WatchConnectorsParameters = {\n onChange(\n connections: GetConnectorsReturnType,\n prevConnectors: GetConnectorsReturnType,\n ): void\n}\n\nexport type WatchConnectorsReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchConnectors */\nexport function watchConnectors(\n config: Config,\n parameters: WatchConnectorsParameters,\n): WatchConnectorsReturnType {\n const { onChange } = parameters\n return config._internal.connectors.subscribe((connectors, prevConnectors) => {\n onChange(Object.values(connectors), prevConnectors)\n })\n}\n","'use client'\n\nimport { useMutation } from '@tanstack/react-query'\nimport type { Config, ConnectErrorType, ResolvedRegister } from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type ConnectData,\n type ConnectMutate,\n type ConnectMutateAsync,\n type ConnectVariables,\n connectMutationOptions,\n} from '@wagmi/core/query'\nimport { useEffect } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport type {\n UseMutationParameters,\n UseMutationReturnType,\n} from '../utils/query.js'\nimport { useConfig } from './useConfig.js'\nimport { type UseConnectorsReturnType, useConnectors } from './useConnectors.js'\n\nexport type UseConnectParameters<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n ConfigParameter & {\n mutation?:\n | UseMutationParameters<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n >\n | undefined\n }\n>\n\nexport type UseConnectReturnType<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n UseMutationReturnType<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n > & {\n connect: ConnectMutate\n connectAsync: ConnectMutateAsync\n connectors: Compute\n }\n>\n\n/** https://wagmi.sh/react/api/hooks/useConnect */\nexport function useConnect<\n config extends Config = ResolvedRegister['config'],\n context = unknown,\n>(\n parameters: UseConnectParameters = {},\n): UseConnectReturnType {\n const { mutation } = parameters\n\n const config = useConfig(parameters)\n\n const mutationOptions = connectMutationOptions(config)\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n })\n\n // Reset mutation back to an idle state when the connector disconnects.\n useEffect(() => {\n return config.subscribe(\n ({ status }) => status,\n (status, previousStatus) => {\n if (previousStatus === 'connected' && status === 'disconnected')\n result.reset()\n },\n )\n }, [config, result.reset])\n\n return {\n ...result,\n connect: mutate,\n connectAsync: mutateAsync,\n connectors: useConnectors({ config }),\n }\n}\n","import type { Rdns } from './register.js'\nimport type { EIP6963ProviderDetail } from './types.js'\nimport { requestProviders } from './utils.js'\n\nexport type Listener = (\n providerDetails: readonly EIP6963ProviderDetail[],\n meta?:\n | {\n added?: readonly EIP6963ProviderDetail[] | undefined\n removed?: readonly EIP6963ProviderDetail[] | undefined\n }\n | undefined,\n) => void\n\nexport type Store = {\n /**\n * Clears the store, including all provider details.\n */\n clear(): void\n /**\n * Destroys the store, including all provider details and listeners.\n */\n destroy(): void\n /**\n * Finds a provider detail by its RDNS (Reverse Domain Name Identifier).\n */\n findProvider(args: { rdns: Rdns }): EIP6963ProviderDetail | undefined\n /**\n * Returns all provider details that have been emitted.\n */\n getProviders(): readonly EIP6963ProviderDetail[]\n /**\n * Resets the store, and emits an event to request provider details.\n */\n reset(): void\n /**\n * Subscribes to emitted provider details.\n */\n subscribe(\n listener: Listener,\n args?: { emitImmediately?: boolean | undefined } | undefined,\n ): () => void\n\n /**\n * @internal\n * Current state of listening listeners.\n */\n _listeners(): Set\n}\n\nexport function createStore(): Store {\n const listeners: Set = new Set()\n let providerDetails: readonly EIP6963ProviderDetail[] = []\n\n const request = () =>\n requestProviders((providerDetail) => {\n if (\n providerDetails.some(\n ({ info }) => info.uuid === providerDetail.info.uuid,\n )\n )\n return\n\n providerDetails = [...providerDetails, providerDetail]\n listeners.forEach((listener) =>\n listener(providerDetails, { added: [providerDetail] }),\n )\n })\n let unwatch = request()\n\n return {\n _listeners() {\n return listeners\n },\n clear() {\n listeners.forEach((listener) =>\n listener([], { removed: [...providerDetails] }),\n )\n providerDetails = []\n },\n destroy() {\n this.clear()\n listeners.clear()\n unwatch?.()\n },\n findProvider({ rdns }) {\n return providerDetails.find(\n (providerDetail) => providerDetail.info.rdns === rdns,\n )\n },\n getProviders() {\n return providerDetails\n },\n reset() {\n this.clear()\n unwatch?.()\n unwatch = request()\n },\n subscribe(listener, { emitImmediately } = {}) {\n listeners.add(listener)\n if (emitImmediately) listener(providerDetails, { added: providerDetails })\n return () => listeners.delete(listener)\n },\n }\n}\n","import type { EIP1193Provider } from './register.js'\nimport type {\n EIP6963AnnounceProviderEvent,\n EIP6963ProviderDetail,\n} from './types.js'\n\n////////////////////////////////////////////////////////////////////////////\n// Announce Provider\n\nexport type AnnounceProviderParameters = EIP6963ProviderDetail<\n EIP1193Provider,\n string\n>\nexport type AnnounceProviderReturnType = () => void\n\n/**\n * Announces an EIP-1193 Provider.\n */\nexport function announceProvider(\n detail: AnnounceProviderParameters,\n): AnnounceProviderReturnType {\n const event: CustomEvent = new CustomEvent(\n 'eip6963:announceProvider',\n { detail: Object.freeze(detail) },\n )\n\n window.dispatchEvent(event)\n\n const handler = () => window.dispatchEvent(event)\n window.addEventListener('eip6963:requestProvider', handler)\n return () => window.removeEventListener('eip6963:requestProvider', handler)\n}\n\n////////////////////////////////////////////////////////////////////////////\n// Request Providers\n\nexport type RequestProvidersParameters = (\n providerDetail: EIP6963ProviderDetail,\n) => void\nexport type RequestProvidersReturnType = (() => void) | undefined\n\n/**\n * Watches for EIP-1193 Providers to be announced.\n */\nexport function requestProviders(\n listener: RequestProvidersParameters,\n): RequestProvidersReturnType {\n if (typeof window === 'undefined') return\n const handler = (event: EIP6963AnnounceProviderEvent) =>\n listener(event.detail)\n\n window.addEventListener('eip6963:announceProvider', handler)\n\n window.dispatchEvent(new CustomEvent('eip6963:requestProvider'))\n\n return () => window.removeEventListener('eip6963:announceProvider', handler)\n}\n","const size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Address } from 'abitype'\n\nimport type { JsonRpcAccount } from '../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../accounts/utils/parseAccount.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Account } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type {\n EIP1193RequestFn,\n EIP1474Methods,\n RpcSchema,\n} from '../types/eip1193.js'\nimport type { ExactPartial, Prettify } from '../types/utils.js'\nimport type {\n CcipRequestParameters,\n CcipRequestReturnType,\n} from '../utils/ccip.js'\nimport { uid } from '../utils/uid.js'\nimport type { PublicActions } from './decorators/public.js'\nimport type { WalletActions } from './decorators/wallet.js'\nimport type { Transport } from './transports/createTransport.js'\n\nexport type ClientConfig<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = {\n /** The Account to use for the Client. This will be used for Actions that require an account as an argument. */\n account?: accountOrAddress | Account | Address | undefined\n /** Flags for batch settings. */\n batch?:\n | {\n /** Toggle to enable `eth_call` multicall aggregation. */\n multicall?: boolean | Prettify | undefined\n }\n | undefined\n /**\n * Time (in ms) that cached data will remain in memory.\n * @default 4_000\n */\n cacheTime?: number | undefined\n /**\n * [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration.\n * If `false`, the client will not support offchain CCIP lookups.\n */\n ccipRead?:\n | {\n /**\n * A function that will be called to make the offchain CCIP lookup request.\n * @see https://eips.ethereum.org/EIPS/eip-3668#client-lookup-protocol\n */\n request?: (\n parameters: CcipRequestParameters,\n ) => Promise\n }\n | false\n | undefined\n /** Chain for the client. */\n chain?: Chain | undefined | chain\n /** A key for the client. */\n key?: string | undefined\n /** A name for the client. */\n name?: string | undefined\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number | undefined\n /**\n * Typed JSON-RPC schema for the client.\n */\n rpcSchema?: rpcSchema | undefined\n /** The RPC transport */\n transport: transport\n /** The type of client. */\n type?: string | undefined\n}\n\n// Actions that are used internally by other Actions (ie. `call` is used by `readContract`).\n// They are allowed to be extended, but must conform to their parameter & return type interfaces.\n// Example: an extended `call` action must accept `CallParameters` as parameters,\n// and conform to the `CallReturnType` return type.\ntype ExtendableProtectedActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions,\n | 'call'\n | 'createContractEventFilter'\n | 'createEventFilter'\n | 'estimateContractGas'\n | 'estimateGas'\n | 'getBlock'\n | 'getBlockNumber'\n | 'getChainId'\n | 'getContractEvents'\n | 'getEnsText'\n | 'getFilterChanges'\n | 'getGasPrice'\n | 'getLogs'\n | 'getTransaction'\n | 'getTransactionCount'\n | 'getTransactionReceipt'\n | 'prepareTransactionRequest'\n | 'readContract'\n | 'sendRawTransaction'\n | 'simulateContract'\n | 'uninstallFilter'\n | 'watchBlockNumber'\n | 'watchContractEvent'\n> &\n Pick, 'sendTransaction' | 'writeContract'>\n\n// TODO: Move `transport` to slot index 2 since `chain` and `account` used more frequently.\n// Otherwise, we end up with a lot of `Client` in actions.\nexport type Client<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n extended extends Extended | undefined = Extended | undefined,\n> = Client_Base &\n (extended extends Extended ? extended : unknown) & {\n extend: <\n const client extends Extended &\n ExactPartial>,\n >(\n fn: (\n client: Client,\n ) => client,\n ) => Client<\n transport,\n chain,\n account,\n rpcSchema,\n Prettify & (extended extends Extended ? extended : unknown)\n >\n }\n\ntype Client_Base<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = {\n /** The Account of the Client. */\n account: account\n /** Flags for batch settings. */\n batch?: ClientConfig['batch'] | undefined\n /** Time (in ms) that cached data will remain in memory. */\n cacheTime: number\n /** [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. */\n ccipRead?: ClientConfig['ccipRead'] | undefined\n /** Chain for the client. */\n chain: chain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: EIP1193RequestFn<\n rpcSchema extends undefined ? EIP1474Methods : rpcSchema\n >\n /** The RPC transport */\n transport: ReturnType['config'] & ReturnType['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\ntype Extended = Prettify<\n // disallow redefining base properties\n { [_ in keyof Client_Base]?: undefined } & {\n [key: string]: unknown\n }\n>\n\nexport type MulticallBatchOptions = {\n /** The maximum size (in bytes) for each calldata chunk. @default 1_024 */\n batchSize?: number | undefined\n /** The maximum number of milliseconds to wait before sending a batch. @default 0 */\n wait?: number | undefined\n}\n\nexport type CreateClientErrorType = ParseAccountErrorType | ErrorType\n\nexport function createClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n>(\n parameters: ClientConfig,\n): Prettify<\n Client<\n transport,\n chain,\n accountOrAddress extends Address\n ? Prettify>\n : accountOrAddress,\n rpcSchema\n >\n>\n\nexport function createClient(parameters: ClientConfig): Client {\n const {\n batch,\n cacheTime = parameters.pollingInterval ?? 4_000,\n ccipRead,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n type = 'base',\n } = parameters\n\n const chain = parameters.chain\n const account = parameters.account\n ? parseAccount(parameters.account)\n : undefined\n const { config, request, value } = parameters.transport({\n chain,\n pollingInterval,\n })\n const transport = { ...config, ...value }\n\n const client = {\n account,\n batch,\n cacheTime,\n ccipRead,\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport,\n type,\n uid: uid(),\n }\n\n function extend(base: typeof client) {\n type ExtendFn = (base: typeof client) => unknown\n return (extendFn: ExtendFn) => {\n const extended = extendFn(base) as Extended\n for (const key in client) delete extended[key]\n const combined = { ...base, ...extended }\n return Object.assign(combined, { extend: extend(combined as any) })\n }\n }\n\n return Object.assign(client, { extend: extend(client) as any })\n}\n\n/**\n * Defines a typed JSON-RPC schema for the client.\n * Note: This is a runtime noop function.\n */\nexport function rpcSchema(): rpcSchema {\n return null as any\n}\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","import type { Prettify } from '../types/utils.js'\nimport { BaseError } from './base.js'\nimport { RpcRequestError } from './request.js'\n\nconst unknownErrorCode = -1\n\nexport type RpcErrorCode =\n | -1\n | -32700 // Parse error\n | -32600 // Invalid request\n | -32601 // Method not found\n | -32602 // Invalid params\n | -32603 // Internal error\n | -32000 // Invalid input\n | -32001 // Resource not found\n | -32002 // Resource unavailable\n | -32003 // Transaction rejected\n | -32004 // Method not supported\n | -32005 // Limit exceeded\n | -32006 // JSON-RPC version not supported\n | -32042 // Method not found\n\ntype RpcErrorOptions = {\n code?: code | (number & {}) | undefined\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n shortMessage: string\n}\n\n/**\n * Error subclass implementing JSON RPC 2.0 errors and Ethereum RPC errors per EIP-1474.\n *\n * - EIP https://eips.ethereum.org/EIPS/eip-1474\n */\nexport type RpcErrorType = RpcError & { name: 'RpcError' }\nexport class RpcError extends BaseError {\n code: code_ | (number & {})\n\n constructor(\n cause: Error,\n {\n code,\n docsPath,\n metaMessages,\n name,\n shortMessage,\n }: RpcErrorOptions,\n ) {\n super(shortMessage, {\n cause,\n docsPath,\n metaMessages:\n metaMessages || (cause as { metaMessages?: string[] })?.metaMessages,\n name: name || 'RpcError',\n })\n this.name = name || cause.name\n this.code = (\n cause instanceof RpcRequestError ? cause.code : code ?? unknownErrorCode\n ) as code_\n }\n}\n\nexport type ProviderRpcErrorCode =\n | 4001 // User Rejected Request\n | 4100 // Unauthorized\n | 4200 // Unsupported Method\n | 4900 // Disconnected\n | 4901 // Chain Disconnected\n | 4902 // Chain Not Recognized\n\n/**\n * Error subclass implementing Ethereum Provider errors per EIP-1193.\n *\n * - EIP https://eips.ethereum.org/EIPS/eip-1193\n */\nexport type ProviderRpcErrorType = ProviderRpcError & {\n name: 'ProviderRpcError'\n}\nexport class ProviderRpcError<\n T = undefined,\n> extends RpcError {\n data?: T | undefined\n\n constructor(\n cause: Error,\n options: Prettify<\n RpcErrorOptions & {\n data?: T | undefined\n }\n >,\n ) {\n super(cause, options)\n\n this.data = options.data\n }\n}\n\n/**\n * Subclass for a \"Parse error\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ParseRpcErrorType = ParseRpcError & {\n code: -32700\n name: 'ParseRpcError'\n}\nexport class ParseRpcError extends RpcError {\n static code = -32700 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ParseRpcError.code,\n name: 'ParseRpcError',\n shortMessage:\n 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n })\n }\n}\n\n/**\n * Subclass for a \"Invalid request\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidRequestRpcErrorType = InvalidRequestRpcError & {\n code: -32600\n name: 'InvalidRequestRpcError'\n}\nexport class InvalidRequestRpcError extends RpcError {\n static code = -32600 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidRequestRpcError.code,\n name: 'InvalidRequestRpcError',\n shortMessage: 'JSON is not a valid request object.',\n })\n }\n}\n\n/**\n * Subclass for a \"Method not found\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type MethodNotFoundRpcErrorType = MethodNotFoundRpcError & {\n code: -32601\n name: 'MethodNotFoundRpcError'\n}\nexport class MethodNotFoundRpcError extends RpcError {\n static code = -32601 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: MethodNotFoundRpcError.code,\n name: 'MethodNotFoundRpcError',\n shortMessage: `The method${method ? ` \"${method}\"` : ''} does not exist / is not available.`,\n })\n }\n}\n\n/**\n * Subclass for an \"Invalid params\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidParamsRpcErrorType = InvalidParamsRpcError & {\n code: -32602\n name: 'InvalidParamsRpcError'\n}\nexport class InvalidParamsRpcError extends RpcError {\n static code = -32602 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidParamsRpcError.code,\n name: 'InvalidParamsRpcError',\n shortMessage: [\n 'Invalid parameters were provided to the RPC method.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n })\n }\n}\n\n/**\n * Subclass for an \"Internal error\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InternalRpcErrorType = InternalRpcError & {\n code: -32603\n name: 'InternalRpcError'\n}\nexport class InternalRpcError extends RpcError {\n static code = -32603 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InternalRpcError.code,\n name: 'InternalRpcError',\n shortMessage: 'An internal error was received.',\n })\n }\n}\n\n/**\n * Subclass for an \"Invalid input\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidInputRpcErrorType = InvalidInputRpcError & {\n code: -32000\n name: 'InvalidInputRpcError'\n}\nexport class InvalidInputRpcError extends RpcError {\n static code = -32000 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidInputRpcError.code,\n name: 'InvalidInputRpcError',\n shortMessage: [\n 'Missing or invalid parameters.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n })\n }\n}\n\n/**\n * Subclass for a \"Resource not found\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ResourceNotFoundRpcErrorType = ResourceNotFoundRpcError & {\n code: -32001\n name: 'ResourceNotFoundRpcError'\n}\nexport class ResourceNotFoundRpcError extends RpcError {\n override name = 'ResourceNotFoundRpcError'\n static code = -32001 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ResourceNotFoundRpcError.code,\n name: 'ResourceNotFoundRpcError',\n shortMessage: 'Requested resource not found.',\n })\n }\n}\n\n/**\n * Subclass for a \"Resource unavailable\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ResourceUnavailableRpcErrorType = ResourceUnavailableRpcError & {\n code: -32002\n name: 'ResourceUnavailableRpcError'\n}\nexport class ResourceUnavailableRpcError extends RpcError {\n static code = -32002 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ResourceUnavailableRpcError.code,\n name: 'ResourceUnavailableRpcError',\n shortMessage: 'Requested resource not available.',\n })\n }\n}\n\n/**\n * Subclass for a \"Transaction rejected\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type TransactionRejectedRpcErrorType = TransactionRejectedRpcError & {\n code: -32003\n name: 'TransactionRejectedRpcError'\n}\nexport class TransactionRejectedRpcError extends RpcError {\n static code = -32003 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: TransactionRejectedRpcError.code,\n name: 'TransactionRejectedRpcError',\n shortMessage: 'Transaction creation failed.',\n })\n }\n}\n\n/**\n * Subclass for a \"Method not supported\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type MethodNotSupportedRpcErrorType = MethodNotSupportedRpcError & {\n code: -32004\n name: 'MethodNotSupportedRpcError'\n}\nexport class MethodNotSupportedRpcError extends RpcError {\n static code = -32004 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: MethodNotSupportedRpcError.code,\n name: 'MethodNotSupportedRpcError',\n shortMessage: `Method${method ? ` \"${method}\"` : ''} is not implemented.`,\n })\n }\n}\n\n/**\n * Subclass for a \"Limit exceeded\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type LimitExceededRpcErrorType = LimitExceededRpcError & {\n code: -32005\n name: 'LimitExceededRpcError'\n}\nexport class LimitExceededRpcError extends RpcError {\n static code = -32005 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: LimitExceededRpcError.code,\n name: 'LimitExceededRpcError',\n shortMessage: 'Request exceeds defined limit.',\n })\n }\n}\n\n/**\n * Subclass for a \"JSON-RPC version not supported\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type JsonRpcVersionUnsupportedErrorType =\n JsonRpcVersionUnsupportedError & {\n code: -32006\n name: 'JsonRpcVersionUnsupportedError'\n }\nexport class JsonRpcVersionUnsupportedError extends RpcError {\n static code = -32006 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: JsonRpcVersionUnsupportedError.code,\n name: 'JsonRpcVersionUnsupportedError',\n shortMessage: 'Version of JSON-RPC protocol is not supported.',\n })\n }\n}\n\n/**\n * Subclass for a \"User Rejected Request\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UserRejectedRequestErrorType = UserRejectedRequestError & {\n code: 4001\n name: 'UserRejectedRequestError'\n}\nexport class UserRejectedRequestError extends ProviderRpcError {\n static code = 4001 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: UserRejectedRequestError.code,\n name: 'UserRejectedRequestError',\n shortMessage: 'User rejected the request.',\n })\n }\n}\n\n/**\n * Subclass for an \"Unauthorized\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UnauthorizedProviderErrorType = UnauthorizedProviderError & {\n code: 4100\n name: 'UnauthorizedProviderError'\n}\nexport class UnauthorizedProviderError extends ProviderRpcError {\n static code = 4100 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: UnauthorizedProviderError.code,\n name: 'UnauthorizedProviderError',\n shortMessage:\n 'The requested method and/or account has not been authorized by the user.',\n })\n }\n}\n\n/**\n * Subclass for an \"Unsupported Method\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UnsupportedProviderMethodErrorType =\n UnsupportedProviderMethodError & {\n code: 4200\n name: 'UnsupportedProviderMethodError'\n }\nexport class UnsupportedProviderMethodError extends ProviderRpcError {\n static code = 4200 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: UnsupportedProviderMethodError.code,\n name: 'UnsupportedProviderMethodError',\n shortMessage: `The Provider does not support the requested method${method ? ` \" ${method}\"` : ''}.`,\n })\n }\n}\n\n/**\n * Subclass for an \"Disconnected\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type ProviderDisconnectedErrorType = ProviderDisconnectedError & {\n code: 4900\n name: 'ProviderDisconnectedError'\n}\nexport class ProviderDisconnectedError extends ProviderRpcError {\n static code = 4900 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ProviderDisconnectedError.code,\n name: 'ProviderDisconnectedError',\n shortMessage: 'The Provider is disconnected from all chains.',\n })\n }\n}\n\n/**\n * Subclass for an \"Chain Disconnected\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type ChainDisconnectedErrorType = ChainDisconnectedError & {\n code: 4901\n name: 'ChainDisconnectedError'\n}\nexport class ChainDisconnectedError extends ProviderRpcError {\n static code = 4901 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ChainDisconnectedError.code,\n name: 'ChainDisconnectedError',\n shortMessage: 'The Provider is not connected to the requested chain.',\n })\n }\n}\n\n/**\n * Subclass for an \"Switch Chain\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type SwitchChainErrorType = SwitchChainError & {\n code: 4902\n name: 'SwitchChainError'\n}\nexport class SwitchChainError extends ProviderRpcError {\n static code = 4902 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: SwitchChainError.code,\n name: 'SwitchChainError',\n shortMessage: 'An error occurred when attempting to switch chain.',\n })\n }\n}\n\n/**\n * Subclass for an unknown RPC error.\n */\nexport type UnknownRpcErrorType = UnknownRpcError & {\n name: 'UnknownRpcError'\n}\nexport class UnknownRpcError extends RpcError {\n constructor(cause: Error) {\n super(cause, {\n name: 'UnknownRpcError',\n shortMessage: 'An unknown RPC error occurred.',\n })\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\nexport type WithTimeoutErrorType = ErrorType\n\nexport function withTimeout(\n fn: ({\n signal,\n }: { signal: AbortController['signal'] | null }) => Promise,\n {\n errorInstance = new Error('timed out'),\n timeout,\n signal,\n }: {\n // The error instance to throw when the timeout is reached.\n errorInstance?: Error | undefined\n // The timeout (in ms).\n timeout: number\n // Whether or not the timeout should use an abort signal.\n signal?: boolean | undefined\n },\n): Promise {\n return new Promise((resolve, reject) => {\n ;(async () => {\n let timeoutId!: NodeJS.Timeout\n try {\n const controller = new AbortController()\n if (timeout > 0) {\n timeoutId = setTimeout(() => {\n if (signal) {\n controller.abort()\n } else {\n reject(errorInstance)\n }\n }, timeout) as NodeJS.Timeout // need to cast because bun globals.d.ts overrides @types/node\n }\n resolve(await fn({ signal: controller?.signal || null }))\n } catch (err) {\n if ((err as Error)?.name === 'AbortError') reject(errorInstance)\n reject(err)\n } finally {\n clearTimeout(timeoutId)\n }\n })()\n })\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport { wait } from '../wait.js'\n\nexport type WithRetryParameters = {\n // The delay (in ms) between retries.\n delay?:\n | ((config: { count: number; error: Error }) => number)\n | number\n | undefined\n // The max number of times to retry.\n retryCount?: number | undefined\n // Whether or not to retry when an error is thrown.\n shouldRetry?:\n | (({\n count,\n error,\n }: {\n count: number\n error: Error\n }) => Promise | boolean)\n | undefined\n}\n\nexport type WithRetryErrorType = ErrorType\n\nexport function withRetry(\n fn: () => Promise,\n {\n delay: delay_ = 100,\n retryCount = 2,\n shouldRetry = () => true,\n }: WithRetryParameters = {},\n) {\n return new Promise((resolve, reject) => {\n const attemptRetry = async ({ count = 0 } = {}) => {\n const retry = async ({ error }: { error: Error }) => {\n const delay =\n typeof delay_ === 'function' ? delay_({ count, error }) : delay_\n if (delay) await wait(delay)\n attemptRetry({ count: count + 1 })\n }\n\n try {\n const data = await fn()\n resolve(data)\n } catch (err) {\n if (\n count < retryCount &&\n (await shouldRetry({ count, error: err as Error }))\n )\n return retry({ error: err as Error })\n reject(err)\n }\n }\n attemptRetry()\n })\n}\n","export async function wait(time: number) {\n return new Promise((res) => setTimeout(res, time))\n}\n","import type { Connector } from '../createConfig.js'\nimport { BaseError } from './base.js'\n\nexport type ProviderNotFoundErrorType = ProviderNotFoundError & {\n name: 'ProviderNotFoundError'\n}\nexport class ProviderNotFoundError extends BaseError {\n override name = 'ProviderNotFoundError'\n constructor() {\n super('Provider not found.')\n }\n}\n\nexport type SwitchChainNotSupportedErrorType = SwitchChainNotSupportedError & {\n name: 'SwitchChainNotSupportedError'\n}\nexport class SwitchChainNotSupportedError extends BaseError {\n override name = 'SwitchChainNotSupportedError'\n\n constructor({ connector }: { connector: Connector }) {\n super(`\"${connector.name}\" does not support programmatic chain switching.`)\n }\n}\n","import {\n type AddEthereumChainParameter,\n type Address,\n type EIP1193Provider,\n type ProviderConnectInfo,\n type ProviderRpcError,\n ResourceUnavailableRpcError,\n type RpcError,\n SwitchChainError,\n UserRejectedRequestError,\n getAddress,\n numberToHex,\n withRetry,\n withTimeout,\n} from 'viem'\n\nimport type { Connector } from '../createConfig.js'\nimport { ChainNotConfiguredError } from '../errors/config.js'\nimport { ProviderNotFoundError } from '../errors/connector.js'\nimport type { Compute } from '../types/utils.js'\nimport { createConnector } from './createConnector.js'\n\nexport type InjectedParameters = {\n /**\n * Some injected providers do not support programmatic disconnect.\n * This flag simulates the disconnect behavior by keeping track of connection status in storage.\n * @default true\n */\n shimDisconnect?: boolean | undefined\n /**\n * [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) Ethereum Provider to target\n */\n target?: TargetId | Target | (() => Target | undefined) | undefined\n unstable_shimAsyncInject?: boolean | number | undefined\n}\n\n// Regex of wallets/providers that can accurately simulate contract calls & display contract revert reasons.\nconst supportsSimulationIdRegex = /(rabby|trustwallet)/\n\ninjected.type = 'injected' as const\nexport function injected(parameters: InjectedParameters = {}) {\n const { shimDisconnect = true, unstable_shimAsyncInject } = parameters\n\n function getTarget(): Compute {\n const target = parameters.target\n if (typeof target === 'function') {\n const result = target()\n if (result) return result\n }\n\n if (typeof target === 'object') return target\n\n if (typeof target === 'string')\n return {\n ...(targetMap[target as keyof typeof targetMap] ?? {\n id: target,\n name: `${target[0]!.toUpperCase()}${target.slice(1)}`,\n provider: `is${target[0]!.toUpperCase()}${target.slice(1)}`,\n }),\n }\n\n return {\n id: 'injected',\n name: 'Injected',\n provider(window) {\n return window?.ethereum\n },\n }\n }\n\n type Provider = WalletProvider | undefined\n type Properties = {\n onConnect(connectInfo: ProviderConnectInfo): void\n }\n type StorageItem = {\n [_ in 'injected.connected' | `${string}.disconnected`]: true\n }\n\n let accountsChanged: Connector['onAccountsChanged'] | undefined\n let chainChanged: Connector['onChainChanged'] | undefined\n let connect: Connector['onConnect'] | undefined\n let disconnect: Connector['onDisconnect'] | undefined\n\n return createConnector((config) => ({\n get icon() {\n return getTarget().icon\n },\n get id() {\n return getTarget().id\n },\n get name() {\n return getTarget().name\n },\n get supportsSimulation() {\n return supportsSimulationIdRegex.test(this.id.toLowerCase())\n },\n type: injected.type,\n async setup() {\n const provider = await this.getProvider()\n // Only start listening for events if `target` is set, otherwise `injected()` will also receive events\n if (provider?.on && parameters.target) {\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n\n // We shouldn't need to listen for `'accountsChanged'` here since the `'connect'` event should suffice (and wallet shouldn't be connected yet).\n // Some wallets, like MetaMask, do not implement the `'connect'` event and overload `'accountsChanged'` instead.\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n }\n },\n async connect({ chainId, isReconnecting } = {}) {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n let accounts: readonly Address[] = []\n if (isReconnecting) accounts = await this.getAccounts().catch(() => [])\n else if (shimDisconnect) {\n // Attempt to show another prompt for selecting account if `shimDisconnect` flag is enabled\n try {\n const permissions = await provider.request({\n method: 'wallet_requestPermissions',\n params: [{ eth_accounts: {} }],\n })\n accounts = (permissions[0]?.caveats?.[0]?.value as string[])?.map(\n (x) => getAddress(x),\n )\n // `'wallet_requestPermissions'` can return a different order of accounts than `'eth_accounts'`\n // switch to `'eth_accounts'` ordering if more than one account is connected\n // https://github.com/wevm/wagmi/issues/4140\n if (accounts.length > 0) {\n const sortedAccounts = await this.getAccounts()\n accounts = sortedAccounts\n }\n } catch (err) {\n const error = err as RpcError\n // Not all injected providers support `wallet_requestPermissions` (e.g. MetaMask iOS).\n // Only bubble up error if user rejects request\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error)\n // Or prompt is already open\n if (error.code === ResourceUnavailableRpcError.code) throw error\n }\n }\n\n try {\n if (!accounts?.length && !isReconnecting) {\n const requestedAccounts = await provider.request({\n method: 'eth_requestAccounts',\n })\n accounts = requestedAccounts.map((x) => getAddress(x))\n }\n\n // Manage EIP-1193 event listeners\n // https://eips.ethereum.org/EIPS/eip-1193#events\n if (connect) {\n provider.removeListener('connect', connect)\n connect = undefined\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n provider.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n provider.on('disconnect', disconnect)\n }\n\n // Switch to chain if provided\n let currentChainId = await this.getChainId()\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain!({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code) throw error\n return { id: currentChainId }\n })\n currentChainId = chain?.id ?? currentChainId\n }\n\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem(`${this.id}.disconnected`)\n\n // Add connected shim if no target exists\n if (!parameters.target)\n await config.storage?.setItem('injected.connected', true)\n\n return { accounts, chainId: currentChainId }\n } catch (err) {\n const error = err as RpcError\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error)\n if (error.code === ResourceUnavailableRpcError.code)\n throw new ResourceUnavailableRpcError(error)\n throw error\n }\n },\n async disconnect() {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n\n // Experimental support for MetaMask disconnect\n // https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-2.md\n try {\n // Adding timeout as not all wallets support this method and can hang\n // https://github.com/wevm/wagmi/issues/4064\n await withTimeout(\n () =>\n // TODO: Remove explicit type for viem@3\n provider.request<{\n Method: 'wallet_revokePermissions'\n Parameters: [permissions: { eth_accounts: Record }]\n ReturnType: null\n }>({\n // `'wallet_revokePermissions'` added in `viem@2.10.3`\n method: 'wallet_revokePermissions',\n params: [{ eth_accounts: {} }],\n }),\n { timeout: 100 },\n )\n } catch {}\n\n // Add shim signalling connector is disconnected\n if (shimDisconnect) {\n await config.storage?.setItem(`${this.id}.disconnected`, true)\n }\n\n if (!parameters.target)\n await config.storage?.removeItem('injected.connected')\n },\n async getAccounts() {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n const accounts = await provider.request({ method: 'eth_accounts' })\n return accounts.map((x) => getAddress(x))\n },\n async getChainId() {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n const hexChainId = await provider.request({ method: 'eth_chainId' })\n return Number(hexChainId)\n },\n async getProvider() {\n if (typeof window === 'undefined') return undefined\n\n let provider: Provider\n const target = getTarget()\n if (typeof target.provider === 'function')\n provider = target.provider(window as Window | undefined)\n else if (typeof target.provider === 'string')\n provider = findProvider(window, target.provider)\n else provider = target.provider\n\n // Some wallets do not conform to EIP-1193 (e.g. Trust Wallet)\n // https://github.com/wevm/wagmi/issues/3526#issuecomment-1912683002\n if (provider && !provider.removeListener) {\n // Try using `off` handler if it exists, otherwise noop\n if ('off' in provider && typeof provider.off === 'function')\n provider.removeListener =\n provider.off as typeof provider.removeListener\n else provider.removeListener = () => {}\n }\n\n return provider\n },\n async isAuthorized() {\n try {\n const isDisconnected =\n shimDisconnect &&\n // If shim exists in storage, connector is disconnected\n (await config.storage?.getItem(`${this.id}.disconnected`))\n if (isDisconnected) return false\n\n // Don't allow injected connector to connect if no target is set and it hasn't already connected\n // (e.g. flag in storage is not set). This prevents a targetless injected connector from connecting\n // automatically whenever there is a targeted connector configured.\n if (!parameters.target) {\n const connected = await config.storage?.getItem('injected.connected')\n if (!connected) return false\n }\n\n const provider = await this.getProvider()\n if (!provider) {\n if (\n unstable_shimAsyncInject !== undefined &&\n unstable_shimAsyncInject !== false\n ) {\n // If no provider is found, check for async injection\n // https://github.com/wevm/references/issues/167\n // https://github.com/MetaMask/detect-provider\n const handleEthereum = async () => {\n if (typeof window !== 'undefined')\n window.removeEventListener(\n 'ethereum#initialized',\n handleEthereum,\n )\n const provider = await this.getProvider()\n return !!provider\n }\n const timeout =\n typeof unstable_shimAsyncInject === 'number'\n ? unstable_shimAsyncInject\n : 1_000\n const res = await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise((resolve) =>\n window.addEventListener(\n 'ethereum#initialized',\n () => resolve(handleEthereum()),\n { once: true },\n ),\n ),\n ]\n : []),\n new Promise((resolve) =>\n setTimeout(() => resolve(handleEthereum()), timeout),\n ),\n ])\n if (res) return true\n }\n\n throw new ProviderNotFoundError()\n }\n\n // Use retry strategy as some injected wallets (e.g. MetaMask) fail to\n // immediately resolve JSON-RPC requests on page load.\n const accounts = await withRetry(() => this.getAccounts())\n return !!accounts.length\n } catch {\n return false\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n const chain = config.chains.find((x) => x.id === chainId)\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())\n\n try {\n await Promise.all([\n provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n })\n // During `'wallet_switchEthereumChain'`, MetaMask makes a `'net_version'` RPC call to the target chain.\n // If this request fails, MetaMask does not emit the `'chainChanged'` event, but will still switch the chain.\n // To counter this behavior, we request and emit the current chain ID to confirm the chain switch either via\n // this callback or an externally emitted `'chainChanged'` event.\n // https://github.com/MetaMask/metamask-extension/issues/24247\n .then(async () => {\n const currentChainId = await this.getChainId()\n if (currentChainId === chainId)\n config.emitter.emit('change', { chainId })\n }),\n new Promise((resolve) => {\n const listener = ((data) => {\n if ('chainId' in data && data.chainId === chainId) {\n config.emitter.off('change', listener)\n resolve()\n }\n }) satisfies Parameters[1]\n config.emitter.on('change', listener)\n }),\n ])\n return chain\n } catch (err) {\n const error = err as RpcError\n\n // Indicates chain is not added to provider\n if (\n error.code === 4902 ||\n // Unwrapping for MetaMask Mobile\n // https://github.com/MetaMask/metamask-mobile/issues/2944#issuecomment-976988719\n (error as ProviderRpcError<{ originalError?: { code: number } }>)\n ?.data?.originalError?.code === 4902\n ) {\n try {\n const { default: blockExplorer, ...blockExplorers } =\n chain.blockExplorers ?? {}\n let blockExplorerUrls: string[] | undefined\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls\n else if (blockExplorer)\n blockExplorerUrls = [\n blockExplorer.url,\n ...Object.values(blockExplorers).map((x) => x.url),\n ]\n\n let rpcUrls: readonly string[]\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls\n else rpcUrls = [chain.rpcUrls.default?.http[0] ?? '']\n\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency:\n addEthereumChainParameter?.nativeCurrency ??\n chain.nativeCurrency,\n rpcUrls,\n } satisfies AddEthereumChainParameter\n\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n })\n\n const currentChainId = await this.getChainId()\n if (currentChainId !== chainId)\n throw new UserRejectedRequestError(\n new Error('User rejected switch after adding network.'),\n )\n\n return chain\n } catch (error) {\n throw new UserRejectedRequestError(error as Error)\n }\n }\n\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error)\n throw new SwitchChainError(error)\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0) this.onDisconnect()\n // Connect if emitter is listening for connect event (e.g. is disconnected and connects through wallet interface)\n else if (config.emitter.listenerCount('connect')) {\n const chainId = (await this.getChainId()).toString()\n this.onConnect({ chainId })\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem(`${this.id}.disconnected`)\n }\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n })\n },\n onChainChanged(chain) {\n const chainId = Number(chain)\n config.emitter.emit('change', { chainId })\n },\n async onConnect(connectInfo) {\n const accounts = await this.getAccounts()\n if (accounts.length === 0) return\n\n const chainId = Number(connectInfo.chainId)\n config.emitter.emit('connect', { accounts, chainId })\n\n // Manage EIP-1193 event listeners\n const provider = await this.getProvider()\n if (provider) {\n if (connect) {\n provider.removeListener('connect', connect)\n connect = undefined\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n provider.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n provider.on('disconnect', disconnect)\n }\n }\n },\n async onDisconnect(error) {\n const provider = await this.getProvider()\n\n // If MetaMask emits a `code: 1013` error, wait for reconnection before disconnecting\n // https://github.com/MetaMask/providers/pull/120\n if (error && (error as RpcError<1013>).code === 1013) {\n if (provider && !!(await this.getAccounts()).length) return\n }\n\n // No need to remove `${this.id}.disconnected` from storage because `onDisconnect` is typically\n // only called when the wallet is disconnected through the wallet's interface, meaning the wallet\n // actually disconnected and we don't need to simulate it.\n config.emitter.emit('disconnect')\n\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n }\n },\n }))\n}\n\nconst targetMap = {\n coinbaseWallet: {\n id: 'coinbaseWallet',\n name: 'Coinbase Wallet',\n provider(window) {\n if (window?.coinbaseWalletExtension) return window.coinbaseWalletExtension\n return findProvider(window, 'isCoinbaseWallet')\n },\n },\n metaMask: {\n id: 'metaMask',\n name: 'MetaMask',\n provider(window) {\n return findProvider(window, (provider) => {\n if (!provider.isMetaMask) return false\n // Brave tries to make itself look like MetaMask\n // Could also try RPC `web3_clientVersion` if following is unreliable\n if (provider.isBraveWallet && !provider._events && !provider._state)\n return false\n // Other wallets that try to look like MetaMask\n const flags = [\n 'isApexWallet',\n 'isAvalanche',\n 'isBitKeep',\n 'isBlockWallet',\n 'isKuCoinWallet',\n 'isMathWallet',\n 'isOkxWallet',\n 'isOKExWallet',\n 'isOneInchIOSWallet',\n 'isOneInchAndroidWallet',\n 'isOpera',\n 'isPortal',\n 'isRabby',\n 'isTokenPocket',\n 'isTokenary',\n 'isUniswapWallet',\n 'isZerion',\n ] satisfies WalletProviderFlags[]\n for (const flag of flags) if (provider[flag]) return false\n return true\n })\n },\n },\n phantom: {\n id: 'phantom',\n name: 'Phantom',\n provider(window) {\n if (window?.phantom?.ethereum) return window.phantom?.ethereum\n return findProvider(window, 'isPhantom')\n },\n },\n} as const satisfies TargetMap\n\ntype TargetMap = { [_ in TargetId]?: Target | undefined }\n\ntype Target = {\n icon?: string | undefined\n id: string\n name: string\n provider:\n | WalletProviderFlags\n | WalletProvider\n | ((window?: Window | undefined) => WalletProvider | undefined)\n}\n\n/** @deprecated */\ntype TargetId = Compute extends `is${infer name}`\n ? name extends `${infer char}${infer rest}`\n ? `${Lowercase}${rest}`\n : never\n : never\n\n/**\n * @deprecated As of 2024/10/16, we are no longer accepting new provider flags as EIP-6963 should be used instead.\n */\ntype WalletProviderFlags =\n | 'isApexWallet'\n | 'isAvalanche'\n | 'isBackpack'\n | 'isBifrost'\n | 'isBitKeep'\n | 'isBitski'\n | 'isBlockWallet'\n | 'isBraveWallet'\n | 'isCoinbaseWallet'\n | 'isDawn'\n | 'isEnkrypt'\n | 'isExodus'\n | 'isFrame'\n | 'isFrontier'\n | 'isGamestop'\n | 'isHyperPay'\n | 'isImToken'\n | 'isKuCoinWallet'\n | 'isMathWallet'\n | 'isMetaMask'\n | 'isOkxWallet'\n | 'isOKExWallet'\n | 'isOneInchAndroidWallet'\n | 'isOneInchIOSWallet'\n | 'isOpera'\n | 'isPhantom'\n | 'isPortal'\n | 'isRabby'\n | 'isRainbow'\n | 'isStatus'\n | 'isTally'\n | 'isTokenPocket'\n | 'isTokenary'\n | 'isTrust'\n | 'isTrustWallet'\n | 'isUniswapWallet'\n | 'isXDEFI'\n | 'isZerion'\n\ntype WalletProvider = Compute<\n EIP1193Provider & {\n [key in WalletProviderFlags]?: true | undefined\n } & {\n providers?: WalletProvider[] | undefined\n /** Only exists in MetaMask as of 2022/04/03 */\n _events?: { connect?: (() => void) | undefined } | undefined\n /** Only exists in MetaMask as of 2022/04/03 */\n _state?:\n | {\n accounts?: string[]\n initialized?: boolean\n isConnected?: boolean\n isPermanentlyDisconnected?: boolean\n isUnlocked?: boolean\n }\n | undefined\n }\n>\n\ntype Window = {\n coinbaseWalletExtension?: WalletProvider | undefined\n ethereum?: WalletProvider | undefined\n phantom?: { ethereum: WalletProvider } | undefined\n}\n\nfunction findProvider(\n window: globalThis.Window | Window | undefined,\n select?: WalletProviderFlags | ((provider: WalletProvider) => boolean),\n) {\n function isProvider(provider: WalletProvider) {\n if (typeof select === 'function') return select(provider)\n if (typeof select === 'string') return provider[select]\n return true\n }\n\n const ethereum = (window as Window).ethereum\n if (ethereum?.providers)\n return ethereum.providers.find((provider) => isProvider(provider))\n if (ethereum && isProvider(ethereum)) return ethereum\n return undefined\n}\n","import { EventEmitter } from 'eventemitter3'\n\ntype EventMap = Record\ntype EventKey = string & keyof eventMap\ntype EventFn = (\n ...parameters: parameters\n) => void\nexport type EventData<\n eventMap extends EventMap,\n eventName extends keyof eventMap,\n> = (eventMap[eventName] extends [never] ? unknown : eventMap[eventName]) & {\n uid: string\n}\n\nexport class Emitter {\n _emitter = new EventEmitter()\n\n constructor(public uid: string) {}\n\n on>(\n eventName: key,\n fn: EventFn<\n eventMap[key] extends [never]\n ? [{ uid: string }]\n : [data: eventMap[key] & { uid: string }]\n >,\n ) {\n this._emitter.on(eventName, fn as EventFn)\n }\n\n once>(\n eventName: key,\n fn: EventFn<\n eventMap[key] extends [never]\n ? [{ uid: string }]\n : [data: eventMap[key] & { uid: string }]\n >,\n ) {\n this._emitter.once(eventName, fn as EventFn)\n }\n\n off>(\n eventName: key,\n fn: EventFn<\n eventMap[key] extends [never]\n ? [{ uid: string }]\n : [data: eventMap[key] & { uid: string }]\n >,\n ) {\n this._emitter.off(eventName, fn as EventFn)\n }\n\n emit>(\n eventName: key,\n ...params: eventMap[key] extends [never] ? [] : [data: eventMap[key]]\n ) {\n const data = params[0]\n this._emitter.emit(eventName, { uid: this.uid, ...data })\n }\n\n listenerCount>(eventName: key) {\n return this._emitter.listenerCount(eventName)\n }\n}\n\nexport function createEmitter(uid: string) {\n return new Emitter(uid)\n}\n","type Reviver = (key: string, value: any) => any\n\nexport function deserialize(value: string, reviver?: Reviver): type {\n return JSON.parse(value, (key, value_) => {\n let value = value_\n if (value?.__type === 'bigint') value = BigInt(value.value)\n if (value?.__type === 'Map') value = new Map(value.value)\n return reviver?.(key, value) ?? value\n })\n}\n","/**\n * Get the reference key for the circular value\n *\n * @param keys the keys to build the reference key from\n * @param cutoff the maximum number of keys to include\n * @returns the reference key\n */\nfunction getReferenceKey(keys: string[], cutoff: number) {\n return keys.slice(0, cutoff).join('.') || '.'\n}\n\n/**\n * Faster `Array.prototype.indexOf` implementation build for slicing / splicing\n *\n * @param array the array to match the value in\n * @param value the value to match\n * @returns the matching index, or -1\n */\nfunction getCutoff(array: any[], value: any) {\n const { length } = array\n\n for (let index = 0; index < length; ++index) {\n if (array[index] === value) {\n return index + 1\n }\n }\n\n return 0\n}\n\ntype StandardReplacer = (key: string, value: any) => any\ntype CircularReplacer = (key: string, value: any, referenceKey: string) => any\n\n/**\n * Create a replacer method that handles circular values\n *\n * @param [replacer] a custom replacer to use for non-circular values\n * @param [circularReplacer] a custom replacer to use for circular methods\n * @returns the value to stringify\n */\nfunction createReplacer(\n replacer?: StandardReplacer | null | undefined,\n circularReplacer?: CircularReplacer | null | undefined,\n): StandardReplacer {\n const hasReplacer = typeof replacer === 'function'\n const hasCircularReplacer = typeof circularReplacer === 'function'\n\n const cache: any[] = []\n const keys: string[] = []\n\n return function replace(this: any, key: string, value: any) {\n if (typeof value === 'object') {\n if (cache.length) {\n const thisCutoff = getCutoff(cache, this)\n\n if (thisCutoff === 0) {\n cache[cache.length] = this\n } else {\n cache.splice(thisCutoff)\n keys.splice(thisCutoff)\n }\n\n keys[keys.length] = key\n\n const valueCutoff = getCutoff(cache, value)\n\n if (valueCutoff !== 0) {\n return hasCircularReplacer\n ? circularReplacer.call(\n this,\n key,\n value,\n getReferenceKey(keys, valueCutoff),\n )\n : `[ref=${getReferenceKey(keys, valueCutoff)}]`\n }\n } else {\n cache[0] = value\n keys[0] = key\n }\n }\n\n return hasReplacer ? replacer.call(this, key, value) : value\n }\n}\n\n/**\n * Stringifier that handles circular values\n *\n * Forked from https://github.com/planttheidea/fast-stringify\n *\n * @param value to stringify\n * @param [replacer] a custom replacer function for handling standard values\n * @param [indent] the number of spaces to indent the output by\n * @param [circularReplacer] a custom replacer function for handling circular values\n * @returns the stringified output\n */\nexport function serialize(\n value: any,\n replacer?: StandardReplacer | null | undefined,\n indent?: number | null | undefined,\n circularReplacer?: CircularReplacer | null | undefined,\n) {\n return JSON.stringify(\n value,\n createReplacer((key, value_) => {\n let value = value_\n if (typeof value === 'bigint')\n value = { __type: 'bigint', value: value_.toString() }\n if (value instanceof Map)\n value = { __type: 'Map', value: Array.from(value_.entries()) }\n return replacer?.(key, value) ?? value\n }, circularReplacer),\n indent ?? undefined,\n )\n}\n","import type { PartializedState } from './createConfig.js'\nimport type { Compute } from './types/utils.js'\nimport { deserialize as deserialize_ } from './utils/deserialize.js'\nimport { serialize as serialize_ } from './utils/serialize.js'\n\n// key-values for loose autocomplete and typing\nexport type StorageItemMap = {\n recentConnectorId: string\n state: PartializedState\n}\n\nexport type Storage<\n itemMap extends Record = Record,\n ///\n storageItemMap extends StorageItemMap = StorageItemMap & itemMap,\n> = {\n key: string\n getItem<\n key extends keyof storageItemMap,\n value extends storageItemMap[key],\n defaultValue extends value | null | undefined,\n >(\n key: key,\n defaultValue?: defaultValue | undefined,\n ):\n | (defaultValue extends null ? value | null : value)\n | Promise\n setItem<\n key extends keyof storageItemMap,\n value extends storageItemMap[key] | null,\n >(key: key, value: value): void | Promise\n removeItem(key: keyof storageItemMap): void | Promise\n}\n\nexport type BaseStorage = {\n getItem(\n key: string,\n ): string | null | undefined | Promise\n setItem(key: string, value: string): void | Promise\n removeItem(key: string): void | Promise\n}\n\nexport type CreateStorageParameters = {\n deserialize?: ((value: string) => type | unknown) | undefined\n key?: string | undefined\n serialize?: ((value: type | any) => string) | undefined\n storage?: Compute | undefined\n}\n\nexport function createStorage<\n itemMap extends Record = Record,\n storageItemMap extends StorageItemMap = StorageItemMap & itemMap,\n>(parameters: CreateStorageParameters): Compute> {\n const {\n deserialize = deserialize_,\n key: prefix = 'wagmi',\n serialize = serialize_,\n storage = noopStorage,\n } = parameters\n\n function unwrap(value: type): type | Promise {\n if (value instanceof Promise) return value.then((x) => x).catch(() => null)\n return value\n }\n\n return {\n ...storage,\n key: prefix,\n async getItem(key, defaultValue) {\n const value = storage.getItem(`${prefix}.${key as string}`)\n const unwrapped = await unwrap(value)\n if (unwrapped) return deserialize(unwrapped) ?? null\n return (defaultValue ?? null) as any\n },\n async setItem(key, value) {\n const storageKey = `${prefix}.${key as string}`\n if (value === null) await unwrap(storage.removeItem(storageKey))\n else await unwrap(storage.setItem(storageKey, serialize(value)))\n },\n async removeItem(key) {\n await unwrap(storage.removeItem(`${prefix}.${key as string}`))\n },\n }\n}\n\nexport const noopStorage = {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n} satisfies BaseStorage\n","const size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import {\n type EIP6963ProviderDetail,\n type Store as MipdStore,\n createStore as createMipd,\n} from 'mipd'\nimport {\n type Address,\n type Chain,\n type Client,\n type EIP1193RequestFn,\n createClient,\n type ClientConfig as viem_ClientConfig,\n type Transport as viem_Transport,\n} from 'viem'\nimport { persist, subscribeWithSelector } from 'zustand/middleware'\nimport { type Mutate, type StoreApi, createStore } from 'zustand/vanilla'\n\nimport type {\n ConnectorEventMap,\n CreateConnectorFn,\n} from './connectors/createConnector.js'\nimport { injected } from './connectors/injected.js'\nimport { type Emitter, type EventData, createEmitter } from './createEmitter.js'\nimport { type Storage, createStorage, noopStorage } from './createStorage.js'\nimport { ChainNotConfiguredError } from './errors/config.js'\nimport type {\n Compute,\n ExactPartial,\n LooseOmit,\n OneOf,\n RemoveUndefined,\n} from './types/utils.js'\nimport { uid } from './utils/uid.js'\nimport { version } from './version.js'\n\nexport type CreateConfigParameters<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n transports extends Record = Record<\n chains[number]['id'],\n Transport\n >,\n> = Compute<\n {\n chains: chains\n connectors?: CreateConnectorFn[] | undefined\n multiInjectedProviderDiscovery?: boolean | undefined\n storage?: Storage | null | undefined\n ssr?: boolean | undefined\n syncConnectedChain?: boolean | undefined\n } & OneOf<\n | ({ transports: transports } & {\n [key in keyof ClientConfig]?:\n | ClientConfig[key]\n | { [_ in chains[number]['id']]?: ClientConfig[key] | undefined }\n | undefined\n })\n | {\n client(parameters: { chain: chains[number] }): Client<\n transports[chains[number]['id']],\n chains[number]\n >\n }\n >\n>\n\nexport function createConfig<\n const chains extends readonly [Chain, ...Chain[]],\n transports extends Record,\n>(\n parameters: CreateConfigParameters,\n): Config {\n const {\n multiInjectedProviderDiscovery = true,\n storage = createStorage({\n storage:\n typeof window !== 'undefined' && window.localStorage\n ? window.localStorage\n : noopStorage,\n }),\n syncConnectedChain = true,\n ssr = false,\n ...rest\n } = parameters\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Set up connectors, clients, etc.\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n const mipd =\n typeof window !== 'undefined' && multiInjectedProviderDiscovery\n ? createMipd()\n : undefined\n\n const chains = createStore(() => rest.chains)\n const connectors = createStore(() => {\n const collection = []\n const rdnsSet = new Set()\n for (const connectorFns of rest.connectors ?? []) {\n const connector = setup(connectorFns)\n collection.push(connector)\n if (!ssr && connector.rdns) rdnsSet.add(connector.rdns)\n }\n if (!ssr && mipd) {\n const providers = mipd.getProviders()\n for (const provider of providers) {\n if (rdnsSet.has(provider.info.rdns)) continue\n collection.push(setup(providerDetailToConnector(provider)))\n }\n }\n return collection\n })\n function setup(connectorFn: CreateConnectorFn): Connector {\n // Set up emitter with uid and add to connector so they are \"linked\" together.\n const emitter = createEmitter(uid())\n const connector = {\n ...connectorFn({\n emitter,\n chains: chains.getState(),\n storage,\n transports: rest.transports,\n }),\n emitter,\n uid: emitter.uid,\n }\n\n // Start listening for `connect` events on connector setup\n // This allows connectors to \"connect\" themselves without user interaction (e.g. MetaMask's \"Manually connect to current site\")\n emitter.on('connect', connect)\n connector.setup?.()\n\n return connector\n }\n function providerDetailToConnector(providerDetail: EIP6963ProviderDetail) {\n const { info } = providerDetail\n const provider = providerDetail.provider as any\n return injected({ target: { ...info, id: info.rdns, provider } })\n }\n\n const clients = new Map>()\n function getClient(\n config: { chainId?: chainId | chains[number]['id'] | undefined } = {},\n ): Client> {\n const chainId = config.chainId ?? store.getState().chainId\n const chain = chains.getState().find((x) => x.id === chainId)\n\n // chainId specified and not configured\n if (config.chainId && !chain) throw new ChainNotConfiguredError()\n\n // If the target chain is not configured, use the client of the current chain.\n type Return = Client>\n {\n const client = clients.get(store.getState().chainId)\n if (client && !chain) return client as Return\n if (!chain) throw new ChainNotConfiguredError()\n }\n\n // If a memoized client exists for a chain id, use that.\n {\n const client = clients.get(chainId)\n if (client) return client as Return\n }\n\n let client: Client\n if (rest.client) client = rest.client({ chain })\n else {\n const chainId = chain.id as chains[number]['id']\n const chainIds = chains.getState().map((x) => x.id)\n // Grab all properties off `rest` and resolve for use in `createClient`\n const properties: Partial = {}\n const entries = Object.entries(rest) as [keyof typeof rest, any][]\n\n for (const [key, value] of entries) {\n if (\n key === 'chains' ||\n key === 'client' ||\n key === 'connectors' ||\n key === 'transports'\n )\n continue\n\n if (typeof value === 'object') {\n // check if value is chainId-specific since some values can be objects\n // e.g. { batch: { multicall: { batchSize: 1024 } } }\n if (chainId in value) properties[key] = value[chainId]\n else {\n // check if value is chainId-specific, but does not have value for current chainId\n const hasChainSpecificValue = chainIds.some((x) => x in value)\n if (hasChainSpecificValue) continue\n properties[key] = value\n }\n } else properties[key] = value\n }\n\n client = createClient({\n ...properties,\n chain,\n batch: properties.batch ?? { multicall: true },\n transport: (parameters) =>\n rest.transports[chainId]({ ...parameters, connectors }),\n })\n }\n\n clients.set(chainId, client)\n return client as Return\n }\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Create store\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n function getInitialState(): State {\n return {\n chainId: chains.getState()[0].id,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }\n }\n\n let currentVersion: number\n const prefix = '0.0.0-canary-'\n if (version.startsWith(prefix))\n currentVersion = Number.parseInt(version.replace(prefix, ''))\n // use package major version to version store\n else currentVersion = Number.parseInt(version.split('.')[0] ?? '0')\n\n const store = createStore(\n subscribeWithSelector(\n // only use persist middleware if storage exists\n storage\n ? persist(getInitialState, {\n migrate(persistedState, version) {\n if (version === currentVersion) return persistedState as State\n\n const initialState = getInitialState()\n const chainId = validatePersistedChainId(\n persistedState,\n initialState.chainId,\n )\n return { ...initialState, chainId }\n },\n name: 'store',\n partialize(state) {\n // Only persist \"critical\" store properties to preserve storage size.\n return {\n connections: {\n __type: 'Map',\n value: Array.from(state.connections.entries()).map(\n ([key, connection]) => {\n const { id, name, type, uid } = connection.connector\n const connector = { id, name, type, uid }\n return [key, { ...connection, connector }]\n },\n ),\n } as unknown as PartializedState['connections'],\n chainId: state.chainId,\n current: state.current,\n } satisfies PartializedState\n },\n merge(persistedState, currentState) {\n // `status` should not be persisted as it messes with reconnection\n if (\n typeof persistedState === 'object' &&\n persistedState &&\n 'status' in persistedState\n )\n delete persistedState.status\n // Make sure persisted `chainId` is valid\n const chainId = validatePersistedChainId(\n persistedState,\n currentState.chainId,\n )\n return {\n ...currentState,\n ...(persistedState as object),\n chainId,\n }\n },\n skipHydration: ssr,\n storage: storage as Storage>,\n version: currentVersion,\n })\n : getInitialState,\n ),\n )\n store.setState(getInitialState())\n\n function validatePersistedChainId(\n persistedState: unknown,\n defaultChainId: number,\n ) {\n return persistedState &&\n typeof persistedState === 'object' &&\n 'chainId' in persistedState &&\n typeof persistedState.chainId === 'number' &&\n chains.getState().some((x) => x.id === persistedState.chainId)\n ? persistedState.chainId\n : defaultChainId\n }\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Subscribe to changes\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n // Update default chain when connector chain changes\n if (syncConnectedChain)\n store.subscribe(\n ({ connections, current }) =>\n current ? connections.get(current)?.chainId : undefined,\n (chainId) => {\n // If chain is not configured, then don't switch over to it.\n const isChainConfigured = chains\n .getState()\n .some((x) => x.id === chainId)\n if (!isChainConfigured) return\n\n return store.setState((x) => ({\n ...x,\n chainId: chainId ?? x.chainId,\n }))\n },\n )\n\n // EIP-6963 subscribe for new wallet providers\n mipd?.subscribe((providerDetails) => {\n const connectorIdSet = new Set()\n const connectorRdnsSet = new Set()\n for (const connector of connectors.getState()) {\n connectorIdSet.add(connector.id)\n if (connector.rdns) connectorRdnsSet.add(connector.rdns)\n }\n\n const newConnectors: Connector[] = []\n for (const providerDetail of providerDetails) {\n if (connectorRdnsSet.has(providerDetail.info.rdns)) continue\n const connector = setup(providerDetailToConnector(providerDetail))\n if (connectorIdSet.has(connector.id)) continue\n newConnectors.push(connector)\n }\n\n if (storage && !store.persist.hasHydrated()) return\n connectors.setState((x) => [...x, ...newConnectors], true)\n })\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Emitter listeners\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n function change(data: EventData) {\n store.setState((x) => {\n const connection = x.connections.get(data.uid)\n if (!connection) return x\n return {\n ...x,\n connections: new Map(x.connections).set(data.uid, {\n accounts:\n (data.accounts as readonly [Address, ...Address[]]) ??\n connection.accounts,\n chainId: data.chainId ?? connection.chainId,\n connector: connection.connector,\n }),\n }\n })\n }\n function connect(data: EventData) {\n // Disable handling if reconnecting/connecting\n if (\n store.getState().status === 'connecting' ||\n store.getState().status === 'reconnecting'\n )\n return\n\n store.setState((x) => {\n const connector = connectors.getState().find((x) => x.uid === data.uid)\n if (!connector) return x\n\n if (connector.emitter.listenerCount('connect'))\n connector.emitter.off('connect', change)\n if (!connector.emitter.listenerCount('change'))\n connector.emitter.on('change', change)\n if (!connector.emitter.listenerCount('disconnect'))\n connector.emitter.on('disconnect', disconnect)\n\n return {\n ...x,\n connections: new Map(x.connections).set(data.uid, {\n accounts: data.accounts as readonly [Address, ...Address[]],\n chainId: data.chainId,\n connector: connector,\n }),\n current: data.uid,\n status: 'connected',\n }\n })\n }\n function disconnect(data: EventData) {\n store.setState((x) => {\n const connection = x.connections.get(data.uid)\n if (connection) {\n const connector = connection.connector\n if (connector.emitter.listenerCount('change'))\n connection.connector.emitter.off('change', change)\n if (connector.emitter.listenerCount('disconnect'))\n connection.connector.emitter.off('disconnect', disconnect)\n if (!connector.emitter.listenerCount('connect'))\n connection.connector.emitter.on('connect', connect)\n }\n\n x.connections.delete(data.uid)\n\n if (x.connections.size === 0)\n return {\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }\n\n const nextConnection = x.connections.values().next().value as Connection\n return {\n ...x,\n connections: new Map(x.connections),\n current: nextConnection.connector.uid,\n }\n })\n }\n\n return {\n get chains() {\n return chains.getState() as chains\n },\n get connectors() {\n return connectors.getState()\n },\n storage,\n\n getClient,\n get state() {\n return store.getState() as unknown as State\n },\n setState(value) {\n let newState: State\n if (typeof value === 'function') newState = value(store.getState() as any)\n else newState = value\n\n // Reset state if it got set to something not matching the base state\n const initialState = getInitialState()\n if (typeof newState !== 'object') newState = initialState\n const isCorrupt = Object.keys(initialState).some((x) => !(x in newState))\n if (isCorrupt) newState = initialState\n\n store.setState(newState, true)\n },\n subscribe(selector, listener, options) {\n return store.subscribe(\n selector as unknown as (state: State) => any,\n listener,\n options\n ? ({\n ...options,\n fireImmediately: options.emitImmediately,\n // Workaround cast since Zustand does not support `'exactOptionalPropertyTypes'`\n } as RemoveUndefined)\n : undefined,\n )\n },\n\n _internal: {\n mipd,\n store,\n ssr: Boolean(ssr),\n syncConnectedChain,\n transports: rest.transports as transports,\n chains: {\n setState(value) {\n const nextChains = (\n typeof value === 'function' ? value(chains.getState()) : value\n ) as chains\n if (nextChains.length === 0) return\n return chains.setState(nextChains, true)\n },\n subscribe(listener) {\n return chains.subscribe(listener)\n },\n },\n connectors: {\n providerDetailToConnector,\n setup,\n setState(value) {\n return connectors.setState(\n typeof value === 'function' ? value(connectors.getState()) : value,\n true,\n )\n },\n subscribe(listener) {\n return connectors.subscribe(listener)\n },\n },\n events: { change, connect, disconnect },\n },\n }\n}\n\n/////////////////////////////////////////////////////////////////////////////////////////////////\n// Types\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport type Config<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n transports extends Record = Record<\n chains[number]['id'],\n Transport\n >,\n> = {\n readonly chains: chains\n readonly connectors: readonly Connector[]\n readonly storage: Storage | null\n\n readonly state: State\n setState(\n value: State | ((state: State) => State),\n ): void\n subscribe(\n selector: (state: State) => state,\n listener: (state: state, previousState: state) => void,\n options?:\n | {\n emitImmediately?: boolean | undefined\n equalityFn?: ((a: state, b: state) => boolean) | undefined\n }\n | undefined,\n ): () => void\n\n getClient(parameters?: {\n chainId?: chainId | chains[number]['id'] | undefined\n }): Client>\n\n /**\n * Not part of versioned API, proceed with caution.\n * @internal\n */\n _internal: Internal\n}\n\ntype Internal<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n transports extends Record = Record<\n chains[number]['id'],\n Transport\n >,\n> = {\n readonly mipd: MipdStore | undefined\n readonly store: Mutate, [['zustand/persist', any]]>\n readonly ssr: boolean\n readonly syncConnectedChain: boolean\n readonly transports: transports\n\n chains: {\n setState(\n value:\n | readonly [Chain, ...Chain[]]\n | ((\n state: readonly [Chain, ...Chain[]],\n ) => readonly [Chain, ...Chain[]]),\n ): void\n subscribe(\n listener: (\n state: readonly [Chain, ...Chain[]],\n prevState: readonly [Chain, ...Chain[]],\n ) => void,\n ): () => void\n }\n connectors: {\n providerDetailToConnector(\n providerDetail: EIP6963ProviderDetail,\n ): CreateConnectorFn\n setup(connectorFn: CreateConnectorFn): Connector\n setState(value: Connector[] | ((state: Connector[]) => Connector[])): void\n subscribe(\n listener: (state: Connector[], prevState: Connector[]) => void,\n ): () => void\n }\n events: {\n change(data: EventData): void\n connect(data: EventData): void\n disconnect(data: EventData): void\n }\n}\n\nexport type State<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n> = {\n chainId: chains[number]['id']\n connections: Map\n current: string | null\n status: 'connected' | 'connecting' | 'disconnected' | 'reconnecting'\n}\n\nexport type PartializedState = Compute<\n ExactPartial>\n>\n\nexport type Connection = {\n accounts: readonly [Address, ...Address[]]\n chainId: number\n connector: Connector\n}\n\nexport type Connector = ReturnType & {\n emitter: Emitter\n uid: string\n}\n\nexport type Transport<\n type extends string = string,\n rpcAttributes = Record,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = (\n params: Parameters<\n viem_Transport\n >[0] & {\n connectors?: StoreApi | undefined\n },\n) => ReturnType>\n\ntype ClientConfig = LooseOmit<\n viem_ClientConfig,\n 'account' | 'chain' | 'key' | 'name' | 'transport' | 'type'\n>\n","import { BaseError } from './base.js'\n\nexport type UrlRequiredErrorType = UrlRequiredError & {\n name: 'UrlRequiredError'\n}\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super(\n 'No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.',\n {\n docsPath: '/docs/clients/intro',\n name: 'UrlRequiredError',\n },\n )\n }\n}\n","function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++\n },\n reset() {\n this.current = 0\n },\n }\n}\n\nexport const idCache = /*#__PURE__*/ createIdStore()\n","import { LruMap } from '../lru.js'\n\n/** @internal */\nexport const promiseCache = /*#__PURE__*/ new LruMap>(8192)\n\ntype WithDedupeOptions = {\n enabled?: boolean | undefined\n id?: string | undefined\n}\n\n/** Deduplicates in-flight promises. */\nexport function withDedupe(\n fn: () => Promise,\n { enabled = true, id }: WithDedupeOptions,\n): Promise {\n if (!enabled || !id) return fn()\n if (promiseCache.get(id)) return promiseCache.get(id)!\n const promise = fn().finally(() => promiseCache.delete(id))\n promiseCache.set(id, promise)\n return promise\n}\n","import { BaseError } from '../errors/base.js'\nimport {\n HttpRequestError,\n type HttpRequestErrorType,\n type RpcRequestErrorType,\n type TimeoutErrorType,\n type WebSocketRequestErrorType,\n} from '../errors/request.js'\nimport {\n ChainDisconnectedError,\n type ChainDisconnectedErrorType,\n InternalRpcError,\n type InternalRpcErrorType,\n InvalidInputRpcError,\n type InvalidInputRpcErrorType,\n InvalidParamsRpcError,\n type InvalidParamsRpcErrorType,\n InvalidRequestRpcError,\n type InvalidRequestRpcErrorType,\n JsonRpcVersionUnsupportedError,\n type JsonRpcVersionUnsupportedErrorType,\n LimitExceededRpcError,\n type LimitExceededRpcErrorType,\n MethodNotFoundRpcError,\n type MethodNotFoundRpcErrorType,\n MethodNotSupportedRpcError,\n type MethodNotSupportedRpcErrorType,\n ParseRpcError,\n type ParseRpcErrorType,\n ProviderDisconnectedError,\n type ProviderDisconnectedErrorType,\n type ProviderRpcErrorCode,\n ResourceNotFoundRpcError,\n type ResourceNotFoundRpcErrorType,\n ResourceUnavailableRpcError,\n type ResourceUnavailableRpcErrorType,\n type RpcError,\n type RpcErrorCode,\n type RpcErrorType,\n SwitchChainError,\n type SwitchChainErrorType,\n TransactionRejectedRpcError,\n type TransactionRejectedRpcErrorType,\n UnauthorizedProviderError,\n type UnauthorizedProviderErrorType,\n UnknownRpcError,\n type UnknownRpcErrorType,\n UnsupportedProviderMethodError,\n type UnsupportedProviderMethodErrorType,\n UserRejectedRequestError,\n type UserRejectedRequestErrorType,\n} from '../errors/rpc.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type {\n EIP1193RequestFn,\n EIP1193RequestOptions,\n} from '../types/eip1193.js'\nimport { stringToHex } from './encoding/toHex.js'\nimport { keccak256 } from './hash/keccak256.js'\nimport type { CreateBatchSchedulerErrorType } from './promise/createBatchScheduler.js'\nimport { withDedupe } from './promise/withDedupe.js'\nimport { type WithRetryErrorType, withRetry } from './promise/withRetry.js'\nimport type { GetSocketRpcClientErrorType } from './rpc/socket.js'\nimport { stringify } from './stringify.js'\n\nexport type RequestErrorType =\n | ChainDisconnectedErrorType\n | CreateBatchSchedulerErrorType\n | HttpRequestErrorType\n | InternalRpcErrorType\n | InvalidInputRpcErrorType\n | InvalidParamsRpcErrorType\n | InvalidRequestRpcErrorType\n | GetSocketRpcClientErrorType\n | JsonRpcVersionUnsupportedErrorType\n | LimitExceededRpcErrorType\n | MethodNotFoundRpcErrorType\n | MethodNotSupportedRpcErrorType\n | ParseRpcErrorType\n | ProviderDisconnectedErrorType\n | ResourceNotFoundRpcErrorType\n | ResourceUnavailableRpcErrorType\n | RpcErrorType\n | RpcRequestErrorType\n | SwitchChainErrorType\n | TimeoutErrorType\n | TransactionRejectedRpcErrorType\n | UnauthorizedProviderErrorType\n | UnknownRpcErrorType\n | UnsupportedProviderMethodErrorType\n | UserRejectedRequestErrorType\n | WebSocketRequestErrorType\n | WithRetryErrorType\n | ErrorType\n\nexport function buildRequest Promise>(\n request: request,\n options: EIP1193RequestOptions = {},\n): EIP1193RequestFn {\n return async (args, overrideOptions = {}) => {\n const {\n dedupe = false,\n retryDelay = 150,\n retryCount = 3,\n uid,\n } = {\n ...options,\n ...overrideOptions,\n }\n const requestId = dedupe\n ? keccak256(stringToHex(`${uid}.${stringify(args)}`))\n : undefined\n return withDedupe(\n () =>\n withRetry(\n async () => {\n try {\n return await request(args)\n } catch (err_) {\n const err = err_ as unknown as RpcError<\n RpcErrorCode | ProviderRpcErrorCode\n >\n switch (err.code) {\n // -32700\n case ParseRpcError.code:\n throw new ParseRpcError(err)\n // -32600\n case InvalidRequestRpcError.code:\n throw new InvalidRequestRpcError(err)\n // -32601\n case MethodNotFoundRpcError.code:\n throw new MethodNotFoundRpcError(err, { method: args.method })\n // -32602\n case InvalidParamsRpcError.code:\n throw new InvalidParamsRpcError(err)\n // -32603\n case InternalRpcError.code:\n throw new InternalRpcError(err)\n // -32000\n case InvalidInputRpcError.code:\n throw new InvalidInputRpcError(err)\n // -32001\n case ResourceNotFoundRpcError.code:\n throw new ResourceNotFoundRpcError(err)\n // -32002\n case ResourceUnavailableRpcError.code:\n throw new ResourceUnavailableRpcError(err)\n // -32003\n case TransactionRejectedRpcError.code:\n throw new TransactionRejectedRpcError(err)\n // -32004\n case MethodNotSupportedRpcError.code:\n throw new MethodNotSupportedRpcError(err, {\n method: args.method,\n })\n // -32005\n case LimitExceededRpcError.code:\n throw new LimitExceededRpcError(err)\n // -32006\n case JsonRpcVersionUnsupportedError.code:\n throw new JsonRpcVersionUnsupportedError(err)\n // 4001\n case UserRejectedRequestError.code:\n throw new UserRejectedRequestError(err)\n // 4100\n case UnauthorizedProviderError.code:\n throw new UnauthorizedProviderError(err)\n // 4200\n case UnsupportedProviderMethodError.code:\n throw new UnsupportedProviderMethodError(err)\n // 4900\n case ProviderDisconnectedError.code:\n throw new ProviderDisconnectedError(err)\n // 4901\n case ChainDisconnectedError.code:\n throw new ChainDisconnectedError(err)\n // 4902\n case SwitchChainError.code:\n throw new SwitchChainError(err)\n // CAIP-25: User Rejected Error\n // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25\n case 5000:\n throw new UserRejectedRequestError(err)\n default:\n if (err_ instanceof BaseError) throw err_\n throw new UnknownRpcError(err as Error)\n }\n }\n },\n {\n delay: ({ count, error }) => {\n // If we find a Retry-After header, let's retry after the given time.\n if (error && error instanceof HttpRequestError) {\n const retryAfter = error?.headers?.get('Retry-After')\n if (retryAfter?.match(/\\d/))\n return Number.parseInt(retryAfter) * 1000\n }\n\n // Otherwise, let's retry with an exponential backoff.\n return ~~(1 << count) * retryDelay\n },\n retryCount,\n shouldRetry: ({ error }) => shouldRetry(error),\n },\n ),\n { enabled: dedupe, id: requestId },\n )\n }\n}\n\n/** @internal */\nexport function shouldRetry(error: Error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === -1) return true // Unknown error\n if (error.code === LimitExceededRpcError.code) return true\n if (error.code === InternalRpcError.code) return true\n return false\n }\n if (error instanceof HttpRequestError && error.status) {\n // Forbidden\n if (error.status === 403) return true\n // Request Timeout\n if (error.status === 408) return true\n // Request Entity Too Large\n if (error.status === 413) return true\n // Too Many Requests\n if (error.status === 429) return true\n // Internal Server Error\n if (error.status === 500) return true\n // Bad Gateway\n if (error.status === 502) return true\n // Service Unavailable\n if (error.status === 503) return true\n // Gateway Timeout\n if (error.status === 504) return true\n return false\n }\n return true\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { EIP1193RequestFn } from '../../types/eip1193.js'\nimport { buildRequest } from '../../utils/buildRequest.js'\nimport { uid as uid_ } from '../../utils/uid.js'\nimport type { ClientConfig } from '../createClient.js'\n\nexport type TransportConfig<\n type extends string = string,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: eip1193RequestFn\n /** The base delay (in ms) between retries. */\n retryDelay?: number | undefined\n /** The max number of times to retry. */\n retryCount?: number | undefined\n /** The timeout (in ms) for requests. */\n timeout?: number | undefined\n /** The type of the transport. */\n type: type\n}\n\nexport type Transport<\n type extends string = string,\n rpcAttributes = Record,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = ({\n chain,\n}: {\n chain?: chain | undefined\n pollingInterval?: ClientConfig['pollingInterval'] | undefined\n retryCount?: TransportConfig['retryCount'] | undefined\n timeout?: TransportConfig['timeout'] | undefined\n}) => {\n config: TransportConfig\n request: eip1193RequestFn\n value?: rpcAttributes | undefined\n}\n\nexport type CreateTransportErrorType = ErrorType\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n type extends string,\n rpcAttributes extends Record,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig,\n value?: rpcAttributes | undefined,\n): ReturnType> {\n const uid = uid_()\n return {\n config: {\n key,\n name,\n request,\n retryCount,\n retryDelay,\n timeout,\n type,\n },\n request: buildRequest(request, { retryCount, retryDelay, uid }),\n value,\n }\n}\n","import { RpcRequestError } from '../../errors/request.js'\nimport {\n UrlRequiredError,\n type UrlRequiredErrorType,\n} from '../../errors/transport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcRequest } from '../../types/rpc.js'\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js'\nimport {\n type HttpRpcClientOptions,\n getHttpRpcClient,\n} from '../../utils/rpc/http.js'\n\nimport {\n type CreateTransportErrorType,\n type Transport,\n type TransportConfig,\n createTransport,\n} from './createTransport.js'\n\nexport type HttpTransportConfig = {\n /**\n * Whether to enable Batch JSON-RPC.\n * @link https://www.jsonrpc.org/specification#batch\n */\n batch?:\n | boolean\n | {\n /** The maximum number of JSON-RPC requests to send in a batch. @default 1_000 */\n batchSize?: number | undefined\n /** The maximum number of milliseconds to wait before sending a batch. @default 0 */\n wait?: number | undefined\n }\n | undefined\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined\n /** A callback to handle the response from `fetch`. */\n onFetchRequest?: HttpRpcClientOptions['onRequest'] | undefined\n /** A callback to handle the response from `fetch`. */\n onFetchResponse?: HttpRpcClientOptions['onResponse'] | undefined\n /** The key of the HTTP transport. */\n key?: TransportConfig['key'] | undefined\n /** The name of the HTTP transport. */\n name?: TransportConfig['name'] | undefined\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount'] | undefined\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay'] | undefined\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout'] | undefined\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n fetchOptions?: HttpTransportConfig['fetchOptions'] | undefined\n url?: string | undefined\n }\n>\n\nexport type HttpTransportErrorType =\n | CreateTransportErrorType\n | UrlRequiredErrorType\n | ErrorType\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string | undefined,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n batch,\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n onFetchRequest,\n onFetchResponse,\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } =\n typeof batch === 'object' ? batch : {}\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n\n const rpcClient = getHttpRpcClient(url_, {\n fetchOptions,\n onRequest: onFetchRequest,\n onResponse: onFetchResponse,\n timeout,\n })\n\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const body = { method, params }\n\n const { schedule } = createBatchScheduler({\n id: url_,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize\n },\n fn: (body: RpcRequest[]) =>\n rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n })\n\n const fn = async (body: RpcRequest) =>\n batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ]\n\n const [{ error, result }] = await fn(body)\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n fetchOptions,\n url: url_,\n },\n )\n }\n}\n","import {\n HttpRequestError,\n type HttpRequestErrorType as HttpRequestErrorType_,\n TimeoutError,\n type TimeoutErrorType,\n} from '../../errors/request.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcRequest, RpcResponse } from '../../types/rpc.js'\nimport {\n type WithTimeoutErrorType,\n withTimeout,\n} from '../promise/withTimeout.js'\nimport { stringify } from '../stringify.js'\nimport { idCache } from './id.js'\n\nexport type HttpRpcClientOptions = {\n /** Request configuration to pass to `fetch`. */\n fetchOptions?: Omit | undefined\n /** A callback to handle the request. */\n onRequest?: ((request: Request) => Promise | void) | undefined\n /** A callback to handle the response. */\n onResponse?: ((response: Response) => Promise | void) | undefined\n /** The timeout (in ms) for the request. */\n timeout?: number | undefined\n}\n\nexport type HttpRequestParameters<\n body extends RpcRequest | RpcRequest[] = RpcRequest,\n> = {\n /** The RPC request body. */\n body: body\n /** Request configuration to pass to `fetch`. */\n fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined\n /** A callback to handle the response. */\n onRequest?: ((request: Request) => Promise | void) | undefined\n /** A callback to handle the response. */\n onResponse?: ((response: Response) => Promise | void) | undefined\n /** The timeout (in ms) for the request. */\n timeout?: HttpRpcClientOptions['timeout'] | undefined\n}\n\nexport type HttpRequestReturnType<\n body extends RpcRequest | RpcRequest[] = RpcRequest,\n> = body extends RpcRequest[] ? RpcResponse[] : RpcResponse\n\nexport type HttpRequestErrorType =\n | HttpRequestErrorType_\n | TimeoutErrorType\n | WithTimeoutErrorType\n | ErrorType\n\nexport type HttpRpcClient = {\n request(\n params: HttpRequestParameters,\n ): Promise>\n}\n\nexport function getHttpRpcClient(\n url: string,\n options: HttpRpcClientOptions = {},\n): HttpRpcClient {\n return {\n async request(params) {\n const {\n body,\n onRequest = options.onRequest,\n onResponse = options.onResponse,\n timeout = options.timeout ?? 10_000,\n } = params\n\n const fetchOptions = {\n ...(options.fetchOptions ?? {}),\n ...(params.fetchOptions ?? {}),\n }\n\n const { headers, method, signal: signal_ } = fetchOptions\n\n try {\n const response = await withTimeout(\n async ({ signal }) => {\n const init: RequestInit = {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(\n body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })),\n )\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : null),\n }\n const request = new Request(url, init)\n if (onRequest) await onRequest(request)\n const response = await fetch(url, init)\n return response\n },\n {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n },\n )\n\n if (onResponse) await onResponse(response)\n\n let data: any\n if (\n response.headers.get('Content-Type')?.startsWith('application/json')\n )\n data = await response.json()\n else {\n data = await response.text()\n try {\n data = JSON.parse(data || '{}')\n } catch (err) {\n if (response.ok) throw err\n data = { error: data }\n }\n }\n\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n })\n }\n\n return data\n } catch (err) {\n if (err instanceof HttpRequestError) throw err\n if (err instanceof TimeoutError) throw err\n throw new HttpRequestError({\n body,\n cause: err as Error,\n url,\n })\n }\n },\n }\n}\n","import {\n type Account,\n type Address,\n type BaseErrorType,\n type Client,\n createClient,\n custom,\n} from 'viem'\nimport { getAddress, parseAccount } from 'viem/utils'\n\nimport type { Config, Connection } from '../createConfig.js'\nimport type { ErrorType } from '../errors/base.js'\nimport {\n ConnectorAccountNotFoundError,\n type ConnectorAccountNotFoundErrorType,\n ConnectorChainMismatchError,\n type ConnectorChainMismatchErrorType,\n ConnectorNotConnectedError,\n type ConnectorNotConnectedErrorType,\n ConnectorUnavailableReconnectingError,\n type ConnectorUnavailableReconnectingErrorType,\n} from '../errors/config.js'\nimport type {\n ChainIdParameter,\n ConnectorParameter,\n} from '../types/properties.js'\nimport type { Compute } from '../types/utils.js'\n\nexport type GetConnectorClientParameters<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Compute<\n ChainIdParameter &\n ConnectorParameter & {\n account?: Address | Account | undefined\n }\n>\n\nexport type GetConnectorClientReturnType<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Compute<\n Client<\n config['_internal']['transports'][chainId],\n Extract,\n Account\n >\n>\n\nexport type GetConnectorClientErrorType =\n | ConnectorAccountNotFoundErrorType\n | ConnectorChainMismatchErrorType\n | ConnectorNotConnectedErrorType\n | ConnectorUnavailableReconnectingErrorType\n // base\n | BaseErrorType\n | ErrorType\n\n/** https://wagmi.sh/core/api/actions/getConnectorClient */\nexport async function getConnectorClient<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(\n config: config,\n parameters: GetConnectorClientParameters = {},\n): Promise> {\n // Get connection\n let connection: Connection | undefined\n if (parameters.connector) {\n const { connector } = parameters\n if (\n config.state.status === 'reconnecting' &&\n !connector.getAccounts &&\n !connector.getChainId\n )\n throw new ConnectorUnavailableReconnectingError({ connector })\n\n const [accounts, chainId] = await Promise.all([\n connector.getAccounts(),\n connector.getChainId(),\n ])\n connection = {\n accounts: accounts as readonly [Address, ...Address[]],\n chainId,\n connector,\n }\n } else connection = config.state.connections.get(config.state.current!)\n if (!connection) throw new ConnectorNotConnectedError()\n\n const chainId = parameters.chainId ?? connection.chainId\n\n // Check connector using same chainId as connection\n const connectorChainId = await connection.connector.getChainId()\n if (connectorChainId !== connection.chainId)\n throw new ConnectorChainMismatchError({\n connectionChainId: connection.chainId,\n connectorChainId,\n })\n\n // If connector has custom `getClient` implementation\n type Return = GetConnectorClientReturnType\n const connector = connection.connector\n if (connector.getClient)\n return connector.getClient({ chainId }) as unknown as Return\n\n // Default using `custom` transport\n const account = parseAccount(parameters.account ?? connection.accounts[0]!)\n account.address = getAddress(account.address) // TODO: Checksum address as part of `parseAccount`?\n\n // If account was provided, check that it exists on the connector\n if (\n parameters.account &&\n !connection.accounts.some(\n (x) => x.toLowerCase() === account.address.toLowerCase(),\n )\n )\n throw new ConnectorAccountNotFoundError({\n address: account.address,\n connector,\n })\n\n const chain = config.chains.find((chain) => chain.id === chainId)\n const provider = (await connection.connector.getProvider({ chainId })) as {\n request(...args: any): Promise\n }\n\n return createClient({\n account,\n chain,\n name: 'Connector Client',\n transport: (opts) => custom(provider)({ ...opts, retryCount: 0 }),\n }) as Return\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type CreateTransportErrorType,\n type Transport,\n type TransportConfig,\n createTransport,\n} from './createTransport.js'\n\ntype EthereumProvider = { request(...args: any): Promise }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key'] | undefined\n /** The name of the transport. */\n name?: TransportConfig['name'] | undefined\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount'] | undefined\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay'] | undefined\n}\n\nexport type CustomTransport = Transport<\n 'custom',\n {},\n EthereumProvider['request']\n>\n\nexport type CustomTransportErrorType = CreateTransportErrorType | ErrorType\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(\n provider: provider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import { type QueryKey, replaceEqualDeep } from '@tanstack/query-core'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport function structuralSharing(\n oldData: data | undefined,\n newData: data,\n): data {\n if (deepEqual(oldData, newData)) return oldData as data\n return replaceEqualDeep(oldData, newData)\n}\n\nexport function hashFn(queryKey: QueryKey): string {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value))\n return Object.keys(value)\n .sort()\n .reduce((result, key) => {\n result[key] = value[key]\n return result\n }, {} as any)\n if (typeof value === 'bigint') return value.toString()\n return value\n })\n}\n\n// biome-ignore lint/complexity/noBannedTypes:\nfunction isPlainObject(value: any): value is Object {\n if (!hasObjectPrototype(value)) {\n return false\n }\n\n // If has modified constructor\n const ctor = value.constructor\n if (typeof ctor === 'undefined') return true\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) return false\n\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: \n if (!prot.hasOwnProperty('isPrototypeOf')) return false\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function filterQueryOptions>(\n options: type,\n): type {\n // destructuring is super fast\n // biome-ignore format: no formatting\n const {\n // import('@tanstack/query-core').QueryOptions\n _defaulted, behavior, gcTime, initialData, initialDataUpdatedAt, maxPages, meta, networkMode, queryFn, queryHash, queryKey, queryKeyHashFn, retry, retryDelay, structuralSharing,\n\n // import('@tanstack/query-core').InfiniteQueryObserverOptions\n getPreviousPageParam, getNextPageParam, initialPageParam,\n \n // import('@tanstack/react-query').UseQueryOptions\n _optimisticResults, enabled, notifyOnChangeProps, placeholderData, refetchInterval, refetchIntervalInBackground, refetchOnMount, refetchOnReconnect, refetchOnWindowFocus, retryOnMount, select, staleTime, suspense, throwOnError,\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // wagmi\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n config, connector, query,\n ...rest\n } = options\n\n return rest as type\n}\n","import type { QueryOptions } from '@tanstack/query-core'\n\nimport {\n type GetConnectorClientErrorType,\n type GetConnectorClientParameters,\n type GetConnectorClientReturnType,\n getConnectorClient,\n} from '../actions/getConnectorClient.js'\nimport type { Config } from '../createConfig.js'\nimport type { ScopeKeyParameter } from '../types/properties.js'\nimport type { Compute, ExactPartial } from '../types/utils.js'\nimport { filterQueryOptions } from './utils.js'\n\nexport type GetConnectorClientOptions<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = Compute<\n ExactPartial> &\n ScopeKeyParameter\n>\n\nexport function getConnectorClientQueryOptions<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(config: config, options: GetConnectorClientOptions = {}) {\n return {\n gcTime: 0,\n async queryFn({ queryKey }) {\n const { connector } = options\n const { connectorUid: _, scopeKey: _s, ...parameters } = queryKey[1]\n return getConnectorClient(config, {\n ...parameters,\n connector,\n }) as unknown as Promise>\n },\n queryKey: getConnectorClientQueryKey(options),\n } as const satisfies QueryOptions<\n GetConnectorClientQueryFnData,\n GetConnectorClientErrorType,\n GetConnectorClientData,\n GetConnectorClientQueryKey\n >\n}\n\nexport type GetConnectorClientQueryFnData<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = GetConnectorClientReturnType\n\nexport type GetConnectorClientData<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = GetConnectorClientQueryFnData\n\nexport function getConnectorClientQueryKey<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(options: GetConnectorClientOptions = {}) {\n const { connector, ...parameters } = options\n return [\n 'connectorClient',\n { ...filterQueryOptions(parameters), connectorUid: connector?.uid },\n ] as const\n}\n\nexport type GetConnectorClientQueryKey<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = ReturnType>\n","import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n skipToken,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { canFetch, createRetryer, isCancelledError } from './retryer'\nimport { Removable } from './removable'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunction,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n options?: QueryOptions\n defaultOptions?: QueryOptions\n state?: QueryState\n}\n\nexport interface QueryState {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise\n fetchOptions?: FetchOptions\n signal: AbortSignal\n options: QueryOptions\n queryKey: TQueryKey\n state: QueryState\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext,\n query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\n}\n\ninterface SuccessAction {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction {\n type: 'setState'\n state: Partial>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction\n | SuccessAction\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions\n state: QueryState\n\n #initialState: QueryState\n #revertState?: QueryState\n #cache: QueryCache\n #retryer?: Retryer\n observers: Array>\n #defaultOptions?: QueryOptions\n #abortSignalConsumed: boolean\n\n constructor(config: QueryConfig) {\n super()\n\n this.#abortSignalConsumed = false\n this.#defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.#cache = config.cache\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get promise(): Promise | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.#cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.#dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: Partial>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.#dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise {\n const promise = this.#retryer?.promise\n this.#retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.#initialState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n if (this.getObserversCount() > 0) {\n return !this.isActive()\n }\n // if a query has no observers, it should still be considered disabled if it never attempted a fetch\n return (\n this.options.queryFn === skipToken ||\n this.state.dataUpdateCount + this.state.errorUpdateCount === 0\n )\n }\n\n isStale(): boolean {\n if (this.state.isInvalidated) {\n return true\n }\n\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n this.state.data === undefined ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n addObserver(observer: QueryObserver): void {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.#cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver): void {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true })\n } else {\n this.#retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.#cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions,\n fetchOptions?: FetchOptions,\n ): Promise {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.#retryer.continueRetry()\n // Return current promise if we are already fetching\n return this.#retryer.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = new AbortController()\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const queryFnContext: OmitKeyof<\n QueryFunctionContext,\n 'signal'\n > = {\n queryKey: this.queryKey,\n meta: this.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn as QueryFunction,\n queryFnContext as QueryFunctionContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext as QueryFunctionContext)\n }\n\n // Trigger behavior hook\n const context: OmitKeyof<\n FetchContext,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(\n context as FetchContext,\n this as unknown as Query,\n )\n\n // Store state in case the current fetch needs to be reverted\n this.#revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.#dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.#cache.config.onError?.(\n error as any,\n this as Query,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query,\n )\n }\n\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n\n // Try to fetch the data\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise\n | undefined,\n fn: context.fetchFn as () => Promise,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n try {\n this.setData(data)\n } catch (error) {\n onError(error as TError)\n return\n }\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query,\n )\n\n // Schedule query gc after fetching\n this.scheduleGc()\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true,\n })\n\n return this.#retryer.start()\n }\n\n #dispatch(action: Action): void {\n const reducer = (\n state: QueryState,\n ): QueryState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error\n\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: 'idle' }\n }\n\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions,\n): QueryState {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction)()\n : options.initialData\n\n const hasData = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? (initialDataUpdatedAt ?? Date.now()) : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n","import { focusManager } from './focusManager'\nimport { notifyManager } from './notifyManager'\nimport { fetchState } from './query'\nimport { Subscribable } from './subscribable'\nimport { pendingThenable } from './thenable'\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport type { FetchOptions, Query, QueryState } from './query'\nimport type { QueryClient } from './queryClient'\nimport type { PendingThenable, Thenable } from './thenable'\nimport type {\n DefaultError,\n DefaultedQueryObserverOptions,\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\n\ntype QueryObserverListener = (\n result: QueryObserverResult,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n}\n\ninterface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable> {\n #client: QueryClient\n #currentQuery: Query = undefined!\n #currentQueryInitialState: QueryState = undefined!\n #currentResult: QueryObserverResult = undefined!\n #currentResultState?: QueryState\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #currentThenable: Thenable\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData?: Query\n #staleTimeoutId?: ReturnType\n #refetchIntervalId?: ReturnType\n #currentRefetchInterval?: number | false\n #trackedProps = new Set()\n\n constructor(\n client: QueryClient,\n public options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.#selectError = null\n this.#currentThenable = pendingThenable()\n if (!this.options.experimental_prefetchInRender) {\n this.#currentThenable.reject(\n new Error('experimental_prefetchInRender feature flag is not enabled'),\n )\n }\n\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n } else {\n this.updateResult()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (\n this.options.enabled !== undefined &&\n typeof this.options.enabled !== 'boolean' &&\n typeof this.options.enabled !== 'function' &&\n typeof resolveEnabled(this.options.enabled, this.#currentQuery) !==\n 'boolean'\n ) {\n throw new Error(\n 'Expected enabled to be a boolean or a callback that returns a boolean',\n )\n }\n\n this.#updateQuery()\n this.#currentQuery.setOptions(this.options)\n\n if (\n prevOptions._defaulted &&\n !shallowEqualObjects(this.options, prevOptions)\n ) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n resolveEnabled(this.options.enabled, this.#currentQuery) !==\n resolveEnabled(prevOptions.enabled, this.#currentQuery) ||\n resolveStaleTime(this.options.staleTime, this.#currentQuery) !==\n resolveStaleTime(prevOptions.staleTime, this.#currentQuery))\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n resolveEnabled(this.options.enabled, this.#currentQuery) !==\n resolveEnabled(prevOptions.enabled, this.#currentQuery) ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n const result = this.createResult(query, options)\n\n if (shouldAssignObserverCurrentProperties(this, result)) {\n // this assigns the optimistic result to the current Observer\n // because if the query function changes, useQuery will be performing\n // an effect where it would fetch again.\n // When the fetch finishes, we perform a deep data cloning in order\n // to reuse objects references. This deep data clone is performed against\n // the `observer.currentResult.data` property\n // When QueryKey changes, we refresh the query and get new `optimistic`\n // result, while we leave the `observer.currentResult`, so when new data\n // arrives, it finds the old `observer.currentResult` which is related\n // to the old QueryKey. Which means that currentResult and selectData are\n // out of sync already.\n // To solve this, we move the cursor of the currentResult every time\n // an observer reads an optimistic value.\n\n // When keeping the previous data, the result doesn't change until new\n // data arrives.\n this.#currentResult = result\n this.#currentResultOptions = this.options\n this.#currentResultState = this.#currentQuery.state\n }\n return result\n }\n\n getCurrentResult(): QueryObserverResult {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult,\n onPropTracked?: (key: keyof QueryObserverResult) => void,\n ): QueryObserverResult {\n const trackedResult = {} as QueryObserverResult\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key as keyof QueryObserverResult)\n onPropTracked?.(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n trackProp(key: keyof QueryObserverResult) {\n this.#trackedProps.add(key)\n }\n\n getCurrentQuery(): Query {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: Omit,\n ): Promise {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise = this.#currentQuery.fetch(\n this.options as QueryOptions,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery,\n )\n\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return\n }\n\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime)\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return (\n (typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(this.#currentQuery)\n : this.options.refetchInterval) ?? false\n )\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n resolveEnabled(this.options.enabled, this.#currentQuery) === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n\n const { state } = query\n let newState = { ...state }\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options),\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n newState.fetchStatus = 'idle'\n }\n }\n\n let { error, errorUpdatedAt, status } = newState\n\n // Select data if needed\n if (options.select && newState.data !== undefined) {\n // Memoize select result\n if (\n prevResult &&\n newState.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(newState.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = newState.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n options.placeholderData !== undefined &&\n data === undefined &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction\n )(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData as any,\n )\n : options.placeholderData\n if (options.select && placeholderData !== undefined) {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (placeholderData !== undefined) {\n status = 'success'\n data = replaceData(\n prevResult?.data,\n placeholderData as unknown,\n options,\n ) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = newState.fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n const hasData = data !== undefined\n\n const result: QueryObserverBaseResult = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount:\n newState.dataUpdateCount > queryInitialState.dataUpdateCount ||\n newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n }\n\n const nextResult = result as QueryObserverResult\n\n if (this.options.experimental_prefetchInRender) {\n const finalizeThenableIfPossible = (thenable: PendingThenable) => {\n if (nextResult.status === 'error') {\n thenable.reject(nextResult.error)\n } else if (nextResult.data !== undefined) {\n thenable.resolve(nextResult.data)\n }\n }\n\n /**\n * Create a new thenable and result promise when the results have changed\n */\n const recreateThenable = () => {\n const pending =\n (this.#currentThenable =\n nextResult.promise =\n pendingThenable())\n\n finalizeThenableIfPossible(pending)\n }\n\n const prevThenable = this.#currentThenable\n switch (prevThenable.status) {\n case 'pending':\n // Finalize the previous thenable if it was pending\n // and we are still observing the same query\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable)\n }\n break\n case 'fulfilled':\n if (\n nextResult.status === 'error' ||\n nextResult.data !== prevThenable.value\n ) {\n recreateThenable()\n }\n break\n case 'rejected':\n if (\n nextResult.status !== 'error' ||\n nextResult.error !== prevThenable.reason\n ) {\n recreateThenable()\n }\n break\n }\n }\n\n return nextResult\n }\n\n updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n if (this.#currentResultState.data !== undefined) {\n this.#lastQueryWithDefinedData = this.#currentQuery\n }\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n const notifyOnChangePropsValue =\n typeof notifyOnChangeProps === 'function'\n ? notifyOnChangeProps()\n : notifyOnChangeProps\n\n if (\n notifyOnChangePropsValue === 'all' ||\n (!notifyOnChangePropsValue && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps,\n )\n\n if (this.options.throwOnError) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(): void {\n this.updateResult()\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First, trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n resolveEnabled(options.enabled, query) !== false &&\n query.state.data === undefined &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.data !== undefined &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query,\n options: QueryObserverOptions,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (resolveEnabled(options.enabled, query) !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query,\n prevQuery: Query,\n options: QueryObserverOptions,\n prevOptions: QueryObserverOptions,\n): boolean {\n return (\n (query !== prevQuery ||\n resolveEnabled(prevOptions.enabled, query) === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n resolveEnabled(options.enabled, query) !== false &&\n query.isStaleByTime(resolveStaleTime(options.staleTime, query))\n )\n}\n\n// this function would decide if we will update the observer's 'current'\n// properties after an optimistic reading via getOptimisticResult\nfunction shouldAssignObserverCurrentProperties<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n observer: QueryObserver,\n optimisticResult: QueryObserverResult,\n) {\n // if the newly created result isn't what the observer is holding as current,\n // then we'll need to update the properties as well\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true\n }\n\n // basically, just keep previous properties if nothing changed\n return false\n}\n","'use client'\nimport * as React from 'react'\n\n// CONTEXT\nexport type QueryErrorResetFunction = () => void\nexport type QueryErrorIsResetFunction = () => boolean\nexport type QueryErrorClearResetFunction = () => void\n\nexport interface QueryErrorResetBoundaryValue {\n clearReset: QueryErrorClearResetFunction\n isReset: QueryErrorIsResetFunction\n reset: QueryErrorResetFunction\n}\n\nfunction createValue(): QueryErrorResetBoundaryValue {\n let isReset = false\n return {\n clearReset: () => {\n isReset = false\n },\n reset: () => {\n isReset = true\n },\n isReset: () => {\n return isReset\n },\n }\n}\n\nconst QueryErrorResetBoundaryContext = React.createContext(createValue())\n\n// HOOK\n\nexport const useQueryErrorResetBoundary = () =>\n React.useContext(QueryErrorResetBoundaryContext)\n\n// COMPONENT\n\nexport type QueryErrorResetBoundaryFunction = (\n value: QueryErrorResetBoundaryValue,\n) => React.ReactNode\n\nexport interface QueryErrorResetBoundaryProps {\n children: QueryErrorResetBoundaryFunction | React.ReactNode\n}\n\nexport const QueryErrorResetBoundary = ({\n children,\n}: QueryErrorResetBoundaryProps) => {\n const [value] = React.useState(() => createValue())\n return (\n \n {typeof children === 'function' ? children(value) : children}\n \n )\n}\n","'use client'\nimport * as React from 'react'\nimport { shouldThrowError } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const ensurePreventErrorBoundaryRetry = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n if (\n options.suspense ||\n options.throwOnError ||\n options.experimental_prefetchInRender\n ) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false\n }\n }\n}\n\nexport const useClearResetErrorBoundary = (\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset()\n }, [errorResetBoundary])\n}\n\nexport const getHasError = <\n TData,\n TError,\n TQueryFnData,\n TQueryData,\n TQueryKey extends QueryKey,\n>({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n}: {\n result: QueryObserverResult\n errorResetBoundary: QueryErrorResetBoundaryValue\n throwOnError: ThrowOnError\n query: Query | undefined\n}) => {\n return (\n result.isError &&\n !errorResetBoundary.isReset() &&\n !result.isFetching &&\n query &&\n shouldThrowError(throwOnError, [result.error, query])\n )\n}\n","'use client'\nimport * as React from 'react'\n\nconst IsRestoringContext = React.createContext(false)\n\nexport const useIsRestoring = () => React.useContext(IsRestoringContext)\nexport const IsRestoringProvider = IsRestoringContext.Provider\n","import type {\n DefaultError,\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const defaultThrowOnError = <\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n _error: TError,\n query: Query,\n) => query.state.data === undefined\n\nexport const ensureSuspenseTimers = (\n defaultedOptions: DefaultedQueryObserverOptions,\n) => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (defaultedOptions.staleTime === undefined) {\n defaultedOptions.staleTime = 1000\n }\n if (typeof defaultedOptions.gcTime === 'number') {\n defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, 1000)\n }\n }\n}\n\nexport const willFetch = (\n result: QueryObserverResult,\n isRestoring: boolean,\n) => result.isLoading && result.isFetching && !isRestoring\n\nexport const shouldSuspend = (\n defaultedOptions:\n | DefaultedQueryObserverOptions\n | undefined,\n result: QueryObserverResult,\n) => defaultedOptions?.suspense && result.isPending\n\nexport const fetchOptimistic = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n defaultedOptions: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n observer: QueryObserver,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) =>\n observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset()\n })\n","'use client'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport type {\n DefinedInitialDataOptions,\n UndefinedInitialDataOptions,\n} from './queryOptions'\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions,\n queryClient?: QueryClient,\n): DefinedUseQueryResult\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions,\n queryClient?: QueryClient,\n): UseQueryResult\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions,\n queryClient?: QueryClient,\n): UseQueryResult\n\nexport function useQuery(options: UseQueryOptions, queryClient?: QueryClient) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n","'use client'\nimport * as React from 'react'\n\nimport { isServer, notifyManager } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary'\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary,\n} from './errorBoundaryUtils'\nimport { useIsRestoring } from './isRestoring'\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch,\n} from './suspense'\nimport { noop } from './utils'\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { UseBaseQueryOptions } from './types'\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: UseBaseQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n Observer: typeof QueryObserver,\n queryClient?: QueryClient,\n): QueryObserverResult {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options !== 'object' || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object',\n )\n }\n }\n\n const client = useQueryClient(queryClient)\n const isRestoring = useIsRestoring()\n const errorResetBoundary = useQueryErrorResetBoundary()\n const defaultedOptions = client.defaultQueryOptions(options)\n\n ;(client.getDefaultOptions().queries as any)?._experimental_beforeQuery?.(\n defaultedOptions,\n )\n\n // Make sure results are optimistically set in fetching state before subscribing or updating options\n defaultedOptions._optimisticResults = isRestoring\n ? 'isRestoring'\n : 'optimistic'\n\n ensureSuspenseTimers(defaultedOptions)\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary)\n\n useClearResetErrorBoundary(errorResetBoundary)\n\n // this needs to be invoked before creating the Observer because that can create a cache entry\n const isNewCacheEntry = !client\n .getQueryCache()\n .get(defaultedOptions.queryHash)\n\n const [observer] = React.useState(\n () =>\n new Observer(\n client,\n defaultedOptions,\n ),\n )\n\n const result = observer.getOptimisticResult(defaultedOptions)\n\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring\n ? () => undefined\n : observer.subscribe(notifyManager.batchCalls(onStoreChange))\n\n // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n observer.updateResult()\n\n return unsubscribe\n },\n [observer, isRestoring],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n React.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, { listeners: false })\n }, [defaultedOptions, observer])\n\n // Handle suspense\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n }\n\n // Handle error boundary\n if (\n getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client\n .getQueryCache()\n .get<\n TQueryFnData,\n TError,\n TQueryData,\n TQueryKey\n >(defaultedOptions.queryHash),\n })\n ) {\n throw result.error\n }\n\n ;(client.getDefaultOptions().queries as any)?._experimental_afterQuery?.(\n defaultedOptions,\n result,\n )\n\n if (\n defaultedOptions.experimental_prefetchInRender &&\n !isServer &&\n willFetch(result, isRestoring)\n ) {\n const promise = isNewCacheEntry\n ? // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n : // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n client.getQueryCache().get(defaultedOptions.queryHash)?.promise\n\n promise?.catch(noop).finally(() => {\n // `.updateResult()` will trigger `.#currentThenable` to finalize\n observer.updateResult()\n })\n }\n\n // Handle result property usage tracking\n return !defaultedOptions.notifyOnChangeProps\n ? observer.trackResult(result)\n : result\n}\n","import {\n type DefaultError,\n type QueryKey,\n type UseInfiniteQueryOptions,\n type UseInfiniteQueryResult,\n type UseMutationOptions,\n type UseMutationResult,\n type UseQueryOptions,\n type UseQueryResult,\n useInfiniteQuery as tanstack_useInfiniteQuery,\n useQuery as tanstack_useQuery,\n useMutation,\n} from '@tanstack/react-query'\nimport type {\n Compute,\n ExactPartial,\n Omit,\n UnionStrictOmit,\n} from '@wagmi/core/internal'\nimport { hashFn } from '@wagmi/core/query'\n\nexport type UseMutationParameters<\n data = unknown,\n error = Error,\n variables = void,\n context = unknown,\n> = Compute<\n Omit<\n UseMutationOptions, context>,\n 'mutationFn' | 'mutationKey' | 'throwOnError'\n >\n>\n\nexport type UseMutationReturnType<\n data = unknown,\n error = Error,\n variables = void,\n context = unknown,\n> = Compute<\n UnionStrictOmit<\n UseMutationResult,\n 'mutate' | 'mutateAsync'\n >\n>\n\nexport { useMutation }\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport type UseQueryParameters<\n queryFnData = unknown,\n error = DefaultError,\n data = queryFnData,\n queryKey extends QueryKey = QueryKey,\n> = Compute<\n ExactPartial<\n Omit, 'initialData'>\n > & {\n // Fix `initialData` type\n initialData?:\n | UseQueryOptions['initialData']\n | undefined\n }\n>\n\nexport type UseQueryReturnType = Compute<\n UseQueryResult & {\n queryKey: QueryKey\n }\n>\n\n// Adding some basic customization.\n// Ideally we don't have this function, but `import('@tanstack/react-query').useQuery` currently has some quirks where it is super hard to\n// pass down the inferred `initialData` type because of it's discriminated overload in the on `useQuery`.\nexport function useQuery(\n parameters: UseQueryParameters & {\n queryKey: QueryKey\n },\n): UseQueryReturnType {\n const result = tanstack_useQuery({\n ...(parameters as any),\n queryKeyHashFn: hashFn, // for bigint support\n }) as UseQueryReturnType\n result.queryKey = parameters.queryKey\n return result\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport type UseInfiniteQueryParameters<\n queryFnData = unknown,\n error = DefaultError,\n data = queryFnData,\n queryData = queryFnData,\n queryKey extends QueryKey = QueryKey,\n pageParam = unknown,\n> = Compute<\n Omit<\n UseInfiniteQueryOptions<\n queryFnData,\n error,\n data,\n queryData,\n queryKey,\n pageParam\n >,\n 'initialData'\n > & {\n // Fix `initialData` type\n initialData?:\n | UseInfiniteQueryOptions<\n queryFnData,\n error,\n data,\n queryKey\n >['initialData']\n | undefined\n }\n>\n\nexport type UseInfiniteQueryReturnType<\n data = unknown,\n error = DefaultError,\n> = UseInfiniteQueryResult & {\n queryKey: QueryKey\n}\n\n// Adding some basic customization.\nexport function useInfiniteQuery<\n queryFnData,\n error,\n data,\n queryKey extends QueryKey,\n>(\n parameters: UseInfiniteQueryParameters & {\n queryKey: QueryKey\n },\n): UseInfiniteQueryReturnType {\n const result = tanstack_useInfiniteQuery({\n ...(parameters as any),\n queryKeyHashFn: hashFn, // for bigint support\n }) as UseInfiniteQueryReturnType\n result.queryKey = parameters.queryKey\n return result\n}\n","import type { Config } from '../createConfig.js'\n\nexport type GetChainIdReturnType =\n config['chains'][number]['id']\n\n/** https://wagmi.sh/core/api/actions/getChainId */\nexport function getChainId(\n config: config,\n): GetChainIdReturnType {\n return config.state.chainId\n}\n","'use client'\n\nimport {\n type Config,\n type GetChainIdReturnType,\n type ResolvedRegister,\n getChainId,\n watchChainId,\n} from '@wagmi/core'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseChainIdParameters =\n ConfigParameter\n\nexport type UseChainIdReturnType =\n GetChainIdReturnType\n\n/** https://wagmi.sh/react/api/hooks/useChainId */\nexport function useChainId(\n parameters: UseChainIdParameters = {},\n): UseChainIdReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchChainId(config, { onChange }),\n () => getChainId(config),\n () => getChainId(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport type { GetChainIdReturnType } from './getChainId.js'\n\nexport type WatchChainIdParameters = {\n onChange(\n chainId: GetChainIdReturnType,\n prevChainId: GetChainIdReturnType,\n ): void\n}\n\nexport type WatchChainIdReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchChainId */\nexport function watchChainId(\n config: config,\n parameters: WatchChainIdParameters,\n): WatchChainIdReturnType {\n const { onChange } = parameters\n return config.subscribe((state) => state.chainId, onChange)\n}\n","'use client'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport type {\n Config,\n GetConnectorClientErrorType,\n ResolvedRegister,\n} from '@wagmi/core'\nimport type { Compute, Omit } from '@wagmi/core/internal'\nimport {\n type GetConnectorClientData,\n type GetConnectorClientOptions,\n type GetConnectorClientQueryFnData,\n type GetConnectorClientQueryKey,\n getConnectorClientQueryOptions,\n} from '@wagmi/core/query'\nimport { useEffect, useRef } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport {\n type UseQueryParameters,\n type UseQueryReturnType,\n useQuery,\n} from '../utils/query.js'\nimport { useAccount } from './useAccount.js'\nimport { useChainId } from './useChainId.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseConnectorClientParameters<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n selectData = GetConnectorClientData,\n> = Compute<\n GetConnectorClientOptions &\n ConfigParameter & {\n query?:\n | Compute<\n Omit<\n UseQueryParameters<\n GetConnectorClientQueryFnData,\n GetConnectorClientErrorType,\n selectData,\n GetConnectorClientQueryKey\n >,\n 'gcTime' | 'staleTime'\n >\n >\n | undefined\n }\n>\n\nexport type UseConnectorClientReturnType<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n selectData = GetConnectorClientData,\n> = UseQueryReturnType\n\n/** https://wagmi.sh/react/api/hooks/useConnectorClient */\nexport function useConnectorClient<\n config extends Config = ResolvedRegister['config'],\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n selectData = GetConnectorClientData,\n>(\n parameters: UseConnectorClientParameters = {},\n): UseConnectorClientReturnType {\n const { query = {}, ...rest } = parameters\n\n const config = useConfig(rest)\n const queryClient = useQueryClient()\n const { address, connector, status } = useAccount({ config })\n const chainId = useChainId({ config })\n const activeConnector = parameters.connector ?? connector\n\n const { queryKey, ...options } = getConnectorClientQueryOptions<\n config,\n chainId\n >(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n connector: activeConnector,\n })\n const enabled = Boolean(\n (status === 'connected' ||\n (status === 'reconnecting' && activeConnector?.getProvider)) &&\n (query.enabled ?? true),\n )\n\n const addressRef = useRef(address)\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n const previousAddress = addressRef.current\n if (!address && previousAddress) {\n // remove when account is disconnected\n queryClient.removeQueries({ queryKey })\n addressRef.current = undefined\n } else if (address !== previousAddress) {\n // invalidate when address changes\n queryClient.invalidateQueries({ queryKey })\n addressRef.current = address\n }\n }, [address, queryClient])\n\n return useQuery({\n ...query,\n ...options,\n queryKey,\n enabled,\n staleTime: Number.POSITIVE_INFINITY,\n })\n}\n","import type { MutateOptions, MutationOptions } from '@tanstack/query-core'\n\nimport {\n type SwitchChainErrorType,\n type SwitchChainParameters,\n type SwitchChainReturnType,\n switchChain,\n} from '../actions/switchChain.js'\nimport type { Config } from '../createConfig.js'\nimport type { Compute } from '../types/utils.js'\n\nexport function switchChainMutationOptions(\n config: config,\n) {\n return {\n mutationFn(variables) {\n return switchChain(config, variables)\n },\n mutationKey: ['switchChain'],\n } as const satisfies MutationOptions<\n SwitchChainData,\n SwitchChainErrorType,\n SwitchChainVariables\n >\n}\n\nexport type SwitchChainData<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = Compute>\n\nexport type SwitchChainVariables<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = Compute>\n\nexport type SwitchChainMutate = <\n chainId extends config['chains'][number]['id'],\n>(\n variables: SwitchChainVariables,\n options?:\n | Compute<\n MutateOptions<\n SwitchChainData,\n SwitchChainErrorType,\n Compute>,\n context\n >\n >\n | undefined,\n) => void\n\nexport type SwitchChainMutateAsync = <\n chainId extends config['chains'][number]['id'],\n>(\n variables: SwitchChainVariables,\n options?:\n | Compute<\n MutateOptions<\n SwitchChainData,\n SwitchChainErrorType,\n Compute>,\n context\n >\n >\n | undefined,\n) => Promise>\n","import type {\n AddEthereumChainParameter,\n UserRejectedRequestErrorType,\n SwitchChainErrorType as viem_SwitchChainErrorType,\n} from 'viem'\n\nimport type { Config } from '../createConfig.js'\nimport type { BaseErrorType, ErrorType } from '../errors/base.js'\nimport {\n ChainNotConfiguredError,\n type ChainNotConfiguredErrorType,\n} from '../errors/config.js'\nimport {\n type ProviderNotFoundErrorType,\n SwitchChainNotSupportedError,\n type SwitchChainNotSupportedErrorType,\n} from '../errors/connector.js'\nimport type { ConnectorParameter } from '../types/properties.js'\nimport type { Compute, ExactPartial } from '../types/utils.js'\n\nexport type SwitchChainParameters<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Compute<\n ConnectorParameter & {\n chainId: chainId | config['chains'][number]['id']\n addEthereumChainParameter?:\n | Compute>>\n | undefined\n }\n>\n\nexport type SwitchChainReturnType<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Extract<\n config['chains'][number],\n { id: Config extends config ? number : chainId }\n>\n\nexport type SwitchChainErrorType =\n | SwitchChainNotSupportedErrorType\n | ChainNotConfiguredErrorType\n // connector.switchChain()\n | ProviderNotFoundErrorType\n | UserRejectedRequestErrorType\n // base\n | BaseErrorType\n | ErrorType\n // viem\n | viem_SwitchChainErrorType\n\n/** https://wagmi.sh/core/api/actions/switchChain */\nexport async function switchChain<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(\n config: config,\n parameters: SwitchChainParameters,\n): Promise> {\n const { addEthereumChainParameter, chainId } = parameters\n\n const connection = config.state.connections.get(\n parameters.connector?.uid ?? config.state.current!,\n )\n if (connection) {\n const connector = connection.connector\n if (!connector.switchChain)\n throw new SwitchChainNotSupportedError({ connector })\n const chain = await connector.switchChain({\n addEthereumChainParameter,\n chainId,\n })\n return chain as SwitchChainReturnType\n }\n\n const chain = config.chains.find((x) => x.id === chainId)\n if (!chain) throw new ChainNotConfiguredError()\n config.setState((x) => ({ ...x, chainId }))\n return chain as SwitchChainReturnType\n}\n","import type { Chain } from 'viem'\nimport type { Config } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport type GetChainsReturnType = readonly [\n ...config['chains'],\n ...Chain[],\n]\n\nlet previousChains: readonly Chain[] = []\n\n/** https://wagmi.sh/core/api/actions/getChains */\nexport function getChains(\n config: config,\n): GetChainsReturnType {\n const chains = config.chains\n if (deepEqual(previousChains, chains))\n return previousChains as GetChainsReturnType\n previousChains = chains\n return chains as unknown as GetChainsReturnType\n}\n","'use client'\n\nimport {\n type Config,\n type GetChainsReturnType,\n type ResolvedRegister,\n getChains,\n} from '@wagmi/core'\nimport { watchChains } from '@wagmi/core/internal'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseChainsParameters =\n ConfigParameter\n\nexport type UseChainsReturnType =\n GetChainsReturnType\n\n/** https://wagmi.sh/react/api/hooks/useChains */\nexport function useChains(\n parameters: UseChainsParameters = {},\n): UseChainsReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchChains(config, { onChange }),\n () => getChains(config),\n () => getChains(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport type { GetChainsReturnType } from './getChains.js'\n\nexport type WatchChainsParameters = {\n onChange(\n chains: GetChainsReturnType,\n prevChains: GetChainsReturnType,\n ): void\n}\n\nexport type WatchChainsReturnType = () => void\n\n/**\n * @internal\n * We don't expose this because as far as consumers know, you can't chainge (lol) `config.chains` at runtime.\n * Setting `config.chains` via `config._internal.chains.setState(...)` is an extremely advanced use case that's not worth documenting or supporting in the public API at this time.\n */\nexport function watchChains(\n config: config,\n parameters: WatchChainsParameters,\n): WatchChainsReturnType {\n const { onChange } = parameters\n return config._internal.chains.subscribe((chains, prevChains) => {\n onChange(\n chains as unknown as GetChainsReturnType,\n prevChains as unknown as GetChainsReturnType,\n )\n })\n}\n","import type { MutationOptions } from '@tanstack/query-core'\n\nimport {\n type DisconnectErrorType,\n type DisconnectParameters,\n type DisconnectReturnType,\n disconnect,\n} from '../actions/disconnect.js'\nimport type { Config } from '../createConfig.js'\nimport type { Mutate, MutateAsync } from './types.js'\n\nexport function disconnectMutationOptions(\n config: config,\n) {\n return {\n mutationFn(variables) {\n return disconnect(config, variables)\n },\n mutationKey: ['disconnect'],\n } as const satisfies MutationOptions<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables\n >\n}\n\nexport type DisconnectData = DisconnectReturnType\n\nexport type DisconnectVariables = DisconnectParameters | undefined\n\nexport type DisconnectMutate = Mutate<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n>\n\nexport type DisconnectMutateAsync = MutateAsync<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n>\n","import type { Config, Connection, Connector } from '../createConfig.js'\nimport type { BaseErrorType, ErrorType } from '../errors/base.js'\nimport type {\n ConnectorNotConnectedErrorType,\n ConnectorNotFoundErrorType,\n} from '../errors/config.js'\nimport type { ConnectorParameter } from '../types/properties.js'\n\nexport type DisconnectParameters = ConnectorParameter\n\nexport type DisconnectReturnType = void\n\nexport type DisconnectErrorType =\n | ConnectorNotFoundErrorType\n | ConnectorNotConnectedErrorType\n // base\n | BaseErrorType\n | ErrorType\n\n/** https://wagmi.sh/core/api/actions/disconnect */\nexport async function disconnect(\n config: Config,\n parameters: DisconnectParameters = {},\n): Promise {\n let connector: Connector | undefined\n if (parameters.connector) connector = parameters.connector\n else {\n const { connections, current } = config.state\n const connection = connections.get(current!)\n connector = connection?.connector\n }\n\n const connections = config.state.connections\n\n if (connector) {\n await connector.disconnect()\n connector.emitter.off('change', config._internal.events.change)\n connector.emitter.off('disconnect', config._internal.events.disconnect)\n connector.emitter.on('connect', config._internal.events.connect)\n\n connections.delete(connector.uid)\n }\n\n config.setState((x) => {\n // if no connections exist, move to disconnected state\n if (connections.size === 0)\n return {\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }\n\n // switch over to another connection\n const nextConnection = connections.values().next().value as Connection\n return {\n ...x,\n connections: new Map(connections),\n current: nextConnection.connector.uid,\n }\n })\n\n // Set recent connector if exists\n {\n const current = config.state.current\n if (!current) return\n const connector = config.state.connections.get(current)?.connector\n if (!connector) return\n await config.storage?.setItem('recentConnectorId', connector.id)\n }\n}\n","import type { Config, Connection } from '../createConfig.js'\nimport type { Compute } from '../types/utils.js'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport type GetConnectionsReturnType = Compute[]\n\nlet previousConnections: Connection[] = []\n\n/** https://wagmi.sh/core/api/actions/getConnections */\nexport function getConnections(config: Config): GetConnectionsReturnType {\n const connections = [...config.state.connections.values()]\n if (config.state.status === 'reconnecting') return previousConnections\n if (deepEqual(previousConnections, connections)) return previousConnections\n previousConnections = connections\n return connections\n}\n","'use client'\n\nimport {\n type GetConnectionsReturnType,\n getConnections,\n watchConnections,\n} from '@wagmi/core'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseConnectionsParameters = ConfigParameter\n\nexport type UseConnectionsReturnType = GetConnectionsReturnType\n\n/** https://wagmi.sh/react/api/hooks/useConnections */\nexport function useConnections(\n parameters: UseConnectionsParameters = {},\n): UseConnectionsReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchConnections(config, { onChange }),\n () => getConnections(config),\n () => getConnections(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\nimport {\n type GetConnectionsReturnType,\n getConnections,\n} from './getConnections.js'\n\nexport type WatchConnectionsParameters = {\n onChange(\n connections: GetConnectionsReturnType,\n prevConnections: GetConnectionsReturnType,\n ): void\n}\n\nexport type WatchConnectionsReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchConnections */\nexport function watchConnections(\n config: Config,\n parameters: WatchConnectionsParameters,\n): WatchConnectionsReturnType {\n const { onChange } = parameters\n return config.subscribe(() => getConnections(config), onChange, {\n equalityFn: deepEqual,\n })\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetBalanceParameters = {\n /** The address of the account. */\n address: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag | undefined\n }\n)\n\nexport type GetBalanceReturnType = bigint\n\nexport type GetBalanceErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the balance of an address in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBalance\n * - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)\n *\n * You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).\n *\n * ```ts\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * blockTag: 'safe'\n * })\n * const balanceAsEther = formatEther(balance)\n * // \"6.942\"\n * ```\n *\n * @param client - Client to use\n * @param parameters - {@link GetBalanceParameters}\n * @returns The balance of the address in wei. {@link GetBalanceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBalance } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n * // 10000000000000000000000n (wei)\n */\nexport async function getBalance(\n client: Client,\n { address, blockNumber, blockTag = 'latest' }: GetBalanceParameters,\n): Promise {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const balance = await client.request({\n method: 'eth_getBalance',\n params: [address, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type {\n Account,\n Chain,\n Client,\n PublicActions,\n RpcSchema,\n Transport,\n WalletActions,\n} from 'viem'\n\n/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction<\n transport extends Transport,\n chain extends Chain | undefined,\n account extends Account | undefined,\n rpcSchema extends RpcSchema | undefined,\n extended extends { [key: string]: unknown },\n client extends Client,\n parameters,\n returnType,\n>(\n client: client,\n actionFn: (_: any, parameters: parameters) => returnType,\n // Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n // meaning that `actionFn.name` will not always work. For that case, the consumer\n // needs to pass the name explicitly.\n name: keyof PublicActions | keyof WalletActions,\n): (parameters: parameters) => returnType {\n const action_implicit = client[actionFn.name]\n if (typeof action_implicit === 'function')\n return action_implicit as (params: parameters) => returnType\n\n const action_explicit = client[name]\n if (typeof action_explicit === 'function')\n return action_explicit as (params: parameters) => returnType\n\n return (params) => actionFn(client, params)\n}\n","import { weiUnits } from 'viem'\n\nimport type { Unit } from '../types/unit.js'\n\nexport function getUnit(unit: Unit) {\n if (typeof unit === 'number') return unit\n if (unit === 'wei') return 0\n return Math.abs(weiUnits[unit])\n}\n","import type { Abi, Address } from 'abitype'\n\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ContractFunctionExecutionError,\n type ContractFunctionExecutionErrorType,\n ContractFunctionRevertedError,\n type ContractFunctionRevertedErrorType,\n ContractFunctionZeroDataError,\n type ContractFunctionZeroDataErrorType,\n RawContractError,\n} from '../../errors/contract.js'\nimport { InternalRpcError } from '../../errors/rpc.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nconst EXECUTION_REVERTED_ERROR_CODE = 3\n\nexport type GetContractErrorReturnType = Omit<\n ContractFunctionExecutionErrorType,\n 'cause'\n> & {\n cause:\n | cause\n | ContractFunctionZeroDataErrorType\n | ContractFunctionRevertedErrorType\n}\n\nexport function getContractError>(\n err: err,\n {\n abi,\n address,\n args,\n docsPath,\n functionName,\n sender,\n }: {\n abi: Abi\n args: any\n address?: Address | undefined\n docsPath?: string | undefined\n functionName: string\n sender?: Address | undefined\n },\n): GetContractErrorReturnType {\n const { code, data, message, shortMessage } = (\n err instanceof RawContractError\n ? err\n : err instanceof BaseError\n ? err.walk((err) => 'data' in (err as Error)) || err.walk()\n : {}\n ) as RawContractError\n\n const cause = (() => {\n if (err instanceof AbiDecodingZeroDataError)\n return new ContractFunctionZeroDataError({ functionName })\n if (\n [EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&\n (data || message || shortMessage)\n ) {\n return new ContractFunctionRevertedError({\n abi,\n data: typeof data === 'object' ? data.data : data,\n functionName,\n message: shortMessage ?? message,\n })\n }\n return err\n })()\n\n return new ContractFunctionExecutionError(cause as BaseError, {\n abi,\n args,\n contractAddress: address,\n docsPath,\n functionName,\n sender,\n }) as GetContractErrorReturnType\n}\n","import type { Client } from '../clients/createClient.js'\nimport type { PublicActions } from '../clients/decorators/public.js'\nimport type { WalletActions } from '../clients/decorators/wallet.js'\nimport type { Transport } from '../clients/transports/createTransport.js'\nimport type { Account } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type { RpcSchema } from '../types/eip1193.js'\n\n/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction<\n transport extends Transport,\n chain extends Chain | undefined,\n account extends Account | undefined,\n rpcSchema extends RpcSchema | undefined,\n extended extends { [key: string]: unknown },\n client extends Client,\n parameters,\n returnType,\n>(\n client: client,\n actionFn: (_: any, parameters: parameters) => returnType,\n // Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n // meaning that `actionFn.name` will not always work. For that case, the consumer\n // needs to pass the name explicitly.\n name: keyof PublicActions | keyof WalletActions | (string & {}),\n): (parameters: parameters) => returnType {\n const action_implicit = client[actionFn.name]\n if (typeof action_implicit === 'function')\n return action_implicit as (params: parameters) => returnType\n\n const action_explicit = client[name]\n if (typeof action_explicit === 'function')\n return action_explicit as (params: parameters) => returnType\n\n return (params) => actionFn(client, params)\n}\n","import type { Abi } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { BaseError } from '../../errors/base.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionParameters,\n ContractFunctionReturnType,\n} from '../../types/contract.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\nimport { getAction } from '../../utils/getAction.js'\n\nimport { type CallErrorType, type CallParameters, call } from './call.js'\n\nexport type ReadContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n> = UnionEvaluate<\n Pick<\n CallParameters,\n | 'account'\n | 'blockNumber'\n | 'blockTag'\n | 'factory'\n | 'factoryData'\n | 'stateOverride'\n >\n> &\n ContractFunctionParameters\n\nexport type ReadContractReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n> = ContractFunctionReturnType\n\nexport type ReadContractErrorType = GetContractErrorReturnType<\n CallErrorType | EncodeFunctionDataErrorType | DecodeFunctionResultErrorType\n>\n\n/**\n * Calls a read-only function on a contract, and returns the response.\n *\n * - Docs: https://viem.sh/docs/contract/readContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/reading-contracts\n *\n * A \"read-only\" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link ReadContractParameters}\n * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { readContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await readContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // 424122n\n */\nexport async function readContract<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName,\n const args extends ContractFunctionArgs,\n>(\n client: Client,\n parameters: ReadContractParameters,\n): Promise> {\n const { abi, address, args, functionName, ...rest } =\n parameters as ReadContractParameters\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n } as EncodeFunctionDataParameters)\n try {\n const { data } = await getAction(\n client,\n call,\n 'call',\n )({\n ...(rest as CallParameters),\n data: calldata,\n to: address!,\n })\n return decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n }) as ReadContractReturnType\n } catch (error) {\n throw getContractError(error as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/readContract',\n functionName,\n })\n }\n}\n","import type { AbiStateMutability, Address, Narrow } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { multicall3Abi } from '../../constants/abis.js'\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js'\nimport { BaseError } from '../../errors/base.js'\nimport { RawContractError } from '../../errors/contract.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ContractFunctionParameters } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type {\n MulticallContracts,\n MulticallResults,\n} from '../../types/multicall.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { CallParameters } from './call.js'\nimport { type ReadContractErrorType, readContract } from './readContract.js'\n\nexport type MulticallParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n options extends {\n optional?: boolean\n properties?: Record\n } = {},\n> = Pick & {\n allowFailure?: allowFailure | boolean | undefined\n batchSize?: number | undefined\n contracts: MulticallContracts<\n Narrow,\n { mutability: AbiStateMutability } & options\n >\n multicallAddress?: Address | undefined\n}\n\nexport type MulticallReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n options extends {\n error?: Error\n } = { error: Error },\n> = MulticallResults<\n Narrow,\n allowFailure,\n { mutability: AbiStateMutability } & options\n>\n\nexport type MulticallErrorType =\n | GetChainContractAddressErrorType\n | ReadContractErrorType\n | GetContractErrorReturnType<\n EncodeFunctionDataErrorType | DecodeFunctionResultErrorType\n >\n | ErrorType\n\n/**\n * Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).\n *\n * - Docs: https://viem.sh/docs/contract/multicall\n *\n * @param client - Client to use\n * @param parameters - {@link MulticallParameters}\n * @returns An array of results with accompanying status. {@link MulticallReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { multicall } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const abi = parseAbi([\n * 'function balanceOf(address) view returns (uint256)',\n * 'function totalSupply() view returns (uint256)',\n * ])\n * const results = await multicall(client, {\n * contracts: [\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * },\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'totalSupply',\n * },\n * ],\n * })\n * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]\n */\nexport async function multicall<\n const contracts extends readonly unknown[],\n chain extends Chain | undefined,\n allowFailure extends boolean = true,\n>(\n client: Client,\n parameters: MulticallParameters,\n): Promise> {\n const {\n allowFailure = true,\n batchSize: batchSize_,\n blockNumber,\n blockTag,\n multicallAddress: multicallAddress_,\n stateOverride,\n } = parameters\n const contracts = parameters.contracts as ContractFunctionParameters[]\n\n const batchSize =\n batchSize_ ??\n ((typeof client.batch?.multicall === 'object' &&\n client.batch.multicall.batchSize) ||\n 1_024)\n\n let multicallAddress = multicallAddress_\n if (!multicallAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. multicallAddress is required.',\n )\n\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n })\n }\n\n type Aggregate3Calls = {\n allowFailure: boolean\n callData: Hex\n target: Address\n }[]\n\n const chunkedCalls: Aggregate3Calls[] = [[]]\n let currentChunk = 0\n let currentChunkSize = 0\n for (let i = 0; i < contracts.length; i++) {\n const { abi, address, args, functionName } = contracts[i]\n try {\n const callData = encodeFunctionData({ abi, args, functionName })\n\n currentChunkSize += (callData.length - 2) / 2\n // Check to see if we need to create a new chunk.\n if (\n // Check if batching is enabled.\n batchSize > 0 &&\n // Check if the current size of the batch exceeds the size limit.\n currentChunkSize > batchSize &&\n // Check if the current chunk is not already empty.\n chunkedCalls[currentChunk].length > 0\n ) {\n currentChunk++\n currentChunkSize = (callData.length - 2) / 2\n chunkedCalls[currentChunk] = []\n }\n\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData,\n target: address,\n },\n ]\n } catch (err) {\n const error = getContractError(err as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n })\n if (!allowFailure) throw error\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData: '0x' as Hex,\n target: address,\n },\n ]\n }\n }\n\n const aggregate3Results = await Promise.allSettled(\n chunkedCalls.map((calls) =>\n getAction(\n client,\n readContract,\n 'readContract',\n )({\n abi: multicall3Abi,\n address: multicallAddress!,\n args: [calls],\n blockNumber,\n blockTag,\n functionName: 'aggregate3',\n stateOverride,\n }),\n ),\n )\n\n const results = []\n for (let i = 0; i < aggregate3Results.length; i++) {\n const result = aggregate3Results[i]\n\n // If an error occurred in a `readContract` invocation (ie. network error),\n // then append the failure reason to each contract result.\n if (result.status === 'rejected') {\n if (!allowFailure) throw result.reason\n for (let j = 0; j < chunkedCalls[i].length; j++) {\n results.push({\n status: 'failure',\n error: result.reason,\n result: undefined,\n })\n }\n continue\n }\n\n // If the `readContract` call was successful, then decode the results.\n const aggregate3Result = result.value\n for (let j = 0; j < aggregate3Result.length; j++) {\n // Extract the response from `readContract`\n const { returnData, success } = aggregate3Result[j]\n\n // Extract the request call data from the original call.\n const { callData } = chunkedCalls[i][j]\n\n // Extract the contract config for this call from the `contracts` argument\n // for decoding.\n const { abi, address, functionName, args } = contracts[\n results.length\n ] as ContractFunctionParameters\n\n try {\n if (callData === '0x') throw new AbiDecodingZeroDataError()\n if (!success) throw new RawContractError({ data: returnData })\n const result = decodeFunctionResult({\n abi,\n args,\n data: returnData,\n functionName,\n })\n results.push(allowFailure ? { result, status: 'success' } : result)\n } catch (err) {\n const error = getContractError(err as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n })\n if (!allowFailure) throw error\n results.push({ error, result: undefined, status: 'failure' })\n }\n }\n }\n\n if (results.length !== contracts.length)\n throw new BaseError('multicall results mismatch')\n return results as MulticallReturnType\n}\n","import type {\n ContractFunctionParameters,\n MulticallParameters as viem_MulticallParameters,\n MulticallReturnType as viem_MulticallReturnType,\n} from 'viem'\nimport { ContractFunctionExecutionError } from 'viem'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport { type MulticallErrorType, multicall } from './multicall.js'\nimport { type ReadContractErrorType, readContract } from './readContract.js'\n\nexport type ReadContractsParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n config extends Config = Config,\n> = viem_MulticallParameters<\n contracts,\n allowFailure,\n { properties: ChainIdParameter }\n>\n\nexport type ReadContractsReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n> = viem_MulticallReturnType\n\nexport type ReadContractsErrorType = MulticallErrorType | ReadContractErrorType\n\nexport async function readContracts<\n config extends Config,\n const contracts extends readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n>(\n config: config,\n parameters: ReadContractsParameters,\n): Promise> {\n const { allowFailure = true, blockNumber, blockTag, ...rest } = parameters\n const contracts = parameters.contracts as (ContractFunctionParameters & {\n chainId?: number | undefined\n })[]\n\n try {\n const contractsByChainId: {\n [chainId: number]: {\n contract: ContractFunctionParameters\n index: number\n }[]\n } = {}\n for (const [index, contract] of contracts.entries()) {\n const chainId = contract.chainId ?? config.state.chainId\n if (!contractsByChainId[chainId]) contractsByChainId[chainId] = []\n contractsByChainId[chainId]?.push({ contract, index })\n }\n const promises = () =>\n Object.entries(contractsByChainId).map(([chainId, contracts]) =>\n multicall(config, {\n ...rest,\n allowFailure,\n blockNumber,\n blockTag,\n chainId: Number.parseInt(chainId),\n contracts: contracts.map(({ contract }) => contract),\n }),\n )\n\n const multicallResults = (await Promise.all(promises())).flat()\n // Reorder the contract results back to the order they were\n // provided in.\n const resultIndexes = Object.values(contractsByChainId).flatMap(\n (contracts) => contracts.map(({ index }) => index),\n )\n return multicallResults.reduce((results, result, index) => {\n if (results) (results as unknown[])[resultIndexes[index]!] = result\n return results\n }, [] as unknown[]) as ReadContractsReturnType\n } catch (error) {\n if (error instanceof ContractFunctionExecutionError) throw error\n\n const promises = () =>\n contracts.map((contract) =>\n readContract(config, { ...contract, blockNumber, blockTag }),\n )\n if (allowFailure)\n return (await Promise.allSettled(promises())).map((result) => {\n if (result.status === 'fulfilled')\n return { result: result.value, status: 'success' }\n return { error: result.reason, result: undefined, status: 'failure' }\n }) as ReadContractsReturnType\n\n return (await Promise.all(promises())) as ReadContractsReturnType<\n contracts,\n allowFailure\n >\n }\n}\n","import type {\n ContractFunctionParameters,\n MulticallErrorType as viem_MulticallErrorType,\n MulticallParameters as viem_MulticallParameters,\n MulticallReturnType as viem_MulticallReturnType,\n} from 'viem'\nimport { multicall as viem_multicall } from 'viem/actions'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport { getAction } from '../utils/getAction.js'\n\nexport type MulticallParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n config extends Config = Config,\n> = viem_MulticallParameters & ChainIdParameter\n\nexport type MulticallReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n> = viem_MulticallReturnType\n\nexport type MulticallErrorType = viem_MulticallErrorType\n\nexport async function multicall<\n config extends Config,\n const contracts extends readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n>(\n config: config,\n parameters: MulticallParameters,\n): Promise> {\n const { allowFailure = true, chainId, contracts, ...rest } = parameters\n const client = config.getClient({ chainId })\n const action = getAction(client, viem_multicall, 'multicall')\n return action({\n allowFailure,\n contracts,\n ...rest,\n }) as Promise>\n}\n","import type { Abi } from 'viem'\nimport type { ContractFunctionArgs, ContractFunctionName } from 'viem'\nimport {\n type ReadContractErrorType as viem_ReadContractErrorType,\n type ReadContractParameters as viem_ReadContractParameters,\n type ReadContractReturnType as viem_ReadContractReturnType,\n readContract as viem_readContract,\n} from 'viem/actions'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport { getAction } from '../utils/getAction.js'\n\nexport type ReadContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n config extends Config = Config,\n> = viem_ReadContractParameters &\n ChainIdParameter\n\nexport type ReadContractReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n> = viem_ReadContractReturnType\n\nexport type ReadContractErrorType = viem_ReadContractErrorType\n\n/** https://wagmi.sh/core/api/actions/readContract */\nexport function readContract<\n config extends Config,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName,\n args extends ContractFunctionArgs,\n>(\n config: config,\n parameters: ReadContractParameters,\n): Promise> {\n const { chainId, ...rest } = parameters\n const client = config.getClient({ chainId })\n const action = getAction(client, viem_readContract, 'readContract')\n return action(rest as any)\n}\n","import { type Address, type Hex, formatUnits, hexToString, trim } from 'viem'\nimport {\n type GetBalanceErrorType as viem_GetBalanceErrorType,\n type GetBalanceParameters as viem_GetBalanceParameters,\n getBalance as viem_getBalance,\n} from 'viem/actions'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport type { Unit } from '../types/unit.js'\nimport type { Compute } from '../types/utils.js'\nimport { getAction } from '../utils/getAction.js'\nimport { getUnit } from '../utils/getUnit.js'\nimport { type ReadContractsErrorType, readContracts } from './readContracts.js'\n\nexport type GetBalanceParameters = Compute<\n ChainIdParameter &\n viem_GetBalanceParameters & {\n /** @deprecated */\n token?: Address | undefined\n /** @deprecated */\n unit?: Unit | undefined\n }\n>\n\nexport type GetBalanceReturnType = {\n decimals: number\n /** @deprecated */\n formatted: string\n symbol: string\n value: bigint\n}\n\nexport type GetBalanceErrorType = viem_GetBalanceErrorType\n\n/** https://wagmi.sh/core/api/actions/getBalance */\nexport async function getBalance(\n config: config,\n parameters: GetBalanceParameters,\n): Promise {\n const {\n address,\n blockNumber,\n blockTag,\n chainId,\n token: tokenAddress,\n unit = 'ether',\n } = parameters\n\n if (tokenAddress) {\n try {\n return await getTokenBalance(config, {\n balanceAddress: address,\n chainId,\n symbolType: 'string',\n tokenAddress,\n })\n } catch (error) {\n // In the chance that there is an error upon decoding the contract result,\n // it could be likely that the contract data is represented as bytes32 instead\n // of a string.\n if (\n (error as ReadContractsErrorType).name ===\n 'ContractFunctionExecutionError'\n ) {\n const balance = await getTokenBalance(config, {\n balanceAddress: address,\n chainId,\n symbolType: 'bytes32',\n tokenAddress,\n })\n const symbol = hexToString(\n trim(balance.symbol as Hex, { dir: 'right' }),\n )\n return { ...balance, symbol }\n }\n throw error\n }\n }\n\n const client = config.getClient({ chainId })\n const action = getAction(client, viem_getBalance, 'getBalance')\n const value = await action(\n blockNumber ? { address, blockNumber } : { address, blockTag },\n )\n const chain = config.chains.find((x) => x.id === chainId) ?? client.chain!\n return {\n decimals: chain.nativeCurrency.decimals,\n formatted: formatUnits(value, getUnit(unit)),\n symbol: chain.nativeCurrency.symbol,\n value,\n }\n}\n\ntype GetTokenBalanceParameters = {\n balanceAddress: Address\n chainId?: number | undefined\n symbolType: 'bytes32' | 'string'\n tokenAddress: Address\n unit?: Unit | undefined\n}\n\nasync function getTokenBalance(\n config: Config,\n parameters: GetTokenBalanceParameters,\n) {\n const { balanceAddress, chainId, symbolType, tokenAddress, unit } = parameters\n const contract = {\n abi: [\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ type: 'address' }],\n outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: symbolType }],\n },\n ],\n address: tokenAddress,\n } as const\n const [value, decimals, symbol] = await readContracts(config, {\n allowFailure: false,\n contracts: [\n {\n ...contract,\n functionName: 'balanceOf',\n args: [balanceAddress],\n chainId,\n },\n { ...contract, functionName: 'decimals', chainId },\n { ...contract, functionName: 'symbol', chainId },\n ] as const,\n })\n const formatted = formatUnits(value ?? '0', getUnit(unit ?? decimals))\n return { decimals, formatted, symbol, value }\n}\n","import type { QueryOptions } from '@tanstack/query-core'\n\nimport {\n type GetBalanceErrorType,\n type GetBalanceParameters,\n type GetBalanceReturnType,\n getBalance,\n} from '../actions/getBalance.js'\nimport type { Config } from '../createConfig.js'\nimport type { ScopeKeyParameter } from '../types/properties.js'\nimport type { Compute, PartialBy } from '../types/utils.js'\nimport { filterQueryOptions } from './utils.js'\n\nexport type GetBalanceOptions = Compute<\n PartialBy, 'address'> & ScopeKeyParameter\n>\n\nexport function getBalanceQueryOptions(\n config: config,\n options: GetBalanceOptions = {},\n) {\n return {\n async queryFn({ queryKey }) {\n const { address, scopeKey: _, ...parameters } = queryKey[1]\n if (!address) throw new Error('address is required')\n const balance = await getBalance(config, {\n ...(parameters as GetBalanceParameters),\n address,\n })\n return balance ?? null\n },\n queryKey: getBalanceQueryKey(options),\n } as const satisfies QueryOptions<\n GetBalanceQueryFnData,\n GetBalanceErrorType,\n GetBalanceData,\n GetBalanceQueryKey\n >\n}\n\nexport type GetBalanceQueryFnData = Compute\n\nexport type GetBalanceData = GetBalanceQueryFnData\n\nexport function getBalanceQueryKey(\n options: GetBalanceOptions = {},\n) {\n return ['balance', filterQueryOptions(options)] as const\n}\n\nexport type GetBalanceQueryKey = ReturnType<\n typeof getBalanceQueryKey\n>\n","import {\n ChainNotConfiguredError,\n type Connector,\n ProviderNotFoundError,\n createConnector,\n extractRpcUrls,\n} from '@wagmi/core'\nimport type { Compute, ExactPartial, Omit } from '@wagmi/core/internal'\nimport type { EthereumProvider } from '@walletconnect/ethereum-provider'\nimport {\n type AddEthereumChainParameter,\n type Address,\n type ProviderConnectInfo,\n type ProviderRpcError,\n type RpcError,\n SwitchChainError,\n UserRejectedRequestError,\n getAddress,\n numberToHex,\n} from 'viem'\n\ntype WalletConnectConnector = Connector & {\n onDisplayUri(uri: string): void\n onSessionDelete(data: { topic: string }): void\n}\n\ntype EthereumProviderOptions = Parameters<(typeof EthereumProvider)['init']>[0]\n\nexport type WalletConnectParameters = Compute<\n {\n /**\n * If a new chain is added to a previously existing configured connector `chains`, this flag\n * will determine if that chain should be considered as stale. A stale chain is a chain that\n * WalletConnect has yet to establish a relationship with (e.g. the user has not approved or\n * rejected the chain).\n *\n * This flag mainly affects the behavior when a wallet does not support dynamic chain authorization\n * with WalletConnect v2.\n *\n * If `true` (default), the new chain will be treated as a stale chain. If the user\n * has yet to establish a relationship (approved/rejected) with this chain in their WalletConnect\n * session, the connector will disconnect upon the dapp auto-connecting, and the user will have to\n * reconnect to the dapp (revalidate the chain) in order to approve the newly added chain.\n * This is the default behavior to avoid an unexpected error upon switching chains which may\n * be a confusing user experience (e.g. the user will not know they have to reconnect\n * unless the dapp handles these types of errors).\n *\n * If `false`, the new chain will be treated as a potentially valid chain. This means that if the user\n * has yet to establish a relationship with the chain in their WalletConnect session, wagmi will successfully\n * auto-connect the user. This comes with the trade-off that the connector will throw an error\n * when attempting to switch to the unapproved chain if the wallet does not support dynamic session updates.\n * This may be useful in cases where a dapp constantly\n * modifies their configured chains, and they do not want to disconnect the user upon\n * auto-connecting. If the user decides to switch to the unapproved chain, it is important that the\n * dapp handles this error and prompts the user to reconnect to the dapp in order to approve\n * the newly added chain.\n *\n * @default true\n */\n isNewChainsStale?: boolean\n } & Omit<\n EthereumProviderOptions,\n | 'chains'\n | 'events'\n | 'optionalChains'\n | 'optionalEvents'\n | 'optionalMethods'\n | 'methods'\n | 'rpcMap'\n | 'showQrModal'\n > &\n ExactPartial>\n>\n\nwalletConnect.type = 'walletConnect' as const\nexport function walletConnect(parameters: WalletConnectParameters) {\n const isNewChainsStale = parameters.isNewChainsStale ?? true\n\n type Provider = Awaited>\n type Properties = {\n connect(parameters?: { chainId?: number; pairingTopic?: string }): Promise<{\n accounts: readonly Address[]\n chainId: number\n }>\n getNamespaceChainsIds(): number[]\n getRequestedChainsIds(): Promise\n isChainsStale(): Promise\n onConnect(connectInfo: ProviderConnectInfo): void\n onDisplayUri(uri: string): void\n onSessionDelete(data: { topic: string }): void\n setRequestedChainsIds(chains: number[]): void\n requestedChainsStorageKey: `${string}.requestedChains`\n }\n type StorageItem = {\n [_ in Properties['requestedChainsStorageKey']]: number[]\n }\n\n let provider_: Provider | undefined\n let providerPromise: Promise\n const NAMESPACE = 'eip155'\n\n let accountsChanged: WalletConnectConnector['onAccountsChanged'] | undefined\n let chainChanged: WalletConnectConnector['onChainChanged'] | undefined\n let connect: WalletConnectConnector['onConnect'] | undefined\n let displayUri: WalletConnectConnector['onDisplayUri'] | undefined\n let sessionDelete: WalletConnectConnector['onSessionDelete'] | undefined\n let disconnect: WalletConnectConnector['onDisconnect'] | undefined\n\n return createConnector((config) => ({\n id: 'walletConnect',\n name: 'WalletConnect',\n type: walletConnect.type,\n async setup() {\n const provider = await this.getProvider().catch(() => null)\n if (!provider) return\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n if (!sessionDelete) {\n sessionDelete = this.onSessionDelete.bind(this)\n provider.on('session_delete', sessionDelete)\n }\n },\n async connect({ chainId, ...rest } = {}) {\n try {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n if (!displayUri) {\n displayUri = this.onDisplayUri\n provider.on('display_uri', displayUri)\n }\n\n let targetChainId = chainId\n if (!targetChainId) {\n const state = (await config.storage?.getItem('state')) ?? {}\n const isChainSupported = config.chains.some(\n (x) => x.id === state.chainId,\n )\n if (isChainSupported) targetChainId = state.chainId\n else targetChainId = config.chains[0]?.id\n }\n if (!targetChainId) throw new Error('No chains found on connector.')\n\n const isChainsStale = await this.isChainsStale()\n // If there is an active session with stale chains, disconnect current session.\n if (provider.session && isChainsStale) await provider.disconnect()\n\n // If there isn't an active session or chains are stale, connect.\n if (!provider.session || isChainsStale) {\n const optionalChains = config.chains\n .filter((chain) => chain.id !== targetChainId)\n .map((optionalChain) => optionalChain.id)\n await provider.connect({\n optionalChains: [targetChainId, ...optionalChains],\n ...('pairingTopic' in rest\n ? { pairingTopic: rest.pairingTopic }\n : {}),\n })\n\n this.setRequestedChainsIds(config.chains.map((x) => x.id))\n }\n\n // If session exists and chains are authorized, enable provider for required chain\n const accounts = (await provider.enable()).map((x) => getAddress(x))\n const currentChainId = await this.getChainId()\n\n if (displayUri) {\n provider.removeListener('display_uri', displayUri)\n displayUri = undefined\n }\n if (connect) {\n provider.removeListener('connect', connect)\n connect = undefined\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n provider.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n provider.on('disconnect', disconnect)\n }\n if (!sessionDelete) {\n sessionDelete = this.onSessionDelete.bind(this)\n provider.on('session_delete', sessionDelete)\n }\n\n return { accounts, chainId: currentChainId }\n } catch (error) {\n if (\n /(user rejected|connection request reset)/i.test(\n (error as ProviderRpcError)?.message,\n )\n ) {\n throw new UserRejectedRequestError(error as Error)\n }\n throw error\n }\n },\n async disconnect() {\n const provider = await this.getProvider()\n try {\n await provider?.disconnect()\n } catch (error) {\n if (!/No matching key/i.test((error as Error).message)) throw error\n } finally {\n if (chainChanged) {\n provider?.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider?.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider?.on('connect', connect)\n }\n if (accountsChanged) {\n provider?.removeListener('accountsChanged', accountsChanged)\n accountsChanged = undefined\n }\n if (sessionDelete) {\n provider?.removeListener('session_delete', sessionDelete)\n sessionDelete = undefined\n }\n\n this.setRequestedChainsIds([])\n }\n },\n async getAccounts() {\n const provider = await this.getProvider()\n return provider.accounts.map((x) => getAddress(x))\n },\n async getProvider({ chainId } = {}) {\n async function initProvider() {\n const optionalChains = config.chains.map((x) => x.id) as [number]\n if (!optionalChains.length) return\n const { EthereumProvider } = await import(\n '@walletconnect/ethereum-provider'\n )\n return await EthereumProvider.init({\n ...parameters,\n disableProviderPing: true,\n optionalChains,\n projectId: parameters.projectId,\n rpcMap: Object.fromEntries(\n config.chains.map((chain) => {\n const [url] = extractRpcUrls({\n chain,\n transports: config.transports,\n })\n return [chain.id, url]\n }),\n ),\n showQrModal: parameters.showQrModal ?? true,\n })\n }\n\n if (!provider_) {\n if (!providerPromise) providerPromise = initProvider()\n provider_ = await providerPromise\n provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY)\n }\n if (chainId) await this.switchChain?.({ chainId })\n return provider_!\n },\n async getChainId() {\n const provider = await this.getProvider()\n return provider.chainId\n },\n async isAuthorized() {\n try {\n const [accounts, provider] = await Promise.all([\n this.getAccounts(),\n this.getProvider(),\n ])\n\n // If an account does not exist on the session, then the connector is unauthorized.\n if (!accounts.length) return false\n\n // If the chains are stale on the session, then the connector is unauthorized.\n const isChainsStale = await this.isChainsStale()\n if (isChainsStale && provider.session) {\n await provider.disconnect().catch(() => {})\n return false\n }\n return true\n } catch {\n return false\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n const chain = config.chains.find((x) => x.id === chainId)\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())\n\n try {\n await Promise.all([\n new Promise((resolve) => {\n const listener = ({\n chainId: currentChainId,\n }: { chainId?: number | undefined }) => {\n if (currentChainId === chainId) {\n config.emitter.off('change', listener)\n resolve()\n }\n }\n config.emitter.on('change', listener)\n }),\n provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n }),\n ])\n\n const requestedChains = await this.getRequestedChainsIds()\n this.setRequestedChainsIds([...requestedChains, chainId])\n\n return chain\n } catch (err) {\n const error = err as RpcError\n\n if (/(user rejected)/i.test(error.message))\n throw new UserRejectedRequestError(error)\n\n // Indicates chain is not added to provider\n try {\n let blockExplorerUrls: string[] | undefined\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls\n else\n blockExplorerUrls = chain.blockExplorers?.default.url\n ? [chain.blockExplorers?.default.url]\n : []\n\n let rpcUrls: readonly string[]\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls\n else rpcUrls = [...chain.rpcUrls.default.http]\n\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency:\n addEthereumChainParameter?.nativeCurrency ?? chain.nativeCurrency,\n rpcUrls,\n } satisfies AddEthereumChainParameter\n\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n })\n\n const requestedChains = await this.getRequestedChainsIds()\n this.setRequestedChainsIds([...requestedChains, chainId])\n return chain\n } catch (error) {\n throw new UserRejectedRequestError(error as Error)\n }\n }\n },\n onAccountsChanged(accounts) {\n if (accounts.length === 0) this.onDisconnect()\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n })\n },\n onChainChanged(chain) {\n const chainId = Number(chain)\n config.emitter.emit('change', { chainId })\n },\n async onConnect(connectInfo) {\n const chainId = Number(connectInfo.chainId)\n const accounts = await this.getAccounts()\n config.emitter.emit('connect', { accounts, chainId })\n },\n async onDisconnect(_error) {\n this.setRequestedChainsIds([])\n config.emitter.emit('disconnect')\n\n const provider = await this.getProvider()\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged)\n accountsChanged = undefined\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (sessionDelete) {\n provider.removeListener('session_delete', sessionDelete)\n sessionDelete = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n },\n onDisplayUri(uri) {\n config.emitter.emit('message', { type: 'display_uri', data: uri })\n },\n onSessionDelete() {\n this.onDisconnect()\n },\n getNamespaceChainsIds() {\n if (!provider_) return []\n const chainIds = provider_.session?.namespaces[NAMESPACE]?.accounts?.map(\n (account) => Number.parseInt(account.split(':')[1] || ''),\n )\n return chainIds ?? []\n },\n async getRequestedChainsIds() {\n return (\n (await config.storage?.getItem(this.requestedChainsStorageKey)) ?? []\n )\n },\n /**\n * Checks if the target chains match the chains that were\n * initially requested by the connector for the WalletConnect session.\n * If there is a mismatch, this means that the chains on the connector\n * are considered stale, and need to be revalidated at a later point (via\n * connection).\n *\n * There may be a scenario where a dapp adds a chain to the\n * connector later on, however, this chain will not have been approved or rejected\n * by the wallet. In this case, the chain is considered stale.\n */\n async isChainsStale() {\n if (!isNewChainsStale) return false\n\n const connectorChains = config.chains.map((x) => x.id)\n const namespaceChains = this.getNamespaceChainsIds()\n if (\n namespaceChains.length &&\n !namespaceChains.some((id) => connectorChains.includes(id))\n )\n return false\n\n const requestedChains = await this.getRequestedChainsIds()\n return !connectorChains.every((id) => requestedChains.includes(id))\n },\n async setRequestedChainsIds(chains) {\n await config.storage?.setItem(this.requestedChainsStorageKey, chains)\n },\n get requestedChainsStorageKey() {\n return `${this.id}.requestedChains` as Properties['requestedChainsStorageKey']\n },\n }))\n}\n","import type { Chain, Transport } from 'viem'\n\ntype ExtractRpcUrlsParameters = {\n transports?: Record | undefined\n chain: Chain\n}\n\nexport function extractRpcUrls(parameters: ExtractRpcUrlsParameters) {\n const { chain } = parameters\n const fallbackUrl = chain.rpcUrls.default.http[0]\n\n if (!parameters.transports) return [fallbackUrl]\n\n const transport = parameters.transports?.[chain.id]?.({ chain })\n const transports = (transport?.value?.transports as NonNullable<\n typeof transport\n >[]) || [transport]\n return transports.map(({ value }) => value?.url || fallbackUrl)\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n",null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='22' height='22' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M22.901 5.15332H26.581L18.541 14.3433L28 26.8463H20.594L14.794 19.2623L8.156 26.8463H4.474L13.074 17.0163L4 5.15432H11.594L16.837 12.0863L22.901 5.15332ZM21.61 24.6443H23.649L10.486 7.24032H8.298L21.61 24.6443Z' fill='%23676B73' /%3e%3c/svg%3e\";\n export default img;",null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='23' height='22' viewBox='0 0 23 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21346)'%3e %3cpath d='M20.4913 2.29978C20.3854 2.20831 20.2565 2.14749 20.1186 2.12385C19.9807 2.10021 19.8389 2.11465 19.7086 2.16562L2.39095 8.94278C2.14552 9.03822 1.93774 9.2108 1.79888 9.43455C1.66002 9.65829 1.59761 9.92109 1.62103 10.1834C1.64445 10.4457 1.75245 10.6933 1.92876 10.8889C2.10506 11.0845 2.34014 11.2175 2.5986 11.2679L7.08566 12.1489V17.1521C7.08478 17.4246 7.16577 17.6911 7.31813 17.9171C7.47049 18.143 7.6872 18.318 7.94018 18.4194C8.19277 18.5225 8.47055 18.5473 8.73739 18.4904C9.00424 18.4336 9.24781 18.2978 9.43644 18.1006L11.6001 15.8567L15.0327 18.8612C15.2803 19.0808 15.5997 19.2024 15.9308 19.203C16.0758 19.2028 16.22 19.1801 16.358 19.1355C16.5836 19.0639 16.7864 18.9345 16.9464 18.7601C17.1064 18.5857 17.2179 18.3725 17.2698 18.1416L20.7383 3.0526C20.7693 2.91652 20.7627 2.77456 20.7192 2.64194C20.6757 2.50932 20.5969 2.39104 20.4913 2.29978ZM15.9325 17.8357L8.86733 11.6405L19.0361 4.35232L15.9325 17.8357Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21346'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.250366 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='23' height='22' viewBox='0 0 23 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21349)'%3e %3cpath d='M21.3184 8.94728C21.3182 8.42328 21.1676 7.91034 20.8843 7.46953C20.601 7.02871 20.197 6.67858 19.7204 6.4608C19.2437 6.24303 18.7146 6.16678 18.1959 6.24113C17.6772 6.31549 17.1908 6.53731 16.7946 6.88021C15.3632 6.11969 13.6534 5.65996 11.8674 5.55314L12.3109 2.88962L13.8251 3.12204C13.9019 3.59969 14.1451 4.0348 14.5117 4.35048C14.8784 4.66615 15.3447 4.84206 15.8285 4.84711C16.3123 4.85216 16.7822 4.68603 17.1554 4.37809C17.5285 4.07014 17.7807 3.6402 17.8675 3.16426C17.9543 2.68832 17.87 2.19703 17.6296 1.77721C17.3892 1.35739 17.0081 1.03608 16.5537 0.870071C16.0993 0.704059 15.6008 0.704035 15.1464 0.870002C14.6919 1.03597 14.3108 1.35724 14.0704 1.77704L11.8486 1.43523C11.6709 1.40782 11.4895 1.45157 11.3438 1.55697C11.1981 1.66238 11.0997 1.82096 11.0702 1.99836L10.4831 5.54289C8.61684 5.62321 6.82406 6.08807 5.33379 6.88021C4.78955 6.42045 4.08736 6.19125 3.37669 6.2414C2.66602 6.29155 2.00298 6.61709 1.5287 7.14872C1.05442 7.68035 0.806352 8.37609 0.8373 9.08786C0.868249 9.79962 1.17577 10.4712 1.6944 10.9597C1.56149 11.4164 1.49388 11.8897 1.49359 12.3653C1.49359 14.2393 2.51901 15.9842 4.39125 17.278C6.18317 18.5179 8.55275 19.2015 11.0642 19.2015C13.5756 19.2015 15.9452 18.5179 17.7371 17.278C19.6093 15.9842 20.6347 14.2393 20.6347 12.3653C20.6345 11.8897 20.5669 11.4164 20.4339 10.9597C20.7119 10.7032 20.9339 10.392 21.0861 10.0458C21.2383 9.69948 21.3174 9.32552 21.3184 8.94728ZM15.8495 2.11115C15.9847 2.11115 16.1168 2.15125 16.2293 2.22636C16.3417 2.30148 16.4293 2.40824 16.481 2.53316C16.5328 2.65807 16.5463 2.79552 16.5199 2.92813C16.4936 3.06074 16.4285 3.18255 16.3328 3.27815C16.2372 3.37376 16.1154 3.43887 15.9828 3.46524C15.8502 3.49162 15.7128 3.47808 15.5879 3.42634C15.4629 3.3746 15.3562 3.28698 15.2811 3.17456C15.2059 3.06214 15.1658 2.92997 15.1658 2.79476C15.1658 2.61346 15.2379 2.43958 15.3661 2.31138C15.4943 2.18318 15.6682 2.11115 15.8495 2.11115ZM6.27888 10.9981C6.27888 10.7277 6.35907 10.4634 6.5093 10.2385C6.65953 10.0137 6.87306 9.83845 7.12289 9.73497C7.37272 9.63148 7.64762 9.60441 7.91284 9.65716C8.17805 9.70992 8.42167 9.84013 8.61288 10.0313C8.80409 10.2226 8.93431 10.4662 8.98706 10.7314C9.03981 10.9966 9.01274 11.2715 8.90926 11.5213C8.80578 11.7712 8.63053 11.9847 8.4057 12.1349C8.18086 12.2852 7.91652 12.3653 7.64611 12.3653C7.28349 12.3653 6.93574 12.2213 6.67933 11.9649C6.42293 11.7085 6.27888 11.3607 6.27888 10.9981ZM14.1191 15.7039C13.1784 16.2038 12.1294 16.4653 11.0642 16.4653C9.99892 16.4653 8.94994 16.2038 8.00927 15.7039C7.92994 15.6619 7.85967 15.6046 7.80247 15.5353C7.74528 15.4661 7.70228 15.3863 7.67594 15.3004C7.64959 15.2145 7.64042 15.1243 7.64894 15.0349C7.65745 14.9455 7.68349 14.8587 7.72558 14.7794C7.76766 14.7 7.82495 14.6297 7.89419 14.5725C7.96343 14.5154 8.04326 14.4724 8.12911 14.446C8.21497 14.4197 8.30517 14.4105 8.39457 14.419C8.48398 14.4275 8.57083 14.4536 8.65016 14.4957C9.39345 14.8908 10.2224 15.0975 11.0642 15.0975C11.906 15.0975 12.7349 14.8908 13.4782 14.4957C13.5575 14.4536 13.6444 14.4275 13.7338 14.419C13.8232 14.4105 13.9134 14.4197 13.9992 14.446C14.0851 14.4724 14.1649 14.5154 14.2341 14.5725C14.3034 14.6297 14.3607 14.7 14.4028 14.7794C14.4448 14.8587 14.4709 14.9455 14.4794 15.0349C14.4879 15.1243 14.4787 15.2145 14.4524 15.3004C14.4261 15.3863 14.3831 15.4661 14.3259 15.5353C14.2687 15.6046 14.1984 15.6619 14.1191 15.7039ZM14.4822 12.3653C14.2118 12.3653 13.9475 12.2852 13.7226 12.1349C13.4978 11.9847 13.3226 11.7712 13.2191 11.5213C13.1156 11.2715 13.0885 10.9966 13.1413 10.7314C13.194 10.4662 13.3242 10.2226 13.5155 10.0313C13.7067 9.84013 13.9503 9.70992 14.2155 9.65716C14.4807 9.60441 14.7556 9.63148 15.0054 9.73497C15.2553 9.83845 15.4688 10.0137 15.619 10.2385C15.7693 10.4634 15.8495 10.7277 15.8495 10.9981C15.8495 11.3607 15.7054 11.7085 15.449 11.9649C15.1926 12.2213 14.8448 12.3653 14.4822 12.3653Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21349'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.125977 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21352)'%3e %3cpath d='M11.6227 10.9998C11.6227 12.0814 11.302 13.1388 10.7011 14.0381C10.1001 14.9375 9.24601 15.6385 8.2467 16.0524C7.24739 16.4663 6.14778 16.5746 5.08691 16.3636C4.02605 16.1526 3.05158 15.6317 2.28674 14.8669C1.5219 14.102 1.00104 13.1276 0.790022 12.0667C0.579004 11.0059 0.687306 9.90624 1.10123 8.90693C1.51516 7.90762 2.21613 7.05349 3.11548 6.45256C4.01484 5.85163 5.0722 5.53088 6.15384 5.53088C7.6038 5.53247 8.99392 6.10916 10.0192 7.13444C11.0445 8.15971 11.6212 9.54983 11.6227 10.9998ZM15.7244 5.53088C15.2391 5.53088 14.323 5.76673 13.6462 7.34673C13.2233 8.3337 12.99 9.63256 12.99 10.9998C12.99 12.367 13.2233 13.6659 13.6462 14.6528C14.323 16.2328 15.2391 16.4687 15.7244 16.4687C16.2098 16.4687 17.1258 16.2328 17.8026 14.6528C18.2256 13.6659 18.4589 12.367 18.4589 10.9998C18.4589 9.63256 18.2256 8.3337 17.8026 7.34673C17.1258 5.76673 16.2098 5.53088 15.7244 5.53088ZM20.5097 5.53088C20.3284 5.53088 20.1545 5.60291 20.0263 5.73111C19.8981 5.85931 19.8261 6.03319 19.8261 6.2145V15.7851C19.8261 15.9664 19.8981 16.1403 20.0263 16.2685C20.1545 16.3967 20.3284 16.4687 20.5097 16.4687C20.691 16.4687 20.8649 16.3967 20.9931 16.2685C21.1213 16.1403 21.1933 15.9664 21.1933 15.7851V6.2145C21.1933 6.03319 21.1213 5.85931 20.9931 5.73111C20.8649 5.60291 20.691 5.53088 20.5097 5.53088Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21352'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.00158691 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='21' height='16' viewBox='0 0 21 16' fill='none'%3e %3cpath d='M19.5338 3.00288C19.4533 2.68786 19.2991 2.3965 19.0838 2.15284C18.8685 1.90917 18.5984 1.72019 18.2957 1.60147C15.3664 0.470096 10.7041 0.48035 10.4478 0.48035C10.1914 0.48035 5.52918 0.470096 2.5999 1.60147C2.2972 1.72019 2.02706 1.90917 1.81178 2.15284C1.59649 2.3965 1.44223 2.68786 1.36171 3.00288C1.14039 3.85569 0.877197 5.41433 0.877197 8.00009C0.877197 10.5859 1.14039 12.1445 1.36171 12.9973C1.4421 13.3125 1.59632 13.604 1.81161 13.8478C2.0269 14.0916 2.2971 14.2808 2.5999 14.3996C5.40613 15.4822 9.79834 15.5198 10.3914 15.5198H10.5042C11.0972 15.5198 15.492 15.4822 18.2957 14.3996C18.5985 14.2808 18.8687 14.0916 19.0839 13.8478C19.2992 13.604 19.4534 13.3125 19.5338 12.9973C19.7552 12.1428 20.0184 10.5859 20.0184 8.00009C20.0184 5.41433 19.7552 3.85569 19.5338 3.00288ZM13.3719 8.28464L9.27025 11.0191C9.21877 11.0534 9.15892 11.0732 9.09709 11.0762C9.03527 11.0792 8.97379 11.0653 8.91922 11.0361C8.86466 11.0069 8.81904 10.9634 8.78726 10.9103C8.75547 10.8572 8.7387 10.7964 8.73874 10.7345V5.26564C8.7387 5.20374 8.75547 5.143 8.78726 5.08989C8.81904 5.03678 8.86466 4.99329 8.91922 4.96408C8.97379 4.93486 9.03527 4.92102 9.09709 4.92401C9.15892 4.92701 9.21877 4.94673 9.27025 4.98109L13.3719 7.71554C13.4188 7.74674 13.4573 7.78904 13.4839 7.83868C13.5105 7.88833 13.5244 7.94377 13.5244 8.00009C13.5244 8.05641 13.5105 8.11185 13.4839 8.1615C13.4573 8.21114 13.4188 8.25344 13.3719 8.28464Z' fill='%23676B73'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21356)'%3e %3cpath d='M21.169 14.9644L18.6473 5.01867C18.5809 4.75975 18.4405 4.52581 18.2432 4.3455C18.0459 4.16518 17.8003 4.04633 17.5364 4.00351L14.455 3.49763C14.1154 3.443 13.7675 3.51666 13.4791 3.70429C13.1907 3.89192 12.9824 4.1801 12.8947 4.5128L12.8768 4.58543C12.8651 4.63158 12.8633 4.67964 12.8713 4.72655C12.8793 4.77345 12.8971 4.81816 12.9234 4.85782C12.9497 4.89747 12.984 4.9312 13.0241 4.95684C13.0642 4.98248 13.1092 4.99946 13.1562 5.00671C13.8633 5.11048 14.5608 5.27108 15.2421 5.48695C15.4124 5.53833 15.5568 5.65258 15.6459 5.8065C15.7351 5.96043 15.7624 6.14252 15.7223 6.31583C15.6992 6.40614 15.6579 6.49079 15.601 6.56456C15.544 6.63833 15.4725 6.69967 15.391 6.74481C15.3094 6.78995 15.2195 6.81793 15.1267 6.82704C15.034 6.83615 14.9403 6.82619 14.8515 6.79777C12.3237 6.02254 9.62205 6.01957 7.09254 6.78923C6.92135 6.84679 6.73458 6.8362 6.571 6.75966C6.40741 6.68312 6.2796 6.54651 6.2141 6.37821C6.18296 6.29184 6.16954 6.20009 6.17464 6.10843C6.17973 6.01677 6.20324 5.92707 6.24375 5.84469C6.28426 5.76231 6.34095 5.68894 6.41044 5.62894C6.47992 5.56894 6.56078 5.52356 6.64819 5.49549C7.33796 5.27579 8.04439 5.11232 8.76055 5.00671C8.80759 4.99946 8.85259 4.98248 8.89268 4.95684C8.93277 4.9312 8.96706 4.89747 8.99336 4.85782C9.01967 4.81816 9.0374 4.77345 9.04543 4.72655C9.05345 4.67964 9.0516 4.63158 9.03998 4.58543L9.02204 4.5128C8.93432 4.17982 8.72572 3.89145 8.43693 3.70392C8.14813 3.51639 7.79984 3.44316 7.45998 3.49849L4.37689 4.00436C4.11316 4.04713 3.86762 4.16585 3.67032 4.346C3.47302 4.52615 3.33252 4.75991 3.26602 5.01867L0.744339 14.9644C0.665273 15.277 0.699684 15.6075 0.841449 15.8972C0.983214 16.1868 1.22314 16.4168 1.51853 16.5461L7.24379 19.0849C7.41594 19.1614 7.60192 19.2019 7.79031 19.2039C7.9787 19.2059 8.1655 19.1694 8.33925 19.0966C8.513 19.0238 8.67003 18.9162 8.80067 18.7804C8.93131 18.6447 9.03282 18.4837 9.09894 18.3072L9.39717 17.4997C9.41494 17.4514 9.42154 17.3996 9.41649 17.3483C9.41143 17.297 9.39485 17.2476 9.36798 17.2036C9.3411 17.1596 9.30463 17.1223 9.2613 17.0944C9.21797 17.0665 9.16889 17.0488 9.11774 17.0426C8.28761 16.942 7.46861 16.7647 6.67126 16.5128C6.50165 16.4612 6.35788 16.3473 6.26893 16.194C6.17997 16.0406 6.15244 15.8593 6.19188 15.6864C6.21474 15.5959 6.25591 15.511 6.31287 15.4369C6.36982 15.3629 6.44134 15.3013 6.52301 15.256C6.60469 15.2107 6.69478 15.1826 6.78774 15.1734C6.8807 15.1643 6.97454 15.1743 7.06349 15.2028C9.60078 15.9798 12.3125 15.9798 14.8498 15.2028C14.9387 15.1744 15.0324 15.1645 15.1252 15.1736C15.218 15.1828 15.308 15.2108 15.3895 15.2561C15.4711 15.3013 15.5425 15.3627 15.5995 15.4366C15.6564 15.5105 15.6976 15.5952 15.7206 15.6856C15.7605 15.8586 15.7332 16.0402 15.6442 16.1938C15.5551 16.3474 15.4111 16.4614 15.2412 16.5128C14.4442 16.7648 13.6254 16.9421 12.7956 17.0426C12.7444 17.0488 12.6954 17.0665 12.652 17.0944C12.6087 17.1223 12.5722 17.1596 12.5453 17.2036C12.5185 17.2476 12.5019 17.297 12.4968 17.3483C12.4918 17.3996 12.4984 17.4514 12.5162 17.4997L12.8144 18.3072C12.8806 18.4836 12.9822 18.6445 13.1128 18.7802C13.2435 18.9159 13.4005 19.0234 13.5742 19.0962C13.7479 19.169 13.9347 19.2056 14.123 19.2036C14.3114 19.2017 14.4974 19.1613 14.6695 19.0849L20.3948 16.5461C20.6902 16.4168 20.9301 16.1868 21.0719 15.8972C21.2136 15.6075 21.248 15.277 21.169 14.9644ZM7.8804 13.0511C7.67759 13.0511 7.47934 12.991 7.31071 12.8783C7.14208 12.7656 7.01065 12.6055 6.93304 12.4181C6.85543 12.2307 6.83512 12.0246 6.87469 11.8257C6.91425 11.6267 7.01191 11.444 7.15532 11.3006C7.29873 11.1572 7.48144 11.0596 7.68035 11.02C7.87926 10.9804 8.08544 11.0007 8.27281 11.0783C8.46018 11.156 8.62033 11.2874 8.73301 11.456C8.84568 11.6246 8.90582 11.8229 8.90582 12.0257C8.90582 12.2977 8.79779 12.5585 8.60548 12.7508C8.41318 12.9431 8.15236 13.0511 7.8804 13.0511ZM14.0329 13.0511C13.8301 13.0511 13.6319 12.991 13.4632 12.8783C13.2946 12.7656 13.1632 12.6055 13.0856 12.4181C13.0079 12.2307 12.9876 12.0246 13.0272 11.8257C13.0668 11.6267 13.1644 11.444 13.3078 11.3006C13.4512 11.1572 13.634 11.0596 13.8329 11.02C14.0318 10.9804 14.238 11.0007 14.4253 11.0783C14.6127 11.156 14.7728 11.2874 14.8855 11.456C14.9982 11.6246 15.0583 11.8229 15.0583 12.0257C15.0583 12.2977 14.9503 12.5585 14.758 12.7508C14.5657 12.9431 14.3049 13.0511 14.0329 13.0511Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21356'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.0183105 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='23' height='22' viewBox='0 0 23 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21359)'%3e %3cpath d='M19.3509 2.11279H4.31144C3.94883 2.11279 3.60107 2.25684 3.34466 2.51324C3.08826 2.76965 2.94421 3.11741 2.94421 3.48002V18.5195C2.94421 18.8821 3.08826 19.2299 3.34466 19.4863C3.60107 19.7427 3.94883 19.8867 4.31144 19.8867H19.3509C19.7135 19.8867 20.0613 19.7427 20.3177 19.4863C20.5741 19.2299 20.7181 18.8821 20.7181 18.5195V3.48002C20.7181 3.11741 20.5741 2.76965 20.3177 2.51324C20.0613 2.25684 19.7135 2.11279 19.3509 2.11279ZM9.09673 15.1014C9.09673 15.2827 9.02471 15.4566 8.8965 15.5848C8.7683 15.713 8.59442 15.785 8.41312 15.785C8.23181 15.785 8.05793 15.713 7.92973 15.5848C7.80153 15.4566 7.7295 15.2827 7.7295 15.1014V9.63253C7.7295 9.45123 7.80153 9.27735 7.92973 9.14915C8.05793 9.02094 8.23181 8.94892 8.41312 8.94892C8.59442 8.94892 8.7683 9.02094 8.8965 9.14915C9.02471 9.27735 9.09673 9.45123 9.09673 9.63253V15.1014ZM8.41312 8.26531C8.21031 8.26531 8.01205 8.20517 7.84342 8.09249C7.6748 7.97982 7.54336 7.81967 7.46575 7.6323C7.38814 7.44493 7.36783 7.23875 7.4074 7.03984C7.44697 6.84093 7.54463 6.65822 7.68804 6.51481C7.83144 6.3714 8.01415 6.27374 8.21307 6.23417C8.41198 6.19461 8.61816 6.21491 8.80553 6.29253C8.9929 6.37014 9.15305 6.50157 9.26572 6.6702C9.3784 6.83883 9.43854 7.03708 9.43854 7.23989C9.43854 7.51185 9.3305 7.77267 9.1382 7.96497C8.94589 8.15727 8.68507 8.26531 8.41312 8.26531ZM16.6165 15.1014C16.6165 15.2827 16.5444 15.4566 16.4162 15.5848C16.288 15.713 16.1142 15.785 15.9329 15.785C15.7516 15.785 15.5777 15.713 15.4495 15.5848C15.3213 15.4566 15.2492 15.2827 15.2492 15.1014V12.0252C15.2492 11.5719 15.0692 11.1372 14.7487 10.8167C14.4282 10.4962 13.9935 10.3161 13.5402 10.3161C13.0869 10.3161 12.6523 10.4962 12.3317 10.8167C12.0112 11.1372 11.8312 11.5719 11.8312 12.0252V15.1014C11.8312 15.2827 11.7592 15.4566 11.631 15.5848C11.5028 15.713 11.3289 15.785 11.1476 15.785C10.9663 15.785 10.7924 15.713 10.6642 15.5848C10.536 15.4566 10.464 15.2827 10.464 15.1014V9.63253C10.4648 9.46509 10.5271 9.30378 10.639 9.1792C10.7509 9.05462 10.9046 8.97544 11.071 8.95669C11.2374 8.93793 11.4049 8.9809 11.5417 9.07744C11.6785 9.17398 11.7751 9.31737 11.8132 9.48043C12.2757 9.16672 12.8149 8.98489 13.3729 8.95449C13.9308 8.92409 14.4866 9.04626 14.9804 9.30787C15.4742 9.56948 15.8874 9.96066 16.1756 10.4394C16.4639 10.9181 16.6163 11.4664 16.6165 12.0252V15.1014Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21359'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.894043 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='22' height='22' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_6202_12409)'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M15.9562 2.77539C8.5131 2.77539 2.49609 8.83661 2.49609 16.3352C2.49609 22.3292 6.35139 27.403 11.6997 29.1987C12.3684 29.3337 12.6133 28.907 12.6133 28.548C12.6133 28.2336 12.5913 27.1561 12.5913 26.0334C8.84702 26.8418 8.06731 24.417 8.06731 24.417C7.46558 22.8455 6.57401 22.4416 6.57401 22.4416C5.34852 21.6109 6.66328 21.6109 6.66328 21.6109C8.02268 21.7007 8.73599 23.0028 8.73599 23.0028C9.93917 25.068 11.878 24.4845 12.658 24.1252C12.7693 23.2497 13.1261 22.6435 13.5049 22.3069C10.5186 21.9925 7.37659 20.8252 7.37659 15.6166C7.37659 14.135 7.91109 12.9227 8.75803 11.9799C8.62441 11.6432 8.1563 10.2511 8.89193 8.38781C8.89193 8.38781 10.0284 8.02854 12.591 9.77969C13.6881 9.48287 14.8196 9.33188 15.9562 9.3306C17.0927 9.3306 18.2512 9.48792 19.3211 9.77969C21.8839 8.02854 23.0204 8.38781 23.0204 8.38781C23.756 10.2511 23.2877 11.6432 23.154 11.9799C24.0233 12.9227 24.5358 14.135 24.5358 15.6166C24.5358 20.8252 21.3938 21.9699 18.3851 22.3069C18.8755 22.7333 19.2987 23.5414 19.2987 24.8212C19.2987 26.6395 19.2767 28.0989 19.2767 28.5477C19.2767 28.907 19.5219 29.3337 20.1903 29.199C25.5386 27.4027 29.3939 22.3292 29.3939 16.3352C29.416 8.83661 23.3769 2.77539 15.9562 2.77539Z' fill='%23676B73'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0_6202_12409'%3e%3crect width='27.0006' height='26.449' fill='white' transform='translate(2.5 2.77539)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\";\n export default img;",null,"import { jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nconst PrismicContext = React.createContext({});\nconst PrismicProvider = ({ client, linkResolver, richTextComponents, internalLinkComponent, externalLinkComponent, children }) => {\n const value = React.useMemo(() => ({\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent\n }), [\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent\n ]);\n return /* @__PURE__ */ jsx(PrismicContext.Provider, { value, children });\n};\nexport {\n PrismicContext,\n PrismicProvider\n};\n//# sourceMappingURL=PrismicProvider.js.map\n","import * as React from \"react\";\nimport { usePrismicClient } from \"./usePrismicClient.js\";\nconst reducer = (state, action) => {\n switch (action[0]) {\n case \"start\": {\n return { state: \"loading\" };\n }\n case \"succeed\": {\n return { state: \"loaded\", data: action[1] };\n }\n case \"fail\": {\n return {\n ...state,\n state: \"failed\",\n error: action[1]\n };\n }\n }\n};\nconst initialState = {\n state: \"idle\"\n};\nconst isParams = (value) => {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n};\nconst useStatefulPrismicClientMethod = (methodName, args, explicitClient) => {\n const lastArg = args[args.length - 1];\n const { client: lastArgExplicitClient, skip, ...params } = isParams(lastArg) ? lastArg : {};\n const argsWithoutParams = isParams(lastArg) ? args.slice(0, -1) : args;\n const client = usePrismicClient(explicitClient || lastArgExplicitClient);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n React.useEffect(\n () => {\n if (!skip) {\n {\n dispatch([\"start\"]);\n }\n client[methodName].call(client, ...argsWithoutParams, params).then((result) => {\n {\n dispatch([\"succeed\", result]);\n }\n }).catch((error) => {\n {\n dispatch([\"fail\", error]);\n }\n });\n }\n },\n // We must disable exhaustive-deps since we are using\n // JSON.stringify on params (effectively a deep equality check).\n // We want this effect to run again anytime params change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n client,\n methodName,\n skip,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(argsWithoutParams),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(params)\n ]\n );\n return React.useMemo(() => [\n state.data,\n {\n state: state.state,\n error: state.error\n }\n ], [state]);\n};\nexport {\n useStatefulPrismicClientMethod\n};\n//# sourceMappingURL=useStatefulPrismicClientMethod.js.map\n","import { useStatefulPrismicClientMethod } from \"./useStatefulPrismicClientMethod.js\";\nconst usePrismicDocuments = (...args) => useStatefulPrismicClientMethod(\"get\", args);\nconst useFirstPrismicDocument = (...args) => useStatefulPrismicClientMethod(\"getFirst\", args);\nconst useAllPrismicDocumentsDangerously = (...args) => useStatefulPrismicClientMethod(\"dangerouslyGetAll\", args);\nconst usePrismicDocumentByID = (...args) => useStatefulPrismicClientMethod(\"getByID\", args);\nconst usePrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod(\"getByIDs\", args);\nconst useAllPrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod(\"getAllByIDs\", args);\nconst usePrismicDocumentByUID = (...args) => useStatefulPrismicClientMethod(\"getByUID\", args);\nconst usePrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod(\"getByUIDs\", args);\nconst useAllPrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod(\"getAllByUIDs\", args);\nconst useSinglePrismicDocument = (...args) => useStatefulPrismicClientMethod(\"getSingle\", args);\nconst usePrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod(\"getByType\", args);\nconst useAllPrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod(\"getAllByType\", args);\nconst usePrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod(\"getByTag\", args);\nconst useAllPrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod(\"getAllByTag\", args);\nconst usePrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod(\"getBySomeTags\", args);\nconst useAllPrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod(\"getAllBySomeTags\", args);\nconst usePrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod(\"getByEveryTag\", args);\nconst useAllPrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod(\"getAllByEveryTag\", args);\nexport {\n useAllPrismicDocumentsByEveryTag,\n useAllPrismicDocumentsByIDs,\n useAllPrismicDocumentsBySomeTags,\n useAllPrismicDocumentsByTag,\n useAllPrismicDocumentsByType,\n useAllPrismicDocumentsByUIDs,\n useAllPrismicDocumentsDangerously,\n useFirstPrismicDocument,\n usePrismicDocumentByID,\n usePrismicDocumentByUID,\n usePrismicDocuments,\n usePrismicDocumentsByEveryTag,\n usePrismicDocumentsByIDs,\n usePrismicDocumentsBySomeTags,\n usePrismicDocumentsByTag,\n usePrismicDocumentsByType,\n usePrismicDocumentsByUIDs,\n useSinglePrismicDocument\n};\n//# sourceMappingURL=clientHooks.js.map\n","import { usePrismicContext } from \"./usePrismicContext.js\";\nconst usePrismicClient = (explicitClient) => {\n const context = usePrismicContext();\n const client = explicitClient || (context == null ? void 0 : context.client);\n if (!client) {\n throw new Error(\"A @prismicio/client is required to query documents. Provide a client to the hook or to a higher in your component tree.\");\n }\n return client;\n};\nexport {\n usePrismicClient\n};\n//# sourceMappingURL=usePrismicClient.js.map\n","import * as React from \"react\";\nimport { PrismicContext } from \"./PrismicProvider.js\";\nconst usePrismicContext = () => {\n return React.useContext(PrismicContext) || {};\n};\nexport {\n usePrismicContext\n};\n//# sourceMappingURL=usePrismicContext.js.map\n",null,"/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import { useState, useCallback, useLayoutEffect, useEffect, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n// src/useBoolean/useBoolean.ts\nfunction useBoolean(defaultValue = false) {\n if (typeof defaultValue !== \"boolean\") {\n throw new Error(\"defaultValue must be `true` or `false`\");\n }\n const [value, setValue] = useState(defaultValue);\n const setTrue = useCallback(() => {\n setValue(true);\n }, []);\n const setFalse = useCallback(() => {\n setValue(false);\n }, []);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return { value, setValue, setTrue, setFalse, toggle };\n}\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// src/useEventListener/useEventListener.ts\nfunction useEventListener(eventName, handler, element, options) {\n const savedHandler = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n useEffect(() => {\n const targetElement = (element == null ? void 0 : element.current) ?? window;\n if (!(targetElement && targetElement.addEventListener))\n return;\n const listener = (event) => {\n savedHandler.current(event);\n };\n targetElement.addEventListener(eventName, listener, options);\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\n// src/useClickAnyWhere/useClickAnyWhere.ts\nfunction useClickAnyWhere(handler) {\n useEventListener(\"click\", (event) => {\n handler(event);\n });\n}\nfunction useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = useCallback(async (text) => {\n if (!(navigator == null ? void 0 : navigator.clipboard)) {\n console.warn(\"Clipboard not supported\");\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n console.warn(\"Copy failed\", error);\n setCopiedText(null);\n return false;\n }\n }, []);\n return [copiedText, copy];\n}\nfunction useCounter(initialValue) {\n const [count, setCount] = useState(initialValue ?? 0);\n const increment = useCallback(() => {\n setCount((x) => x + 1);\n }, []);\n const decrement = useCallback(() => {\n setCount((x) => x - 1);\n }, []);\n const reset = useCallback(() => {\n setCount(initialValue ?? 0);\n }, [initialValue]);\n return {\n count,\n increment,\n decrement,\n reset,\n setCount\n };\n}\nfunction useInterval(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (delay === null) {\n return;\n }\n const id = setInterval(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearInterval(id);\n };\n }, [delay]);\n}\n\n// src/useCountdown/useCountdown.ts\nfunction useCountdown({\n countStart,\n countStop = 0,\n intervalMs = 1e3,\n isIncrement = false\n}) {\n const {\n count,\n increment,\n decrement,\n reset: resetCounter\n } = useCounter(countStart);\n const {\n value: isCountdownRunning,\n setTrue: startCountdown,\n setFalse: stopCountdown\n } = useBoolean(false);\n const resetCountdown = useCallback(() => {\n stopCountdown();\n resetCounter();\n }, [stopCountdown, resetCounter]);\n const countdownCallback = useCallback(() => {\n if (count === countStop) {\n stopCountdown();\n return;\n }\n if (isIncrement) {\n increment();\n } else {\n decrement();\n }\n }, [count, countStop, decrement, increment, isIncrement, stopCountdown]);\n useInterval(countdownCallback, isCountdownRunning ? intervalMs : null);\n return [count, { startCountdown, stopCountdown, resetCountdown }];\n}\nfunction useEventCallback(fn) {\n const ref = useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback((...args) => {\n var _a;\n return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n }, [ref]);\n}\n\n// src/useLocalStorage/useLocalStorage.ts\nvar IS_SERVER = typeof window === \"undefined\";\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER) {\n return initialValueToUse;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER) {\n console.warn(\n `Tried setting localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting localStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER) {\n console.warn(\n `Tried removing localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.localStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, {\n defaultValue = false,\n initializeWithValue = true\n} = {}) {\n const getMatches = (query2) => {\n if (IS_SERVER2) {\n return defaultValue;\n }\n return window.matchMedia(query2).matches;\n };\n const [matches, setMatches] = useState(() => {\n if (initializeWithValue) {\n return getMatches(query);\n }\n return defaultValue;\n });\n function handleChange() {\n setMatches(getMatches(query));\n }\n useIsomorphicLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }, [query]);\n return matches;\n}\n\n// src/useDarkMode/useDarkMode.ts\nvar COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY = \"usehooks-ts-dark-mode\";\nfunction useDarkMode(options = {}) {\n const {\n defaultValue,\n localStorageKey = LOCAL_STORAGE_KEY,\n initializeWithValue = true\n } = options;\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, {\n initializeWithValue,\n defaultValue\n });\n const [isDarkMode, setDarkMode] = useLocalStorage(\n localStorageKey,\n defaultValue ?? isDarkOS ?? false,\n { initializeWithValue }\n );\n useIsomorphicLayoutEffect(() => {\n if (isDarkOS !== isDarkMode) {\n setDarkMode(isDarkOS);\n }\n }, [isDarkOS]);\n return {\n isDarkMode,\n toggle: () => {\n setDarkMode((prev) => !prev);\n },\n enable: () => {\n setDarkMode(true);\n },\n disable: () => {\n setDarkMode(false);\n },\n set: (value) => {\n setDarkMode(value);\n }\n };\n}\nfunction useUnmount(func) {\n const funcRef = useRef(func);\n funcRef.current = func;\n useEffect(\n () => () => {\n funcRef.current();\n },\n []\n );\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func, delay = 500, options) {\n const debouncedFunc = useRef();\n useUnmount(() => {\n if (debouncedFunc.current) {\n debouncedFunc.current.cancel();\n }\n });\n const debounced = useMemo(() => {\n const debouncedFuncInstance = debounce(func, delay, options);\n const wrappedFunc = (...args) => {\n return debouncedFuncInstance(...args);\n };\n wrappedFunc.cancel = () => {\n debouncedFuncInstance.cancel();\n };\n wrappedFunc.isPending = () => {\n return !!debouncedFunc.current;\n };\n wrappedFunc.flush = () => {\n return debouncedFuncInstance.flush();\n };\n return wrappedFunc;\n }, [func, delay, options]);\n useEffect(() => {\n debouncedFunc.current = debounce(func, delay, options);\n }, [func, delay, options]);\n return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n const eq = (options == null ? void 0 : options.equalityFn) ?? ((left, right) => left === right);\n const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n const previousValueRef = useRef(unwrappedInitialValue);\n const updateDebouncedValue = useDebounceCallback(\n setDebouncedValue,\n delay,\n options\n );\n if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n updateDebouncedValue(unwrappedInitialValue);\n previousValueRef.current = unwrappedInitialValue;\n }\n return [debouncedValue, updateDebouncedValue];\n}\nfunction useDocumentTitle(title, options = {}) {\n const { preserveTitleOnUnmount = true } = options;\n const defaultTitle = useRef(null);\n useIsomorphicLayoutEffect(() => {\n defaultTitle.current = window.document.title;\n }, []);\n useIsomorphicLayoutEffect(() => {\n window.document.title = title;\n }, [title]);\n useUnmount(() => {\n if (!preserveTitleOnUnmount && defaultTitle.current) {\n window.document.title = defaultTitle.current;\n }\n });\n}\nfunction useHover(elementRef) {\n const [value, setValue] = useState(false);\n const handleMouseEnter = () => {\n setValue(true);\n };\n const handleMouseLeave = () => {\n setValue(false);\n };\n useEventListener(\"mouseenter\", handleMouseEnter, elementRef);\n useEventListener(\"mouseleave\", handleMouseLeave, elementRef);\n return value;\n}\nfunction useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = useState(null);\n const [state, setState] = useState(() => ({\n isIntersecting: initialIsIntersecting,\n entry: void 0\n }));\n const callbackRef = useRef();\n callbackRef.current = onChange;\n const frozen = ((_a = state.entry) == null ? void 0 : _a.isIntersecting) && freezeOnceVisible;\n useEffect(() => {\n if (!ref)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n if (frozen)\n return;\n let unobserve;\n const observer = new IntersectionObserver(\n (entries) => {\n const thresholds = Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n entries.forEach((entry) => {\n const isIntersecting = entry.isIntersecting && thresholds.some((threshold2) => entry.intersectionRatio >= threshold2);\n setState({ isIntersecting, entry });\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n });\n },\n { threshold, root, rootMargin }\n );\n observer.observe(ref);\n return () => {\n observer.disconnect();\n };\n }, [\n ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n root,\n rootMargin,\n frozen,\n freezeOnceVisible\n ]);\n const prevRef = useRef(null);\n useEffect(() => {\n var _a2;\n if (!ref && ((_a2 = state.entry) == null ? void 0 : _a2.target) && !freezeOnceVisible && !frozen && prevRef.current !== state.entry.target) {\n prevRef.current = state.entry.target;\n setState({ isIntersecting: initialIsIntersecting, entry: void 0 });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n const result = [\n setRef,\n !!state.isIntersecting,\n state.entry\n ];\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n return result;\n}\nfunction useIsClient() {\n const [isClient, setClient] = useState(false);\n useEffect(() => {\n setClient(true);\n }, []);\n return isClient;\n}\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return useCallback(() => isMounted.current, []);\n}\nfunction useMap(initialState = /* @__PURE__ */ new Map()) {\n const [map, setMap] = useState(new Map(initialState));\n const actions = {\n set: useCallback((key, value) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.set(key, value);\n return copy;\n });\n }, []),\n setAll: useCallback((entries) => {\n setMap(() => new Map(entries));\n }, []),\n remove: useCallback((key) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.delete(key);\n return copy;\n });\n }, []),\n reset: useCallback(() => {\n setMap(() => /* @__PURE__ */ new Map());\n }, [])\n };\n return [map, actions];\n}\n\n// src/useOnClickOutside/useOnClickOutside.ts\nfunction useOnClickOutside(ref, handler, eventType = \"mousedown\", eventListenerOptions = {}) {\n useEventListener(\n eventType,\n (event) => {\n const target = event.target;\n if (!target || !target.isConnected) {\n return;\n }\n const isOutside = Array.isArray(ref) ? ref.filter((r) => Boolean(r.current)).every((r) => r.current && !r.current.contains(target)) : ref.current && !ref.current.contains(target);\n if (isOutside) {\n handler(event);\n }\n },\n void 0,\n eventListenerOptions\n );\n}\nvar IS_SERVER3 = typeof window === \"undefined\";\nfunction useReadLocalStorage(key, options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER3) {\n initializeWithValue = false;\n }\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return null;\n }\n return parsed;\n },\n [options]\n );\n const readValue = useCallback(() => {\n if (IS_SERVER3) {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : null;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return null;\n }\n }, [key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return void 0;\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return storedValue;\n}\nvar initialSize = {\n width: void 0,\n height: void 0\n};\nfunction useResizeObserver(options) {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef({ ...initialSize });\n const onResize = useRef(void 0);\n onResize.current = options.onResize;\n useEffect(() => {\n if (!ref.current)\n return;\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window))\n return;\n const observer = new ResizeObserver(([entry]) => {\n const boxProp = box === \"border-box\" ? \"borderBoxSize\" : box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n const hasChanged = previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n if (hasChanged) {\n const newSize = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n observer.observe(ref.current, { box });\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n return { width, height };\n}\nfunction extractSize(entry, box, sizeType) {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return void 0;\n }\n return Array.isArray(entry[box]) ? entry[box][0][sizeType] : (\n // @ts-ignore Support Firefox's non-standard behavior\n entry[box][sizeType]\n );\n}\nvar IS_SERVER4 = typeof window === \"undefined\";\nfunction useScreen(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER4) {\n initializeWithValue = false;\n }\n const readScreen = () => {\n if (IS_SERVER4) {\n return void 0;\n }\n return window.screen;\n };\n const [screen, setScreen] = useState(() => {\n if (initializeWithValue) {\n return readScreen();\n }\n return void 0;\n });\n const debouncedSetScreen = useDebounceCallback(\n setScreen,\n options.debounceDelay\n );\n function handleSize() {\n const newScreen = readScreen();\n const setSize = options.debounceDelay ? debouncedSetScreen : setScreen;\n if (newScreen) {\n const {\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n } = newScreen;\n setSize({\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n });\n }\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return screen;\n}\nvar cachedScriptStatuses = /* @__PURE__ */ new Map();\nfunction getScriptNode(src) {\n const node = document.querySelector(\n `script[src=\"${src}\"]`\n );\n const status = node == null ? void 0 : node.getAttribute(\"data-status\");\n return {\n node,\n status\n };\n}\nfunction useScript(src, options) {\n const [status, setStatus] = useState(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return \"idle\";\n }\n if (typeof window === \"undefined\") {\n return \"loading\";\n }\n return cachedScriptStatuses.get(src) ?? \"loading\";\n });\n useEffect(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return;\n }\n const cachedScriptStatus = cachedScriptStatuses.get(src);\n if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n setStatus(cachedScriptStatus);\n return;\n }\n const script = getScriptNode(src);\n let scriptNode = script.node;\n if (!scriptNode) {\n scriptNode = document.createElement(\"script\");\n scriptNode.src = src;\n scriptNode.async = true;\n if (options == null ? void 0 : options.id) {\n scriptNode.id = options.id;\n }\n scriptNode.setAttribute(\"data-status\", \"loading\");\n document.body.appendChild(scriptNode);\n const setAttributeFromEvent = (event) => {\n const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n scriptNode == null ? void 0 : scriptNode.setAttribute(\"data-status\", scriptStatus);\n };\n scriptNode.addEventListener(\"load\", setAttributeFromEvent);\n scriptNode.addEventListener(\"error\", setAttributeFromEvent);\n } else {\n setStatus(script.status ?? cachedScriptStatus ?? \"loading\");\n }\n const setStateFromEvent = (event) => {\n const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n setStatus(newStatus);\n cachedScriptStatuses.set(src, newStatus);\n };\n scriptNode.addEventListener(\"load\", setStateFromEvent);\n scriptNode.addEventListener(\"error\", setStateFromEvent);\n return () => {\n if (scriptNode) {\n scriptNode.removeEventListener(\"load\", setStateFromEvent);\n scriptNode.removeEventListener(\"error\", setStateFromEvent);\n }\n if (scriptNode && (options == null ? void 0 : options.removeOnUnmount)) {\n scriptNode.remove();\n cachedScriptStatuses.delete(src);\n }\n };\n }, [src, options == null ? void 0 : options.shouldPreventLoad, options == null ? void 0 : options.removeOnUnmount, options == null ? void 0 : options.id]);\n return status;\n}\nvar IS_SERVER5 = typeof window === \"undefined\";\nfunction useScrollLock(options = {}) {\n const { autoLock = true, lockTarget, widthReflow = true } = options;\n const [isLocked, setIsLocked] = useState(false);\n const target = useRef(null);\n const originalStyle = useRef(null);\n const lock = () => {\n if (target.current) {\n const { overflow, paddingRight } = target.current.style;\n originalStyle.current = { overflow, paddingRight };\n if (widthReflow) {\n const offsetWidth = target.current === document.body ? window.innerWidth : target.current.offsetWidth;\n const currentPaddingRight = parseInt(window.getComputedStyle(target.current).paddingRight, 10) || 0;\n const scrollbarWidth = offsetWidth - target.current.scrollWidth;\n target.current.style.paddingRight = `${scrollbarWidth + currentPaddingRight}px`;\n }\n target.current.style.overflow = \"hidden\";\n setIsLocked(true);\n }\n };\n const unlock = () => {\n if (target.current && originalStyle.current) {\n target.current.style.overflow = originalStyle.current.overflow;\n if (widthReflow) {\n target.current.style.paddingRight = originalStyle.current.paddingRight;\n }\n }\n setIsLocked(false);\n };\n useIsomorphicLayoutEffect(() => {\n if (IS_SERVER5)\n return;\n if (lockTarget) {\n target.current = typeof lockTarget === \"string\" ? document.querySelector(lockTarget) : lockTarget;\n }\n if (!target.current) {\n target.current = document.body;\n }\n if (autoLock) {\n lock();\n }\n return () => {\n unlock();\n };\n }, [autoLock, lockTarget, widthReflow]);\n return { isLocked, lock, unlock };\n}\nvar IS_SERVER6 = typeof window === \"undefined\";\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER6) {\n return initialValueToUse;\n }\n try {\n const raw = window.sessionStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading sessionStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER6) {\n console.warn(\n `Tried setting sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.sessionStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting sessionStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER6) {\n console.warn(\n `Tried removing sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.sessionStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"session-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nfunction useStep(maxStep) {\n const [currentStep, setCurrentStep] = useState(1);\n const canGoToNextStep = currentStep + 1 <= maxStep;\n const canGoToPrevStep = currentStep - 1 > 0;\n const setStep = useCallback(\n (step) => {\n const newStep = step instanceof Function ? step(currentStep) : step;\n if (newStep >= 1 && newStep <= maxStep) {\n setCurrentStep(newStep);\n return;\n }\n throw new Error(\"Step not valid\");\n },\n [maxStep, currentStep]\n );\n const goToNextStep = useCallback(() => {\n if (canGoToNextStep) {\n setCurrentStep((step) => step + 1);\n }\n }, [canGoToNextStep]);\n const goToPrevStep = useCallback(() => {\n if (canGoToPrevStep) {\n setCurrentStep((step) => step - 1);\n }\n }, [canGoToPrevStep]);\n const reset = useCallback(() => {\n setCurrentStep(1);\n }, []);\n return [\n currentStep,\n {\n goToNextStep,\n goToPrevStep,\n canGoToNextStep,\n canGoToPrevStep,\n setStep,\n reset\n }\n ];\n}\n\n// src/useTernaryDarkMode/useTernaryDarkMode.ts\nvar COLOR_SCHEME_QUERY2 = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY2 = \"usehooks-ts-ternary-dark-mode\";\nfunction useTernaryDarkMode({\n defaultValue = \"system\",\n localStorageKey = LOCAL_STORAGE_KEY2,\n initializeWithValue = true\n} = {}) {\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY2, { initializeWithValue });\n const [mode, setMode] = useLocalStorage(localStorageKey, defaultValue, {\n initializeWithValue\n });\n const isDarkMode = mode === \"dark\" || mode === \"system\" && isDarkOS;\n const toggleTernaryDarkMode = () => {\n const modes = [\"light\", \"system\", \"dark\"];\n setMode((prevMode) => {\n const nextIndex = (modes.indexOf(prevMode) + 1) % modes.length;\n return modes[nextIndex];\n });\n };\n return {\n isDarkMode,\n ternaryDarkMode: mode,\n setTernaryDarkMode: setMode,\n toggleTernaryDarkMode\n };\n}\nfunction useTimeout(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n const id = setTimeout(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\nfunction useToggle(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return [value, toggle, setValue];\n}\nvar IS_SERVER7 = typeof window === \"undefined\";\nfunction useWindowSize(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER7) {\n initializeWithValue = false;\n }\n const [windowSize, setWindowSize] = useState(() => {\n if (initializeWithValue) {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n return {\n width: void 0,\n height: void 0\n };\n });\n const debouncedSetWindowSize = useDebounceCallback(\n setWindowSize,\n options.debounceDelay\n );\n function handleSize() {\n const setSize = options.debounceDelay ? debouncedSetWindowSize : setWindowSize;\n setSize({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return windowSize;\n}\n\nexport { useBoolean, useClickAnyWhere, useCopyToClipboard, useCountdown, useCounter, useDarkMode, useDebounceCallback, useDebounceValue, useDocumentTitle, useEventCallback, useEventListener, useHover, useIntersectionObserver, useInterval, useIsClient, useIsMounted, useIsomorphicLayoutEffect, useLocalStorage, useMap, useMediaQuery, useOnClickOutside, useReadLocalStorage, useResizeObserver, useScreen, useScript, useScrollLock, useSessionStorage, useStep, useTernaryDarkMode, useTimeout, useToggle, useUnmount, useWindowSize };\n","const formatValue = (value) => {\n if (Array.isArray(value)) {\n return `[${value.map(formatValue).join(\", \")}]`;\n }\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n if (value instanceof Date) {\n return `${value.getTime()}`;\n }\n return `${value}`;\n};\nconst pathWithArgsFilter = (name) => {\n const fn = (path, ...args) => {\n const formattedArgs = args.map(formatValue).join(\", \");\n const joiner = path && args.length ? \", \" : \"\";\n return `[${name}(${path}${joiner}${formattedArgs})]`;\n };\n return fn;\n};\nconst pathFilter = (name) => {\n const filterFn = pathWithArgsFilter(name);\n const fn = (path) => {\n return filterFn(path);\n };\n return fn;\n};\nconst argsFilter = (name) => {\n const filterFn = pathWithArgsFilter(name);\n const fn = (...args) => {\n return filterFn(\"\", ...args);\n };\n return fn;\n};\nconst filter = {\n /**\n * The `at` filter checks that the path matches the described value exactly.\n * It takes a single value for a field or an array (only for tags).\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#at}\n */\n at: pathWithArgsFilter(\"at\"),\n /**\n * The `not` filter checks that the path doesn't match the provided value\n * exactly. It takes a single value for a field or an array (only for tags).\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#not}\n */\n not: pathWithArgsFilter(\"not\"),\n /**\n * The `any` filter takes an array of values. It works exactly the same way as\n * the `at` operator, but checks whether the fragment matches any of the\n * values in the array.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#any}\n */\n any: pathWithArgsFilter(\"any\"),\n /**\n * The `in` filter is used specifically to retrieve an array of documents by\n * their IDs or UIDs. This filter is much more efficient at this than the any\n * filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#in}\n */\n in: pathWithArgsFilter(\"in\"),\n /**\n * The `fulltext` filter provides two capabilities:\n *\n * 1. Checking if a certain string is anywhere inside a document (this is what\n * you should use to make your project's search engine feature)\n * 2. Checking if the string is contained inside a specific custom type’s Rich\n * Text or Key Text fragment.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#fulltext}\n */\n fulltext: pathWithArgsFilter(\"fulltext\"),\n /**\n * The `has` filter checks whether a fragment has a value. It will return all\n * the documents of the specified type that contain a value for the specified\n * field.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#has}\n */\n has: pathFilter(\"has\"),\n /**\n * The `missing` filter checks if a fragment doesn't have a value. It will\n * return all the documents of the specified type that do not contain a value\n * for the specified field.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#missing}\n */\n missing: pathFilter(\"missing\"),\n /**\n * The `similar` filter takes the ID of a document, and returns a list of\n * documents with similar content. This allows you to build an automated\n * content discovery feature (for example, a \"Related posts\" section).\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#similar}\n */\n similar: argsFilter(\"similar\"),\n /**\n * The `geopoint.near` filter checks that the value in the path is within the\n * radius of the given coordinates.\n *\n * This filter will only work for a geopoint field.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#geopointnear}\n */\n geopointNear: pathWithArgsFilter(\"geopoint.near\"),\n /**\n * The `number.lt` filter checks that the value in the number field is less\n * than the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#numberlessthan}\n */\n numberLessThan: pathWithArgsFilter(\"number.lt\"),\n /**\n * The `number.gt` filter checks that the value in the number field is greater\n * than the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#numbergreaterthan}\n */\n numberGreaterThan: pathWithArgsFilter(\"number.gt\"),\n /**\n * The `number.inRange` filter checks that the value in the path is within the\n * two values passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#numberinrange}\n */\n numberInRange: pathWithArgsFilter(\"number.inRange\"),\n /**\n * The `date.after` filter checks that the value in the path is after the date\n * value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateAfter: pathWithArgsFilter(\"date.after\"),\n /**\n * The `date.before` filter checks that the value in the path is before the\n * date value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateBefore: pathWithArgsFilter(\"date.before\"),\n /**\n * The `date.between` filter checks that the value in the path is within the\n * date values passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateBetween: pathWithArgsFilter(\"date.between\"),\n /**\n * The `date.day-of-month` filter checks that the value in the path is equal\n * to the day of the month passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfMonth: pathWithArgsFilter(\"date.day-of-month\"),\n /**\n * The `date.day-of-month-after` filter checks that the value in the path is\n * after the day of the month passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfMonthAfter: pathWithArgsFilter(\"date.day-of-month-after\"),\n /**\n * The `date.day-of-month-before` filter checks that the value in the path is\n * before the day of the month passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfMonthBefore: pathWithArgsFilter(\"date.day-of-month-before\"),\n /**\n * The `date.day-of-week` filter checks that the value in the path is equal to\n * the day of the week passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfWeek: pathWithArgsFilter(\"date.day-of-week\"),\n /**\n * The `date.day-of-week-after` filter checks that the value in the path is\n * after the day of the week passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfWeekAfter: pathWithArgsFilter(\"date.day-of-week-after\"),\n /**\n * The date.day-of-week-before filter checks that the value in the path is\n * before the day of the week passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfWeekBefore: pathWithArgsFilter(\"date.day-of-week-before\"),\n /**\n * The `date.month` filter checks that the value in the path occurs in the\n * month value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateMonth: pathWithArgsFilter(\"date.month\"),\n /**\n * The `date.month-after` filter checks that the value in the path occurs in\n * any month after the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateMonthAfter: pathWithArgsFilter(\"date.month-after\"),\n /**\n * The `date.month-before` filter checks that the value in the path occurs in\n * any month before the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateMonthBefore: pathWithArgsFilter(\"date.month-before\"),\n /**\n * The `date.year` filter checks that the value in the path occurs in the year\n * value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateYear: pathWithArgsFilter(\"date.year\"),\n /**\n * The `date.hour` filter checks that the value in the path occurs within the\n * hour value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateHour: pathWithArgsFilter(\"date.hour\"),\n /**\n * The `date.hour-after` filter checks that the value in the path occurs after\n * the hour value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateHourAfter: pathWithArgsFilter(\"date.hour-after\"),\n /**\n * The `date.hour-before` filter checks that the value in the path occurs\n * before the hour value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateHourBefore: pathWithArgsFilter(\"date.hour-before\")\n};\nexport {\n filter\n};\n//# sourceMappingURL=filter.js.map\n","const castArray = (a) => {\n return Array.isArray(a) ? a : [a];\n};\nexport {\n castArray\n};\n//# sourceMappingURL=castArray.js.map\n","import { castArray } from \"./castArray.js\";\nconst appendFilters = (objWithFilters = {}, filters) => {\n return {\n ...objWithFilters,\n filters: [...objWithFilters.filters || [], ...castArray(filters)]\n };\n};\nexport {\n appendFilters\n};\n//# sourceMappingURL=appendFilters.js.map\n","const version = \"7.11.0\";\nexport {\n version\n};\n//# sourceMappingURL=package.json.js.map\n","import { version } from \"../package.json.js\";\nconst devMsg = (slug) => {\n return `https://prismic.dev/msg/client/v${version}/${slug}`;\n};\nexport {\n devMsg\n};\n//# sourceMappingURL=devMsg.js.map\n","import { filter } from \"../filter.js\";\nimport { castArray } from \"./castArray.js\";\nconst everyTagFilter = (tags) => {\n return filter.at(\"document.tags\", castArray(tags));\n};\nexport {\n everyTagFilter\n};\n//# sourceMappingURL=everyTagFilter.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nclass PrismicError extends Error {\n constructor(message = \"An invalid API response was returned\", url, response) {\n super(message);\n __publicField(this, \"url\");\n __publicField(this, \"response\");\n this.url = url;\n this.response = response;\n }\n}\nexport {\n PrismicError\n};\n//# sourceMappingURL=PrismicError.js.map\n","import { PrismicError } from \"../errors/PrismicError.js\";\nconst findRef = (refs, filter) => {\n const ref = refs.find((ref2) => filter(ref2));\n if (!ref) {\n throw new PrismicError(\"Ref could not be found.\", void 0, void 0);\n }\n return ref;\n};\nexport {\n findRef\n};\n//# sourceMappingURL=findRef.js.map\n","import { findRef } from \"./findRef.js\";\nconst findMasterRef = (refs) => {\n return findRef(refs, (ref) => ref.isMasterRef);\n};\nexport {\n findMasterRef\n};\n//# sourceMappingURL=findMasterRef.js.map\n","import { findRef } from \"./findRef.js\";\nconst findRefByID = (refs, id) => {\n return findRef(refs, (ref) => ref.id === id);\n};\nexport {\n findRefByID\n};\n//# sourceMappingURL=findRefByID.js.map\n","import { findRef } from \"./findRef.js\";\nconst findRefByLabel = (refs, label) => {\n return findRef(refs, (ref) => ref.label === label);\n};\nexport {\n findRefByLabel\n};\n//# sourceMappingURL=findRefByLabel.js.map\n","import { preview } from \"../cookie.js\";\nconst readValue = (value) => {\n return value.replace(/%3B/g, \";\");\n};\nconst getPreviewCookie = (cookieJar) => {\n const cookies = cookieJar.split(\"; \");\n let value;\n for (const cookie of cookies) {\n const parts = cookie.split(\"=\");\n const name = readValue(parts[0]).replace(/%3D/g, \"=\");\n if (name === preview) {\n value = readValue(parts.slice(1).join(\"=\"));\n break;\n }\n }\n return value;\n};\nexport {\n getPreviewCookie\n};\n//# sourceMappingURL=getPreviewCookie.js.map\n","import { filter } from \"../filter.js\";\nimport { castArray } from \"./castArray.js\";\nconst someTagsFilter = (tags) => {\n return filter.any(\"document.tags\", castArray(tags));\n};\nexport {\n someTagsFilter\n};\n//# sourceMappingURL=someTagsFilter.js.map\n","import { filter } from \"../filter.js\";\nconst typeFilter = (documentType) => {\n return filter.at(\"document.type\", documentType);\n};\nexport {\n typeFilter\n};\n//# sourceMappingURL=typeFilter.js.map\n","import { PrismicError } from \"./PrismicError.js\";\nclass ForbiddenError extends PrismicError {\n}\nexport {\n ForbiddenError\n};\n//# sourceMappingURL=ForbiddenError.js.map\n","import { PrismicError } from \"./PrismicError.js\";\nclass NotFoundError extends PrismicError {\n}\nexport {\n NotFoundError\n};\n//# sourceMappingURL=NotFoundError.js.map\n","import { PrismicError } from \"./PrismicError.js\";\nclass ParsingError extends PrismicError {\n}\nexport {\n ParsingError\n};\n//# sourceMappingURL=ParsingError.js.map\n","import { ForbiddenError } from \"./ForbiddenError.js\";\nclass PreviewTokenExpiredError extends ForbiddenError {\n}\nexport {\n PreviewTokenExpiredError\n};\n//# sourceMappingURL=PreviewTokenExpired.js.map\n","import { ForbiddenError } from \"./ForbiddenError.js\";\nclass RefExpiredError extends ForbiddenError {\n}\nexport {\n RefExpiredError\n};\n//# sourceMappingURL=RefExpiredError.js.map\n","import { ForbiddenError } from \"./ForbiddenError.js\";\nclass RefNotFoundError extends ForbiddenError {\n}\nexport {\n RefNotFoundError\n};\n//# sourceMappingURL=RefNotFoundError.js.map\n","import { NotFoundError } from \"./NotFoundError.js\";\nclass RepositoryNotFoundError extends NotFoundError {\n}\nexport {\n RepositoryNotFoundError\n};\n//# sourceMappingURL=RepositoryNotFoundError.js.map\n","const LinkType = {\n Any: \"Any\",\n Document: \"Document\",\n Media: \"Media\",\n Web: \"Web\"\n};\nexport {\n LinkType\n};\n//# sourceMappingURL=link.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { pLimit } from \"./lib/pLimit.js\";\nimport { PrismicError } from \"./errors/PrismicError.js\";\nconst UNKNOWN_RATE_LIMIT_DELAY = 1500;\nclass BaseClient {\n constructor(options) {\n /**\n * The function used to make network requests to the Prismic REST API. In\n * environments where a global `fetch` function does not exist, such as\n * Node.js, this function must be provided.\n */\n __publicField(this, \"fetchFn\");\n __publicField(this, \"fetchOptions\");\n /**\n * Active queued `fetch()` jobs keyed by URL and AbortSignal (if it exists).\n */\n __publicField(this, \"queuedFetchJobs\", {});\n /**\n * Active deduped `fetch()` jobs keyed by URL and AbortSignal (if it exists).\n */\n __publicField(this, \"dedupedFetchJobs\", {});\n this.fetchOptions = options.fetchOptions;\n if (typeof options.fetch === \"function\") {\n this.fetchFn = options.fetch;\n } else if (typeof globalThis.fetch === \"function\") {\n this.fetchFn = globalThis.fetch;\n } else {\n throw new PrismicError(\"A valid fetch implementation was not provided. In environments where fetch is not available (including Node.js), a fetch implementation must be provided via a polyfill or the `fetch` option.\", void 0, void 0);\n }\n if (this.fetchFn === globalThis.fetch) {\n this.fetchFn = this.fetchFn.bind(globalThis);\n }\n }\n async fetch(url, params = {}) {\n var _a, _b, _c, _d, _e;\n const requestInit = {\n ...this.fetchOptions,\n ...params.fetchOptions,\n headers: {\n ...(_a = this.fetchOptions) == null ? void 0 : _a.headers,\n ...(_b = params.fetchOptions) == null ? void 0 : _b.headers\n },\n signal: ((_c = params.fetchOptions) == null ? void 0 : _c.signal) || params.signal || ((_d = this.fetchOptions) == null ? void 0 : _d.signal)\n };\n if ((_e = params.fetchOptions) == null ? void 0 : _e.body) {\n return this.queueFetch(url, requestInit);\n } else {\n return this.dedupeFetch(url, requestInit);\n }\n }\n queueFetch(url, requestInit = {}) {\n const hostname = new URL(url).hostname;\n if (!this.queuedFetchJobs[hostname]) {\n this.queuedFetchJobs[hostname] = pLimit({\n interval: UNKNOWN_RATE_LIMIT_DELAY\n });\n }\n return this.queuedFetchJobs[hostname](() => this.createFetchJob(url, requestInit));\n }\n dedupeFetch(url, requestInit = {}) {\n let job;\n if (this.dedupedFetchJobs[url] && this.dedupedFetchJobs[url].has(requestInit.signal)) {\n job = this.dedupedFetchJobs[url].get(requestInit.signal);\n } else {\n this.dedupedFetchJobs[url] = this.dedupedFetchJobs[url] || /* @__PURE__ */ new Map();\n job = this.createFetchJob(url, requestInit).finally(() => {\n var _a, _b;\n (_a = this.dedupedFetchJobs[url]) == null ? void 0 : _a.delete(requestInit.signal);\n if (((_b = this.dedupedFetchJobs[url]) == null ? void 0 : _b.size) === 0) {\n delete this.dedupedFetchJobs[url];\n }\n });\n this.dedupedFetchJobs[url].set(requestInit.signal, job);\n }\n return job;\n }\n createFetchJob(url, requestInit = {}) {\n return this.fetchFn(url, requestInit).then(async (res) => {\n let json = void 0;\n let text = void 0;\n if (res.ok) {\n try {\n json = await res.json();\n } catch {\n }\n } else {\n try {\n text = await res.text();\n json = JSON.parse(text);\n } catch {\n }\n }\n return {\n status: res.status,\n headers: res.headers,\n json,\n text\n };\n });\n }\n}\nexport {\n BaseClient,\n UNKNOWN_RATE_LIMIT_DELAY\n};\n//# sourceMappingURL=BaseClient.js.map\n","const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst pLimit = ({ interval } = {}) => {\n const queue = [];\n let busy = false;\n let lastCompletion = 0;\n const resumeNext = () => {\n var _a;\n if (!busy && queue.length > 0) {\n (_a = queue.shift()) == null ? void 0 : _a();\n busy = true;\n }\n };\n const next = () => {\n busy = false;\n resumeNext();\n };\n const run = async (function_, resolve, arguments_) => {\n const timeSinceLastCompletion = Date.now() - lastCompletion;\n if (interval && timeSinceLastCompletion < interval) {\n await sleep(interval - timeSinceLastCompletion);\n }\n const result = (async () => function_(...arguments_))();\n resolve(result);\n try {\n await result;\n } catch {\n }\n lastCompletion = Date.now();\n next();\n };\n const enqueue = (function_, resolve, arguments_) => {\n new Promise((internalResolve) => {\n queue.push(internalResolve);\n }).then(run.bind(void 0, function_, resolve, arguments_));\n (async () => {\n await Promise.resolve();\n if (!busy) {\n resumeNext();\n }\n })();\n };\n return (function_, ...arguments_) => new Promise((resolve) => {\n enqueue(function_, resolve, arguments_);\n });\n};\nexport {\n pLimit\n};\n//# sourceMappingURL=pLimit.js.map\n","import { castArray } from \"./lib/castArray.js\";\nimport { devMsg } from \"./lib/devMsg.js\";\nimport { version } from \"./package.json.js\";\nconst PRISMIC_DEV_PARAM = \"x-d\";\nconst PRISMIC_CLIENT_VERSION_PARAM = \"x-c\";\nconst RENAMED_PARAMS = {\n accessToken: \"access_token\"\n};\nconst castOrderingToString = (ordering) => {\n if (typeof ordering === \"string\") {\n if (process.env.NODE_ENV === \"development\") {\n const [field, direction] = ordering.split(\" \");\n const objectForm = direction === \"desc\" ? `{ field: \"${field}\", direction: \"desc\" }` : `{ field: \"${field}\" }`;\n console.warn(`[@prismicio/client] A string value was provided to the \\`orderings\\` query parameter. Strings are deprecated. Please convert it to the object form: ${objectForm}. For more details, see ${devMsg(\"orderings-must-be-an-array-of-objects\")}`);\n }\n return ordering;\n }\n return ordering.direction === \"desc\" ? `${ordering.field} desc` : ordering.field;\n};\nconst buildQueryURL = (endpoint, args) => {\n const { filters, predicates, ...params } = args;\n const url = new URL(`documents/search`, `${endpoint}/`);\n if (filters) {\n if (process.env.NODE_ENV === \"development\" && !Array.isArray(filters)) {\n console.warn(`[@prismicio/client] A non-array value was provided to the \\`filters\\` query parameter (\\`${filters}\\`). Non-array values are deprecated. Please convert it to an array. For more details, see ${devMsg(\"filters-must-be-an-array\")}`);\n }\n for (const filter of castArray(filters)) {\n url.searchParams.append(\"q\", `[${filter}]`);\n }\n }\n if (predicates) {\n for (const predicate of castArray(predicates)) {\n url.searchParams.append(\"q\", `[${predicate}]`);\n }\n }\n for (const k in params) {\n const name = RENAMED_PARAMS[k] || k;\n let value = params[k];\n if (name === \"orderings\") {\n const scopedValue = params[name];\n if (scopedValue != null) {\n if (process.env.NODE_ENV === \"development\" && typeof scopedValue === \"string\") {\n console.warn(`[@prismicio/client] A string value was provided to the \\`orderings\\` query parameter. Strings are deprecated. Please convert it to an array of objects. For more details, see ${devMsg(\"orderings-must-be-an-array-of-objects\")}`);\n }\n const v = castArray(scopedValue).map((ordering) => castOrderingToString(ordering)).join(\",\");\n value = `[${v}]`;\n }\n } else if (name === \"routes\") {\n if (typeof params[name] === \"object\") {\n value = JSON.stringify(castArray(params[name]));\n }\n }\n if (value != null) {\n url.searchParams.set(name, castArray(value).join(\",\"));\n }\n }\n url.searchParams.set(PRISMIC_CLIENT_VERSION_PARAM, `js-${version}`);\n if (process.env.NODE_ENV === \"development\") {\n url.searchParams.set(PRISMIC_DEV_PARAM, \"1\");\n }\n return url.toString();\n};\nexport {\n buildQueryURL\n};\n//# sourceMappingURL=buildQueryURL.js.map\n","const isRepositoryEndpoint = (input) => {\n try {\n new URL(input);\n return true;\n } catch {\n return false;\n }\n};\nexport {\n isRepositoryEndpoint\n};\n//# sourceMappingURL=isRepositoryEndpoint.js.map\n","var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar _repositoryName;\nimport { appendFilters } from \"./lib/appendFilters.js\";\nimport { castThunk } from \"./lib/castThunk.js\";\nimport { devMsg } from \"./lib/devMsg.js\";\nimport { everyTagFilter } from \"./lib/everyTagFilter.js\";\nimport { findMasterRef } from \"./lib/findMasterRef.js\";\nimport { findRefByID } from \"./lib/findRefByID.js\";\nimport { findRefByLabel } from \"./lib/findRefByLabel.js\";\nimport { getPreviewCookie } from \"./lib/getPreviewCookie.js\";\nimport { minifyGraphQLQuery } from \"./lib/minifyGraphQLQuery.js\";\nimport { someTagsFilter } from \"./lib/someTagsFilter.js\";\nimport { typeFilter } from \"./lib/typeFilter.js\";\nimport { ForbiddenError } from \"./errors/ForbiddenError.js\";\nimport { NotFoundError } from \"./errors/NotFoundError.js\";\nimport { ParsingError } from \"./errors/ParsingError.js\";\nimport { PreviewTokenExpiredError } from \"./errors/PreviewTokenExpired.js\";\nimport { PrismicError } from \"./errors/PrismicError.js\";\nimport { RefExpiredError } from \"./errors/RefExpiredError.js\";\nimport { RefNotFoundError } from \"./errors/RefNotFoundError.js\";\nimport { RepositoryNotFoundError } from \"./errors/RepositoryNotFoundError.js\";\nimport { asLink } from \"./helpers/asLink.js\";\nimport { BaseClient } from \"./BaseClient.js\";\nimport { buildQueryURL } from \"./buildQueryURL.js\";\nimport { filter } from \"./filter.js\";\nimport { getRepositoryEndpoint } from \"./getRepositoryEndpoint.js\";\nimport { getRepositoryName } from \"./getRepositoryName.js\";\nimport { isRepositoryEndpoint } from \"./isRepositoryEndpoint.js\";\nconst MAX_PAGE_SIZE = 100;\nconst REPOSITORY_CACHE_TTL = 5e3;\nconst GET_ALL_QUERY_DELAY = 500;\nconst DEFUALT_RETRY_AFTER_MS = 1e3;\nvar RefStateMode;\n(function(RefStateMode2) {\n RefStateMode2[\"Master\"] = \"Master\";\n RefStateMode2[\"ReleaseID\"] = \"ReleaseID\";\n RefStateMode2[\"ReleaseLabel\"] = \"ReleaseLabel\";\n RefStateMode2[\"Manual\"] = \"Manual\";\n})(RefStateMode || (RefStateMode = {}));\nclass Client extends BaseClient {\n /**\n * Creates a Prismic client that can be used to query a repository.\n *\n * If used in an environment where a global `fetch` function is unavailable,\n * such as in some Node.js versions, the `fetch` option must be provided as\n * part of the `options` parameter.\n *\n * @param repositoryNameOrEndpoint - The Prismic repository name or full Rest\n * API V2 endpoint for the repository.\n * @param options - Configuration that determines how content will be queried\n * from the Prismic repository.\n *\n * @returns A client that can query content from the repository.\n */\n constructor(repositoryNameOrEndpoint, options = {}) {\n super(options);\n __privateAdd(this, _repositoryName);\n /**\n * The Prismic REST API V2 endpoint for the repository (use\n * `prismic.getRepositoryEndpoint` for the default endpoint).\n */\n __publicField(this, \"documentAPIEndpoint\");\n /**\n * The secure token for accessing the API (only needed if your repository is\n * set to private).\n *\n * {@link https://user-guides.prismic.io/en/articles/1036153-generating-an-access-token}\n */\n __publicField(this, \"accessToken\");\n /**\n * A list of route resolver objects that define how a document's `url` field\n * is resolved.\n *\n * {@link https://prismic.io/docs/route-resolver}\n */\n __publicField(this, \"routes\");\n /**\n * The `brokenRoute` option allows you to define the route populated in the\n * `url` property for broken link or content relationship fields. A broken\n * link is a link or content relationship field whose linked document has been\n * unpublished or deleted.\n *\n * {@link https://prismic.io/docs/route-resolver}\n */\n __publicField(this, \"brokenRoute\");\n /**\n * Default parameters that will be sent with each query. These parameters can\n * be overridden on each query if needed.\n */\n __publicField(this, \"defaultParams\");\n /**\n * The client's ref mode state. This determines which ref is used during\n * queries.\n */\n __publicField(this, \"refState\", {\n mode: RefStateMode.Master,\n autoPreviewsEnabled: true\n });\n /**\n * Cached repository value.\n */\n __publicField(this, \"cachedRepository\");\n /**\n * Timestamp at which the cached repository data is considered stale.\n */\n __publicField(this, \"cachedRepositoryExpiration\", 0);\n if ((options.documentAPIEndpoint || isRepositoryEndpoint(repositoryNameOrEndpoint)) && process.env.NODE_ENV === \"development\") {\n const documentAPIEndpoint = options.documentAPIEndpoint || repositoryNameOrEndpoint;\n if (/\\.prismic\\.io\\/(?!api\\/v2\\/?)/i.test(documentAPIEndpoint)) {\n throw new PrismicError(\"@prismicio/client only supports Prismic Rest API V2. Please provide only the repository name to the first createClient() parameter or use the getRepositoryEndpoint() helper to generate a valid Rest API V2 endpoint URL.\", void 0, void 0);\n }\n const hostname = new URL(documentAPIEndpoint).hostname.toLowerCase();\n if (hostname.endsWith(\".prismic.io\") && !hostname.endsWith(\".cdn.prismic.io\")) {\n console.warn(`[@prismicio/client] The client was created with a non-CDN endpoint. Convert it to the CDN endpoint for better performance. For more details, see ${devMsg(\"endpoint-must-use-cdn\")}`);\n }\n if (options.documentAPIEndpoint && isRepositoryEndpoint(repositoryNameOrEndpoint) && repositoryNameOrEndpoint !== options.documentAPIEndpoint) {\n console.warn(`[@prismicio/client] Multiple incompatible endpoints were provided. Create the client using a repository name to prevent this error. For more details, see ${devMsg(\"prefer-repository-name\")}`);\n }\n }\n if (isRepositoryEndpoint(repositoryNameOrEndpoint)) {\n this.documentAPIEndpoint = repositoryNameOrEndpoint;\n try {\n this.repositoryName = getRepositoryName(repositoryNameOrEndpoint);\n } catch (error) {\n console.warn(`[@prismicio/client] A repository name could not be inferred from the provided endpoint (\\`${repositoryNameOrEndpoint}\\`). Some methods will be disabled. Create the client using a repository name to prevent this warning. For more details, see ${devMsg(\"prefer-repository-name\")}`);\n }\n } else {\n this.documentAPIEndpoint = options.documentAPIEndpoint || getRepositoryEndpoint(repositoryNameOrEndpoint);\n this.repositoryName = repositoryNameOrEndpoint;\n }\n this.accessToken = options.accessToken;\n this.routes = options.routes;\n this.brokenRoute = options.brokenRoute;\n this.defaultParams = options.defaultParams;\n if (options.ref) {\n this.queryContentFromRef(options.ref);\n }\n this.graphQLFetch = this.graphQLFetch.bind(this);\n }\n /**\n * The Prismic repository's name.\n */\n set repositoryName(value) {\n __privateSet(this, _repositoryName, value);\n }\n /**\n * The Prismic repository's name.\n */\n get repositoryName() {\n if (!__privateGet(this, _repositoryName)) {\n throw new PrismicError(`A repository name is required for this method but one could not be inferred from the provided API endpoint (\\`${this.documentAPIEndpoint}\\`). To fix this error, provide a repository name when creating the client. For more details, see ${devMsg(\"prefer-repository-name\")}`, void 0, void 0);\n }\n return __privateGet(this, _repositoryName);\n }\n /**\n * The Prismic REST API V2 endpoint for the repository (use\n * `prismic.getRepositoryEndpoint` for the default endpoint).\n *\n * @deprecated Use `documentAPIEndpoint` instead.\n */\n // TODO: Remove in v8.\n set endpoint(value) {\n this.documentAPIEndpoint = value;\n }\n /**\n * The Prismic REST API V2 endpoint for the repository (use\n * `prismic.getRepositoryEndpoint` for the default endpoint).\n *\n * @deprecated Use `documentAPIEndpoint` instead.\n */\n // TODO: Remove in v8.\n get endpoint() {\n return this.documentAPIEndpoint;\n }\n /**\n * Enables the client to automatically query content from a preview session if\n * one is active in browser environments. This is enabled by default in the\n * browser.\n *\n * For server environments, use `enableAutoPreviewsFromReq`.\n *\n * @example\n *\n * ```ts\n * client.enableAutoPreviews()\n * ```\n *\n * @see enableAutoPreviewsFromReq\n */\n enableAutoPreviews() {\n this.refState.autoPreviewsEnabled = true;\n }\n /**\n * Enables the client to automatically query content from a preview session if\n * one is active in server environments. This is disabled by default on the\n * server.\n *\n * For browser environments, use `enableAutoPreviews`.\n *\n * @example\n *\n * ```ts\n * // In an express app\n * app.get(\"/\", function (req, res) {\n * \tclient.enableAutoPreviewsFromReq(req)\n * })\n * ```\n *\n * @param req - An HTTP server request object containing the request's\n * cookies.\n */\n enableAutoPreviewsFromReq(req) {\n this.refState.httpRequest = req;\n this.refState.autoPreviewsEnabled = true;\n }\n /**\n * Disables the client from automatically querying content from a preview\n * session if one is active.\n *\n * Automatic preview content querying is enabled by default unless this method\n * is called.\n *\n * @example\n *\n * ```ts\n * client.disableAutoPreviews()\n * ```\n */\n disableAutoPreviews() {\n this.refState.autoPreviewsEnabled = false;\n }\n /**\n * Queries content from the Prismic repository.\n *\n * @example\n *\n * ```ts\n * const response = await client.get()\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param params - Parameters to filter, sort, and paginate results.\n *\n * @returns A paginated response containing the result of the query.\n */\n async get(params) {\n const url = await this.buildQueryURL(params);\n return await this.fetch(url, params);\n }\n /**\n * Queries content from the Prismic repository and returns only the first\n * result, if any.\n *\n * @example\n *\n * ```ts\n * const document = await client.getFirst()\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param params - Parameters to filter, sort, and paginate results. @returns\n * The first result of the query, if any.\n */\n async getFirst(params) {\n var _a;\n const actualParams = { ...params };\n if (!(params && params.page) && !(params == null ? void 0 : params.pageSize)) {\n actualParams.pageSize = ((_a = this.defaultParams) == null ? void 0 : _a.pageSize) ?? 1;\n }\n const url = await this.buildQueryURL(actualParams);\n const result = await this.fetch(url, params);\n const firstResult = result.results[0];\n if (firstResult) {\n return firstResult;\n }\n throw new NotFoundError(\"No documents were returned\", url, void 0);\n }\n /**\n * **IMPORTANT**: Avoid using `dangerouslyGetAll` as it may be slower and\n * require more resources than other methods. Prefer using other methods that\n * filter by filters such as `getAllByType`.\n *\n * Queries content from the Prismic repository and returns all matching\n * content. If no filters are provided, all documents will be fetched.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.dangerouslyGetAll()\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param params - Parameters to filter, sort, and paginate results.\n *\n * @returns A list of documents matching the query.\n */\n async dangerouslyGetAll(params = {}) {\n var _a;\n const { limit = Infinity, ...actualParams } = params;\n const resolvedParams = {\n ...actualParams,\n pageSize: Math.min(limit, actualParams.pageSize || ((_a = this.defaultParams) == null ? void 0 : _a.pageSize) || MAX_PAGE_SIZE)\n };\n const documents = [];\n let latestResult;\n while ((!latestResult || latestResult.next_page) && documents.length < limit) {\n const page = latestResult ? latestResult.page + 1 : void 0;\n latestResult = await this.get({ ...resolvedParams, page });\n documents.push(...latestResult.results);\n if (latestResult.next_page) {\n await new Promise((res) => setTimeout(res, GET_ALL_QUERY_DELAY));\n }\n }\n return documents.slice(0, limit);\n }\n /**\n * Queries a document from the Prismic repository with a specific ID.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @typeParam TDocument- Type of the Prismic document returned.\n *\n * @param id - ID of the document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns The document with an ID matching the `id` parameter, if a matching\n * document exists.\n */\n async getByID(id, params) {\n return await this.getFirst(appendFilters(params, filter.at(\"document.id\", id)));\n }\n /**\n * Queries documents from the Prismic repository with specific IDs.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByIDs([\n * \t\"WW4bKScAAMAqmluX\",\n * \t\"U1kTRgEAAC8A5ldS\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param ids - A list of document IDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with IDs matching the\n * `ids` parameter.\n */\n async getByIDs(ids, params) {\n return await this.get(appendFilters(params, filter.in(\"document.id\", ids)));\n }\n /**\n * Queries all documents from the Prismic repository with specific IDs.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByIDs([\n * \t\"WW4bKScAAMAqmluX\",\n * \t\"U1kTRgEAAC8A5ldS\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param ids - A list of document IDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of documents with IDs matching the `ids` parameter.\n */\n async getAllByIDs(ids, params) {\n return await this.dangerouslyGetAll(appendFilters(params, filter.in(\"document.id\", ids)));\n }\n /**\n * Queries a document from the Prismic repository with a specific UID and\n * custom type.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const document = await client.getByUID(\"blog_post\", \"my-first-post\")\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param documentType - The API ID of the document's custom type.\n * @param uid - UID of the document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns The document with a UID matching the `uid` parameter, if a\n * matching document exists.\n */\n async getByUID(documentType, uid, params) {\n return await this.getFirst(appendFilters(params, [\n typeFilter(documentType),\n filter.at(`my.${documentType}.uid`, uid)\n ]));\n }\n /**\n * Queries document from the Prismic repository with specific UIDs and Custom\n * Type.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const document = await client.getByUIDs(\"blog_post\", [\n * \t\"my-first-post\",\n * \t\"my-second-post\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param documentType - The API ID of the document's custom type.\n * @param uids - A list of document UIDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with UIDs matching the\n * `uids` parameter.\n */\n async getByUIDs(documentType, uids, params) {\n return await this.get(appendFilters(params, [\n typeFilter(documentType),\n filter.in(`my.${documentType}.uid`, uids)\n ]));\n }\n /**\n * Queries all documents from the Prismic repository with specific UIDs and\n * custom type.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByUIDs([\n * \t\"my-first-post\",\n * \t\"my-second-post\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param documentType - The API ID of the document's custom type.\n * @param uids - A list of document UIDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of documents with UIDs matching the `uids` parameter.\n */\n async getAllByUIDs(documentType, uids, params) {\n return await this.dangerouslyGetAll(appendFilters(params, [\n typeFilter(documentType),\n filter.in(`my.${documentType}.uid`, uids)\n ]));\n }\n /**\n * Queries a singleton document from the Prismic repository for a specific\n * custom type.\n *\n * @remarks\n * A singleton document is one that is configured in Prismic to only allow one\n * instance. For example, a repository may be configured to contain just one\n * Settings document. This is in contrast to a repeatable custom type which\n * allows multiple instances of itself.\n *\n * @example\n *\n * ```ts\n * const document = await client.getSingle(\"settings\")\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param documentType - The API ID of the singleton custom type.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns The singleton document for the custom type, if a matching document\n * exists.\n */\n async getSingle(documentType, params) {\n return await this.getFirst(appendFilters(params, typeFilter(documentType)));\n }\n /**\n * Queries documents from the Prismic repository for a specific custom type.\n *\n * Use `getAllByType` instead if you need to query all documents for a\n * specific custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByType(\"blog_post\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param documentType - The API ID of the custom type.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents of the custom type.\n */\n async getByType(documentType, params) {\n return await this.get(appendFilters(params, typeFilter(documentType)));\n }\n /**\n * Queries all documents from the Prismic repository for a specific Custom\n * Type.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByType(\"blog_post\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param documentType - The API ID of the custom type.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents of the custom type.\n */\n async getAllByType(documentType, params) {\n return await this.dangerouslyGetAll(appendFilters(params, typeFilter(documentType)));\n }\n /**\n * Queries documents from the Prismic repository with a specific tag.\n *\n * Use `getAllByTag` instead if you need to query all documents with a\n * specific tag.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByTag(\"food\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tag - The tag that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with the tag.\n */\n async getByTag(tag, params) {\n return await this.get(appendFilters(params, someTagsFilter(tag)));\n }\n /**\n * Queries all documents from the Prismic repository with a specific tag.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByTag(\"food\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tag - The tag that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents with the tag.\n */\n async getAllByTag(tag, params) {\n return await this.dangerouslyGetAll(appendFilters(params, someTagsFilter(tag)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with all of the queried tags to be included.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByEveryTag([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with the tags.\n */\n async getByEveryTag(tags, params) {\n return await this.get(appendFilters(params, everyTagFilter(tags)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with all of the queried tags to be included.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByEveryTag([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents with the tags.\n */\n async getAllByEveryTag(tags, params) {\n return await this.dangerouslyGetAll(appendFilters(params, everyTagFilter(tags)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with at least one of the queried tags to be\n * included.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByEveryTag([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with at least one of the\n * tags.\n */\n async getBySomeTags(tags, params) {\n return await this.get(appendFilters(params, someTagsFilter(tags)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with at least one of the queried tags to be\n * included.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllBySomeTags([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents with at least one of the tags.\n */\n async getAllBySomeTags(tags, params) {\n return await this.dangerouslyGetAll(appendFilters(params, someTagsFilter(tags)));\n }\n /**\n * Returns metadata about the Prismic repository, such as its refs, releases,\n * and custom types.\n *\n * @returns Repository metadata.\n */\n async getRepository(params) {\n const url = new URL(this.documentAPIEndpoint);\n if (this.accessToken) {\n url.searchParams.set(\"access_token\", this.accessToken);\n }\n return await this.fetch(url.toString(), params);\n }\n /**\n * Returns a list of all refs for the Prismic repository.\n *\n * Refs are used to identify which version of the repository's content should\n * be queried. All repositories will have at least one ref pointing to the\n * latest published content called the \"master ref\".\n *\n * @returns A list of all refs for the Prismic repository.\n */\n async getRefs(params) {\n const repository = await this.getRepository(params);\n return repository.refs;\n }\n /**\n * Returns a ref for the Prismic repository with a matching ID.\n *\n * @param id - ID of the ref.\n *\n * @returns The ref with a matching ID, if it exists.\n */\n async getRefByID(id, params) {\n const refs = await this.getRefs(params);\n return findRefByID(refs, id);\n }\n /**\n * Returns a ref for the Prismic repository with a matching label.\n *\n * @param label - Label of the ref.\n *\n * @returns The ref with a matching label, if it exists.\n */\n async getRefByLabel(label, params) {\n const refs = await this.getRefs(params);\n return findRefByLabel(refs, label);\n }\n /**\n * Returns the master ref for the Prismic repository. The master ref points to\n * the repository's latest published content.\n *\n * @returns The repository's master ref.\n */\n async getMasterRef(params) {\n const refs = await this.getRefs(params);\n return findMasterRef(refs);\n }\n /**\n * Returns a list of all Releases for the Prismic repository. Releases are\n * used to group content changes before publishing.\n *\n * @returns A list of all Releases for the Prismic repository.\n */\n async getReleases(params) {\n const refs = await this.getRefs(params);\n return refs.filter((ref) => !ref.isMasterRef);\n }\n /**\n * Returns a Release for the Prismic repository with a matching ID.\n *\n * @param id - ID of the Release.\n *\n * @returns The Release with a matching ID, if it exists.\n */\n async getReleaseByID(id, params) {\n const releases = await this.getReleases(params);\n return findRefByID(releases, id);\n }\n /**\n * Returns a Release for the Prismic repository with a matching label.\n *\n * @param label - Label of the ref.\n *\n * @returns The ref with a matching label, if it exists.\n */\n async getReleaseByLabel(label, params) {\n const releases = await this.getReleases(params);\n return findRefByLabel(releases, label);\n }\n /**\n * Returns a list of all tags used in the Prismic repository.\n *\n * @returns A list of all tags used in the repository.\n */\n async getTags(params) {\n try {\n const tagsForm = await this.getCachedRepositoryForm(\"tags\", params);\n const url = new URL(tagsForm.action);\n if (this.accessToken) {\n url.searchParams.set(\"access_token\", this.accessToken);\n }\n return await this.fetch(url.toString(), params);\n } catch {\n const repository = await this.getRepository(params);\n return repository.tags;\n }\n }\n /**\n * Builds a URL used to query content from the Prismic repository.\n *\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A URL string that can be requested to query content.\n */\n async buildQueryURL({ signal, fetchOptions, ...params } = {}) {\n const ref = params.ref || await this.getResolvedRefString({ signal, fetchOptions });\n const integrationFieldsRef = params.integrationFieldsRef || (await this.getCachedRepository({ signal, fetchOptions })).integrationFieldsRef || void 0;\n return buildQueryURL(this.documentAPIEndpoint, {\n ...this.defaultParams,\n ...params,\n ref,\n integrationFieldsRef,\n routes: params.routes || this.routes,\n brokenRoute: params.brokenRoute || this.brokenRoute,\n accessToken: params.accessToken || this.accessToken\n });\n }\n /**\n * Determines the URL for a previewed document during an active preview\n * session. The result of this method should be used to redirect the user to\n * the document's URL.\n *\n * @example\n *\n * ```ts\n * \tconst url = client.resolvePreviewURL({\n * \tlinkResolver: (document) => `/${document.uid}`\n * \tdefaultURL: '/'\n * \t})\n * ```\n *\n * @param args - Arguments to configure the URL resolving.\n *\n * @returns The URL for the previewed document during an active preview\n * session. The user should be redirected to this URL.\n */\n async resolvePreviewURL(args) {\n var _a, _b;\n let documentID = args.documentID;\n let previewToken = args.previewToken;\n if (typeof globalThis.location !== \"undefined\") {\n const searchParams = new URLSearchParams(globalThis.location.search);\n documentID = documentID || searchParams.get(\"documentId\");\n previewToken = previewToken || searchParams.get(\"token\");\n } else if (this.refState.httpRequest) {\n if (\"query\" in this.refState.httpRequest) {\n documentID = documentID || ((_a = this.refState.httpRequest.query) == null ? void 0 : _a.documentId);\n previewToken = previewToken || ((_b = this.refState.httpRequest.query) == null ? void 0 : _b.token);\n } else if (\"url\" in this.refState.httpRequest && this.refState.httpRequest.url) {\n const searchParams = new URL(this.refState.httpRequest.url, \"missing-host://\").searchParams;\n documentID = documentID || searchParams.get(\"documentId\");\n previewToken = previewToken || searchParams.get(\"token\");\n }\n }\n if (documentID != null && previewToken != null) {\n const document = await this.getByID(documentID, {\n ref: previewToken,\n lang: \"*\",\n signal: args.signal,\n fetchOptions: args.fetchOptions\n });\n const url = asLink(document, { linkResolver: args.linkResolver });\n if (typeof url === \"string\") {\n return url;\n }\n }\n return args.defaultURL;\n }\n /**\n * Configures the client to query the latest published content for all future\n * queries.\n *\n * If the `ref` parameter is provided during a query, it takes priority for\n * that query.\n *\n * @example\n *\n * ```ts\n * await client.queryLatestContent()\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n */\n queryLatestContent() {\n this.refState.mode = RefStateMode.Master;\n }\n /**\n * Configures the client to query content from a specific Release identified\n * by its ID for all future queries.\n *\n * If the `ref` parameter is provided during a query, it takes priority for\n * that query.\n *\n * @example\n *\n * ```ts\n * await client.queryContentFromReleaseByID(\"YLB7OBAAACMA7Cpa\")\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @param releaseID - The ID of the Release.\n */\n queryContentFromReleaseByID(releaseID) {\n this.refState = {\n ...this.refState,\n mode: RefStateMode.ReleaseID,\n releaseID\n };\n }\n /**\n * Configures the client to query content from a specific Release identified\n * by its label for all future queries.\n *\n * If the `ref` parameter is provided during a query, it takes priority for\n * that query.\n *\n * @example\n *\n * ```ts\n * await client.queryContentFromReleaseByLabel(\"My Release\")\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @param releaseLabel - The label of the Release.\n */\n queryContentFromReleaseByLabel(releaseLabel) {\n this.refState = {\n ...this.refState,\n mode: RefStateMode.ReleaseLabel,\n releaseLabel\n };\n }\n /**\n * Configures the client to query content from a specific ref. The ref can be\n * provided as a string or a function.\n *\n * If a function is provided, the ref is fetched lazily before each query. The\n * function may also be asynchronous.\n *\n * @example\n *\n * ```ts\n * await client.queryContentFromRef(\"my-ref\")\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @param ref - The ref or a function that returns the ref from which to query\n * content.\n */\n queryContentFromRef(ref) {\n this.refState = {\n ...this.refState,\n mode: RefStateMode.Manual,\n ref\n };\n }\n /**\n * A `fetch()` function to be used with GraphQL clients configured for\n * Prismic's GraphQL API. It automatically applies the necessary `prismic-ref`\n * and Authorization headers. Queries will automatically be minified by\n * removing whitespace where possible.\n *\n * @example\n *\n * ```ts\n * const graphQLClient = new ApolloClient({\n * \tlink: new HttpLink({\n * \t\turi: prismic.getGraphQLEndpoint(repositoryName),\n * \t\t// Provide `client.graphQLFetch` as the fetch implementation.\n * \t\tfetch: client.graphQLFetch,\n * \t\t// Using GET is required.\n * \t\tuseGETForQueries: true,\n * \t}),\n * \tcache: new InMemoryCache(),\n * })\n * ```\n *\n * @param input - The `fetch()` `input` parameter. Only strings are supported.\n * @param init - The `fetch()` `init` parameter. Only plain objects are\n * supported.\n *\n * @returns The `fetch()` Response for the request.\n *\n * @experimental\n */\n async graphQLFetch(input, init) {\n const cachedRepository = await this.getCachedRepository();\n const ref = await this.getResolvedRefString();\n const unsanitizedHeaders = {\n \"Prismic-ref\": ref,\n Authorization: this.accessToken ? `Token ${this.accessToken}` : \"\",\n // Asserting `init.headers` is a Record since popular GraphQL\n // libraries pass this as a Record. Header objects as input\n // are unsupported.\n ...init ? init.headers : {}\n };\n if (cachedRepository.integrationFieldsRef) {\n unsanitizedHeaders[\"Prismic-integration-field-ref\"] = cachedRepository.integrationFieldsRef;\n }\n const headers = {};\n for (const key in unsanitizedHeaders) {\n if (unsanitizedHeaders[key]) {\n headers[key.toLowerCase()] = unsanitizedHeaders[key];\n }\n }\n const url = new URL(\n // Asserting `input` is a string since popular GraphQL\n // libraries pass this as a string. Request objects as\n // input are unsupported.\n input\n );\n url.searchParams.set(\"ref\", ref);\n const query = url.searchParams.get(\"query\");\n if (query) {\n url.searchParams.set(\n \"query\",\n // Compress the GraphQL query (if it exists) by\n // removing whitespace. This is done to\n // optimize the query size and avoid\n // hitting the upper limit of GET requests\n // (2048 characters).\n minifyGraphQLQuery(query)\n );\n }\n return await this.fetchFn(url.toString(), {\n ...init,\n headers\n });\n }\n /**\n * Returns a cached version of `getRepository` with a TTL.\n *\n * @returns Cached repository metadata.\n */\n async getCachedRepository(params) {\n if (!this.cachedRepository || Date.now() >= this.cachedRepositoryExpiration) {\n this.cachedRepositoryExpiration = Date.now() + REPOSITORY_CACHE_TTL;\n this.cachedRepository = await this.getRepository(params);\n }\n return this.cachedRepository;\n }\n /**\n * Returns a cached Prismic repository form. Forms are used to determine API\n * endpoints for types of repository data.\n *\n * @param name - Name of the form.\n *\n * @returns The repository form.\n *\n * @throws If a matching form cannot be found.\n */\n async getCachedRepositoryForm(name, params) {\n const cachedRepository = await this.getCachedRepository(params);\n const form = cachedRepository.forms[name];\n if (!form) {\n throw new PrismicError(`Form with name \"${name}\" could not be found`, void 0, void 0);\n }\n return form;\n }\n /**\n * Returns the ref needed to query based on the client's current state. This\n * method may make a network request to fetch a ref or resolve the user's ref\n * thunk.\n *\n * If auto previews are enabled, the preview ref takes priority if available.\n *\n * The following strategies are used depending on the client's state:\n *\n * - If the user called `queryLatestContent`: Use the repository's master ref.\n * The ref is cached for 5 seconds. After 5 seconds, a new master ref is\n * fetched.\n * - If the user called `queryContentFromReleaseByID`: Use the release's ref.\n * The ref is cached for 5 seconds. After 5 seconds, a new ref for the\n * release is fetched.\n * - If the user called `queryContentFromReleaseByLabel`: Use the release's ref.\n * The ref is cached for 5 seconds. After 5 seconds, a new ref for the\n * release is fetched.\n * - If the user called `queryContentFromRef`: Use the provided ref. Fall back\n * to the master ref if the ref is not a string.\n *\n * @returns The ref to use during a query.\n */\n async getResolvedRefString(params) {\n var _a, _b;\n if (this.refState.autoPreviewsEnabled) {\n let previewRef;\n let cookieJar;\n if ((_a = this.refState.httpRequest) == null ? void 0 : _a.headers) {\n if (\"get\" in this.refState.httpRequest.headers && typeof this.refState.httpRequest.headers.get === \"function\") {\n cookieJar = this.refState.httpRequest.headers.get(\"cookie\");\n } else if (\"cookie\" in this.refState.httpRequest.headers) {\n cookieJar = this.refState.httpRequest.headers.cookie;\n }\n } else if ((_b = globalThis.document) == null ? void 0 : _b.cookie) {\n cookieJar = globalThis.document.cookie;\n }\n if (cookieJar) {\n previewRef = getPreviewCookie(cookieJar);\n }\n if (previewRef) {\n return previewRef;\n }\n }\n const cachedRepository = await this.getCachedRepository(params);\n const refModeType = this.refState.mode;\n if (refModeType === RefStateMode.ReleaseID) {\n return findRefByID(cachedRepository.refs, this.refState.releaseID).ref;\n } else if (refModeType === RefStateMode.ReleaseLabel) {\n return findRefByLabel(cachedRepository.refs, this.refState.releaseLabel).ref;\n } else if (refModeType === RefStateMode.Manual) {\n const res = await castThunk(this.refState.ref)();\n if (typeof res === \"string\") {\n return res;\n }\n }\n return findMasterRef(cachedRepository.refs).ref;\n }\n /**\n * Performs a network request using the configured `fetch` function. It\n * assumes all successful responses will have a JSON content type. It also\n * normalizes unsuccessful network requests.\n *\n * @typeParam T - The JSON response.\n *\n * @param url - URL to the resource to fetch.\n * @param params - Prismic REST API parameters for the network request.\n *\n * @returns The JSON response from the network request.\n */\n async fetch(url, params = {}) {\n const res = await super.fetch(url, params);\n if (res.status !== 404 && res.status !== 429 && res.json == null) {\n throw new PrismicError(void 0, url, res.json || res.text);\n }\n switch (res.status) {\n case 200:\n case 201: {\n return res.json;\n }\n case 400: {\n throw new ParsingError(res.json.message, url, res.json);\n }\n case 401:\n case 403: {\n throw new ForbiddenError(res.json.error || res.json.message, url, res.json);\n }\n case 404: {\n if (res.json === void 0) {\n throw new RepositoryNotFoundError(`Prismic repository not found. Check that \"${this.documentAPIEndpoint}\" is pointing to the correct repository.`, url, url.startsWith(this.documentAPIEndpoint) ? void 0 : res.text);\n }\n if (res.json.type === \"api_notfound_error\") {\n throw new RefNotFoundError(res.json.message, url, res.json);\n }\n if (res.json.type === \"api_security_error\" && /preview token.*expired/i.test(res.json.message)) {\n throw new PreviewTokenExpiredError(res.json.message, url, res.json);\n }\n throw new NotFoundError(res.json.message, url, res.json);\n }\n case 410: {\n throw new RefExpiredError(res.json.message, url, res.json);\n }\n case 429: {\n const parsedRetryAfter = Number(res.headers.get(\"retry-after\"));\n const delay = Number.isNaN(parsedRetryAfter) ? DEFUALT_RETRY_AFTER_MS : parsedRetryAfter;\n return await new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n resolve(await this.fetch(url, params));\n } catch (error) {\n reject(error);\n }\n }, delay);\n });\n }\n }\n throw new PrismicError(void 0, url, res.json);\n }\n}\n_repositoryName = new WeakMap();\nexport {\n Client,\n GET_ALL_QUERY_DELAY,\n REPOSITORY_CACHE_TTL\n};\n//# sourceMappingURL=Client.js.map\n","import { Client } from \"./Client.js\";\nconst createClient = (repositoryNameOrEndpoint, options) => new Client(repositoryNameOrEndpoint, options);\nexport {\n createClient\n};\n//# sourceMappingURL=createClient.js.map\n","import { asText as asText$1 } from \"../richtext/asText.js\";\nconst asText = (richTextField, ...configObjectOrTuple) => {\n if (richTextField) {\n const [configObjectOrSeparator] = configObjectOrTuple;\n let config;\n if (typeof configObjectOrSeparator === \"string\") {\n config = {\n separator: configObjectOrSeparator\n };\n } else {\n config = { ...configObjectOrSeparator };\n }\n return asText$1(richTextField, config.separator);\n } else {\n return null;\n }\n};\nexport {\n asText\n};\n//# sourceMappingURL=asText.js.map\n","const asText = (richTextField, separator = \" \") => {\n let result = \"\";\n for (let i = 0; i < richTextField.length; i++) {\n if (\"text\" in richTextField[i]) {\n result += (result ? separator : \"\") + richTextField[i].text;\n }\n }\n return result;\n};\nexport {\n asText\n};\n//# sourceMappingURL=asText.js.map\n",null,null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M6.82422 4.26953C6.82422 3.16496 7.71965 2.26953 8.82422 2.26953H14.8242C15.9288 2.26953 16.8242 3.16496 16.8242 4.26953V14.2695C16.8242 15.3741 15.9288 16.2695 14.8242 16.2695H8.82422C7.71965 16.2695 6.82422 15.3741 6.82422 14.2695V4.26953ZM4.82422 6.26955C4.82422 5.52926 5.22642 4.88292 5.82422 4.53711V14.7695C5.82422 16.1503 6.94351 17.2695 8.32422 17.2695H14.5567C14.2108 17.8673 13.5645 18.2695 12.8242 18.2695H8.32422C6.39122 18.2695 4.82422 16.7025 4.82422 14.7695V6.26955Z' fill='%23A1A6B2'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='40' height='41' viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_1829_8153)'%3e%3crect y='0.5' width='40' height='40' rx='20' fill='url(%23paint0_linear_1829_8153)'/%3e%3cg filter='url(%23filter0_d_1829_8153)'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.0528 33.4436C12.873 33.5507 12.6389 33.501 12.5207 33.3307L12.0681 32.6785C11.9499 32.5082 11.9896 32.2776 12.1554 32.1508C13.6462 31.0107 14.8716 29.7257 15.8353 28.3493C19.4237 23.2245 19.4237 16.7755 15.8353 11.6507C14.8716 10.2744 13.6462 8.98932 12.1554 7.84924C11.9896 7.72244 11.9499 7.49181 12.0681 7.32152L12.5207 6.66926C12.6389 6.49897 12.873 6.44931 13.0528 6.55641L33.1584 18.5353C34.2805 19.2038 34.2805 20.7962 33.1584 21.4647L13.0528 33.4436Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cfilter id='filter0_d_1829_8153' x='1.26226' y='0.23632' width='43.4755' height='48.4755' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e%3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e%3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e%3cfeOffset dy='4.47406'/%3e%3cfeGaussianBlur stdDeviation='5.36887'/%3e%3cfeComposite in2='hardAlpha' operator='out'/%3e%3cfeColorMatrix type='matrix' values='0 0 0 0 0.207843 0 0 0 0 0.407843 0 0 0 0 0.866667 0 0 0 0.5 0'/%3e%3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_1829_8153'/%3e%3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_1829_8153' result='shape'/%3e%3c/filter%3e%3clinearGradient id='paint0_linear_1829_8153' x1='40' y1='13.6947' x2='6.19608e-07' y2='13.6948' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='%233568DD'/%3e%3cstop offset='1' stop-color='%237DA3F9'/%3e%3c/linearGradient%3e%3cclipPath id='clip0_1829_8153'%3e%3crect y='0.5' width='40' height='40' rx='20' fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='20' height='21' viewBox='0 0 20 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.75 17.9956C13.1642 17.9956 13.5 17.6598 13.5 17.2456C13.5 16.8314 13.1642 16.4956 12.75 16.4956H6.5C5.39543 16.4956 4.5 15.6002 4.5 14.4956V6.49561C4.5 5.39104 5.39543 4.49561 6.5 4.49561H12.75C13.1642 4.49561 13.5 4.15982 13.5 3.74561C13.5 3.33139 13.1642 2.99561 12.75 2.99561H6.5C4.567 2.99561 3 4.56261 3 6.49561V14.4956C3 16.4286 4.567 17.9956 6.5 17.9956H12.75ZM13.7413 6.69451C14.0457 6.41355 14.5201 6.43253 14.8011 6.7369L17.8011 9.9869C18.0663 10.2742 18.0663 10.717 17.8011 11.0043L14.8011 14.2543C14.5201 14.5587 14.0457 14.5777 13.7413 14.2967C13.4369 14.0158 13.4179 13.5413 13.6989 13.2369L15.537 11.2456H7.75C7.33579 11.2456 7 10.9098 7 10.4956C7 10.0814 7.33579 9.74561 7.75 9.74561H15.537L13.6989 7.75432C13.4179 7.44995 13.4369 6.97546 13.7413 6.69451Z' fill='%23ff6767'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M4.2097 4.3871L4.29289 4.29289C4.65338 3.93241 5.22061 3.90468 5.6129 4.2097L5.70711 4.29289L12 10.585L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.415 12L19.7071 18.2929C20.0676 18.6534 20.0953 19.2206 19.7903 19.6129L19.7071 19.7071C19.3466 20.0676 18.7794 20.0953 18.3871 19.7903L18.2929 19.7071L12 13.415L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.585 12L4.29289 5.70711C3.93241 5.34662 3.90468 4.77939 4.2097 4.3871L4.29289 4.29289L4.2097 4.3871Z' fill='%23A1A6B2'/%3e%3c/svg%3e\";\n export default img;",null,null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='82' height='81' fill='none'%3e%3cg filter='url(%23a)'%3e%3crect width='64.636' height='64.636' x='8.682' y='4' fill='white' rx='32.318'/%3e%3cpath fill='url(%23b)' fill-rule='evenodd' d='M28.12 58.956a.648.648 0 0 1-.872-.19l-.743-1.095a.658.658 0 0 1 .143-.886c2.447-1.915 4.458-4.072 6.04-6.383 5.888-8.605 5.888-19.434 0-28.04-1.582-2.31-3.593-4.468-6.04-6.382a.658.658 0 0 1-.143-.886l.743-1.095a.647.647 0 0 1 .873-.19l32.995 20.114c1.842 1.122 1.842 3.796 0 4.919L28.121 58.956Z' clip-rule='evenodd'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='b' x1='62.497' x2='26.393' y1='28.669' y2='28.669' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='%233568DD'/%3e%3cstop offset='1' stop-color='%237DA3F9'/%3e%3c/linearGradient%3e%3cfilter id='a' width='80.636' height='80.636' x='.682' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3e%3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e%3cfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3e%3cfeOffset dy='4'/%3e%3cfeGaussianBlur stdDeviation='4'/%3e%3cfeColorMatrix values='0 0 0 0 0.184314 0 0 0 0 0.168627 0 0 0 0 0.262745 0 0 0 0.1 0'/%3e%3cfeBlend in2='BackgroundImageFix' result='effect1_dropShadow_98_149'/%3e%3cfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3e%3cfeOffset/%3e%3cfeGaussianBlur stdDeviation='.5'/%3e%3cfeComposite in2='hardAlpha' operator='out'/%3e%3cfeColorMatrix values='0 0 0 0 0.760784 0 0 0 0 0.772549 0 0 0 0 0.8 0 0 0 1 0'/%3e%3cfeBlend in2='effect1_dropShadow_98_149' result='effect2_dropShadow_98_149'/%3e%3cfeBlend in='SourceGraphic' in2='effect2_dropShadow_98_149' result='shape'/%3e%3c/filter%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='17' fill='none'%3e%3cpath stroke='%239B9CA5' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 12.636 4-4-4-4'/%3e%3c/svg%3e\";\n export default img;",null,null,null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 24 24'%3e %3cpath fill='%233b82f6' d='M4.913 7.519c3.915-3.831 10.26-3.831 14.174 0l.471.461a.483.483 0 0 1 0 .694l-1.611 1.577a.252.252 0 0 1-.354 0l-.649-.634c-2.73-2.673-7.157-2.673-9.887 0l-.694.68a.255.255 0 0 1-.355 0L4.397 8.719a.482.482 0 0 1 0-.693l.516-.507Zm17.506 3.263l1.434 1.404a.483.483 0 0 1 0 .694l-6.466 6.331a.508.508 0 0 1-.709 0l-4.588-4.493a.126.126 0 0 0-.178 0l-4.589 4.493a.508.508 0 0 1-.709 0L.147 12.88a.483.483 0 0 1 0-.694l1.434-1.404a.508.508 0 0 1 .709 0l4.589 4.493c.05.048.129.048.178 0l4.589-4.493a.508.508 0 0 1 .709 0l4.589 4.493c.05.048.128.048.178 0l4.589-4.493a.507.507 0 0 1 .708 0Z'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 256 240'%3e %3cpath fill='%23E17726' d='M250.066 0L140.219 81.279l20.427-47.9z'/%3e %3cpath fill='%23E27625' d='m6.191.096l89.181 33.289l19.396 48.528zM205.86 172.858l48.551.924l-16.968 57.642l-59.243-16.311zm-155.721 0l27.557 42.255l-59.143 16.312l-16.865-57.643z'/%3e%3cpath fill='%23E27625' d='m112.131 69.552l1.984 64.083l-59.371-2.701l16.888-25.478l.214-.245zm31.123-.715l40.9 36.376l.212.244l16.888 25.478l-59.358 2.7zM79.435 173.044l32.418 25.259l-37.658 18.181zm97.136-.004l5.131 43.445l-37.553-18.184z'/%3e%3cpath fill='%23D5BFB2' d='m144.978 195.922l38.107 18.452l-35.447 16.846l.368-11.134zm-33.967.008l-2.909 23.974l.239 11.303l-35.53-16.833z'/%3e%3cpath fill='%23233447' d='m100.007 141.999l9.958 20.928l-33.903-9.932zm55.985.002l24.058 10.994l-34.014 9.929z'/%3e%3cpath fill='%23CC6228' d='m82.026 172.83l-5.48 45.04l-29.373-44.055zm91.95.001l34.854.984l-29.483 44.057zm28.136-44.444l-25.365 25.851l-19.557-8.937l-9.363 19.684l-6.138-33.849zm-148.237 0l60.435 2.749l-6.139 33.849l-9.365-19.681l-19.453 8.935z'/%3e%3cpath fill='%23E27525' d='m52.166 123.082l28.698 29.121l.994 28.749zm151.697-.052l-29.746 57.973l1.12-28.8zm-90.956 1.826l1.155 7.27l2.854 18.111l-1.835 55.625l-8.675-44.685l-.003-.462zm30.171-.101l6.521 35.96l-.003.462l-8.697 44.797l-.344-11.205l-1.357-44.862z'/%3e%3cpath fill='%23F5841F' d='m177.788 151.046l-.971 24.978l-30.274 23.587l-6.12-4.324l6.86-35.335zm-99.471 0l30.399 8.906l6.86 35.335l-6.12 4.324l-30.275-23.589z'/%3e%3cpath fill='%23C0AC9D' d='m67.018 208.858l38.732 18.352l-.164-7.837l3.241-2.845h38.334l3.358 2.835l-.248 7.831l38.487-18.29l-18.728 15.476l-22.645 15.553h-38.869l-22.63-15.617z'/%3e%3cpath fill='%23161616' d='m142.204 193.479l5.476 3.869l3.209 25.604l-4.644-3.921h-36.476l-4.556 4l3.104-25.681l5.478-3.871z'/%3e%3cpath fill='%23763E1A' d='M242.814 2.25L256 41.807l-8.235 39.997l5.864 4.523l-7.935 6.054l5.964 4.606l-7.897 7.191l4.848 3.511l-12.866 15.026l-52.77-15.365l-.457-.245l-38.027-32.078zm-229.628 0l98.326 72.777l-38.028 32.078l-.457.245l-52.77 15.365l-12.866-15.026l4.844-3.508l-7.892-7.194l5.952-4.601l-8.054-6.071l6.085-4.526L0 41.809z'/%3e%3cpath fill='%23F5841F' d='m180.392 103.99l55.913 16.279l18.165 55.986h-47.924l-33.02.416l24.014-46.808zm-104.784 0l-17.151 25.873l24.017 46.808l-33.005-.416H1.631l18.063-55.985zm87.776-70.878l-15.639 42.239l-3.319 57.06l-1.27 17.885l-.101 45.688h-30.111l-.098-45.602l-1.274-17.986l-3.32-57.045l-15.637-42.239z'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='48' height='49' viewBox='0 0 48 49' fill='none' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect width='48' height='48' rx='24' transform='matrix(-1 0 0 1 48 0.636719)' fill='url(%23pattern0_3364_10509)'/%3e%3cdefs%3e%3cpattern id='pattern0_3364_10509' patternContentUnits='objectBoundingBox' width='1' height='1'%3e%3cuse xlink:href='%23image0_3364_10509' transform='scale(0.0025)'/%3e%3c/pattern%3e%3cimage id='image0_3364_10509' width='400' height='400' xlink:href='data:image/png%3bbase64%2ciVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAIAAAAP3aGbAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABkKADAAQAAAABAAABkAAAAAAbMW/MAAAWPElEQVR4Ae3dO6wdx3nAcVKiSOoRlmFhFpFSWQhr0XWoxk0EMJVUsVCQKoRTCCmsyikCB4ghV4ELqzIrE4hqMbWp1gSkKkzDFGJjgBBlkuIje3Up3nsPz2N3dma%2bmXN%2bgRGfx%2b7OnN%2b3%2buPcS0Y5/tM3/3TM/xAgQKAHgZd62KQ9EiBAYE9AsNwHBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCJ7rZqY1GCLx%2b5vjZcy%2b99eOX3zhz/LUzxyO2YM09gevXHt65/YSFYLkHFgWGSP3k3VfOXzhx/p0TQ60W3/a8usDvPrmvVvvqglX97mt4wSFSQ6ouXjo5NKvhbe7W1oZaXf3k/m595tWfVrBW2%2bzSO0OqPvin08P/3qUP3cFnVauFIblBF0B27unwZeqDK6f/7vKpnfvkzX9gtXpxRIL1oskOvTJ8pfrZL1/zi6oGR65WS4ciWEtZduLF9y6f%2bvDjV3fio/b2IdVq1cQEa5XMlr8%2b/Bj4/pXTW/4h%2b/x4arVmbv7Qeg3O1r6lVs2OVq3Wj0aw1vts4btq1exQ1WrjaARrI9FWHaBWzY5TrcaMRrDGKG3JMWrV7CDVauRoBGskVPeHqVWzI1Sr8aMRrPFWHR%2bpVs0OT60mjUawJnF1ebBaNTs2tZo6GsGaKtbZ8WrV7MDUKmE0gpWA1s0patXsqNQqbTSClebWwVlq1eyQ1Cp5NIKVTNf0iWrV7HjUas5oBGuOXqPnqlWjgzl2TK1mjkawZgI2d7paNTeSHzakVj9IpP%2b3YKXbNXimWjU4lP0tqVWW0QhWFsYmLqJWTYxh2SbUaplKymuClaLW4Dlq1eBQ9rekVhlHI1gZMcMupVZh9JsWVqtNQtPeF6xpXg0erVYNDmV/S2qVfTSClZ206gXVqir3lMXUaorW2GMFa6xUg8epVYND2d%2bSWhUajWAVgi1%2bWbUqTpy6gFqlym0%2bT7A2GzV4hFo1OJT9LalV0dEIVlHeIhdXqyKsOS6qVjkU111DsNbpNPieWjU4lP0tqVWF0QhWBeRsS6hVNsrcF1Kr3KLLrydYy10afFWtGhzK/pbUqtpoBKsa9ayF1GoWX8mT1aqk7uK1BWtRpMHnatXgUPa3pFaVRyNYlcEnL6dWk8lqnaBWtaQP1hGsA4sGH6lVg0PZ35JahYxGsELYRy2qVqOYIg5Sqwj1vTUFK0p%2bw7pqtQEo7m21irMXrED71Uur1Wqb4HfUKnYAvmHF%2bi9ZXa2WoLTxklqFz0GwwkdwZANqdYSjpSdq1cI0BKuFKTzbg1o1NIyjW1Grox5hzwQrjH5hYbVaAGnnqVq1MwvBamIWatXEGJZtQq2WqYS9Jlhh9M8XVqvnFK09UKvWJiJYwRNRq%2bABrF5erVbbhL0jWGH0w8JqFam/dm21WssT9qZghdGrVRj9poXVapNQ2PuCFUOvVjHuI1ZVqxFIYYcIVgC9WgWgj1tSrcY5hR0lWLXp1aq2%2bOj11Go0VdiBglWVXq2qck9ZTK2maIUdeyJs5d1buFytvr795NZXj%2b/dfbp7qHk%2b8a0vH3/26YM813KVkgKCVVL30LVL1OqPNx598fl3n197KFWHpD3cZgHBqjHd7LUavlL96qNvb954VGP31iDQjIBgFR9F9loNP7/84h/v3bn9pPjWLUCgMQHBKjuQErX6l/e/8TNg2bG5eqsC/pSw4GSy12r4SXD4bqVWBWfm0m0LCFap%2bWSv1bDRq7%2b%2b7yfBUgNz3R4EBKvIlErUavh6df33D4ts10UJdCIgWPkHVaJWwy6Hr1f59%2bqKBLoSEKzM4ypUq2GXw9%2b6yrxXlyPQm4Bg5ZxYuVoNf5XBb69yjsq1%2bhQQrGxzK1erYYvf%2bD%2b7yTYoF%2bpYQLDyDK9orYYt3vk/f000z6RcpWsBwcowvtK1yrBFlyCwFQKCNXeMajVX0PkERgsI1miqZQeq1TIVrxEoJSBY6bJqlW7nTAJJAoKVxOb/Q1ciW6Onnb/g3wLQ6GgWtiVYCyCjnvpuNYqpn4MuXjr5s1%2b%2b1s9%2bd3engjV59mo1mayHEy7%2bvWZ1MCfBmjYktZrm1dXRmtX%2buARrwozUagJWn4dqVuNzE6yxA1KrsVKdH6dZLQ9QsEZNR61GMW3LQZrV7CQFa/No1Gqz0dYdoVltjlSwNsxFrTYAbe/bmtXgbAVr3VDUap3ODrynWa0NWbBWTkStVtLs0hua1dS0BWv5ONRquctOvqpZ7YxdsJbMQq2WoOz2S5rVyPwFa3EQarUo4vn3AprVwo0gWEem8N7lU%2b9fOX3kJU8I/CCgWT9IhP23YB3Qnz330ocfv3rw3CMCLwho1gskVV8QrAPu4YfBgyceEVghoFkrYGq8LFjPlIevV3976WQNcmv0L6BZUTMUrGfyvl5F3YKdrqtZIYMTrGfsf/OOf0luyB3Y8aKaVX94grVn/tbbLw8/EtbXt2LvAppVeYL%2bKd0D/8sfcah8423PcppVc5b%2bQd3THr5h1US31pYJaFa1gQpWNWoLbbOAZtWZrmDVcbbK9gtoVoUZC9Ye8p3bTypYW2LrBTSr9IgFa0/41lePS0O7/o4IaFbRQQvWHu%2btLx/fu/u0KLSL746AZpWbtWA9s/3D59%2bVU3blXRPQrEITF6xnsNevPSxE7LK7KaBZJeYuWM9Ub954NPynBLFr7qyAZmUfvWAdkP7mX/988MQjAjkENCuH4sE1BOvAYvjVu2YdcHiUSUCzMkHuXUawjmB%2b9tsH//17v8w6YuLJfAHNmm%2b4fwXBWpT8j4%2b%2b1axFFM9nC2jWbMK9CwjWEkbNWoLipdkCmjWbULBWEGrWChgvzxLQrFl8vmGt4dOsNTjeShbQrGS64UQ/Eq7T06x1Ot5LFdCsVDnB2iSnWZuEvJ8ioFkpar5hjVHTrDFKjpkqoFlTxYbj/Ug4Ck2zRjE5aKKAZk0EE6zRYJo1msqBEwQ0awKWb1iTsDRrEpeDRwpo1kio4TA/Eo632jtSs6Z5OXqcgGaNcxKskU6HDtOsQxgeZhPQrDGUvmGNUVo8RrMWRTzPIaBZGxUFayPR8gM0a7mLV%2bcJaNZ6P8Fa77PuXc1ap%2bO9VAHNWiMnWGtwNr%2blWZuNHDFdQLNWmQnWKpmxr2vWWCnHTRHQrKVagrWUZdqLmjXNy9HjBIZmvXf51Lhjd%2bUowcozac3K4%2bgqRwU%2b/PjVt95%2b%2behrO/1MsLKNX7OyUbrQIYF/%2bPmrh57t%2bkPBynkHaFZOTdf6XuD8hRPDf2DsCwhW5jtBszKDutyxYxcvncSwLyBY%2be8EzcpvuttX/Mm7r%2bw2wMGnF6wDi4yPNCsjpku9fub4X/vV%2b/f3gWCV%2bsdBs0rJ7uR1/%2brH/qxwb/CCVfD216yCuDt26bPn/KO6N3IKZW98zSrr6%2bo7JiBYxQeuWcWJLbAzAoJVY9SaVUN5q9f4368eb/XnG/vhBGus1MzjNGsm4I6ffuf2kx0X2P/4glXvNtCsetbbtdLXt5/8z5e%2bYe0NVbCq3tqaVZV7Wxa7%2bcWjbfkocz%2bHYM0VnHq%2bZk0Vc/zvPrkPYV9AsALuBM0KQO92yevXHvoF1vPpCdZziqoPNKsqd7eL3bv71Nerw9MTrMMaVR9rVlXuPhcbauXr1eHRCdZhjdqPNau2eFfrDbX67NMHXW25%2bGYFqzjx%2bgU0a73Pzr471Oqq37W/MH7BeoGk%2bguaVZ289QXVatWEBGuVTNXXNasqd9uLqdWa%2bQjWGpyqb2lWVe5WF1Or9ZMRrPU%2bVd/VrKrc7S2mVhtnIlgbiaoeoFlVuVtaTK3GTEOwxihVPUazqnK3sZhajZyDYI2EqnqYZlXljl5MrcZPQLDGW1U9UrOqcsctplaT7AVrElfVgzWrKnfEYmo1VV2wpopVPV6zqnLXXUytErxPJJzjlJoCQ7P2ljtec01rFRdQqzRiwUpzq3rW0KzzF0yqqnnRxdQqmdePhMl0VU%2b8ecO/JLcqeLnF1GqOrWDN0XMugWkCajXN64WjBesFEi8QKCOgVvNdBWu%2boSsQ2CygVpuNRhwhWCOQHEJgnoBazfM7OFuwDiw82lmBsz8q%2bA%2bCWmW8rwrOKeMuXYpAUYHXz5T6e25qlXdwgpXX09X6Ezh77qW33n65xL7VKruqYGUndcHOBM6/U%2bQv5apViftAsEqoumZPAu9fOZ19u2qVnXT/goJVCNZl%2bxC4eOnk8CNh3r2qVV7Pw1fLPKrDl/aYQOMCQ6qyf71Sq6JDF6yivC7ersDwJ4M//8/X8369UqvS8xas0sKu36LA0Kl/u/pG3j8cVKsKky7y5yMV9m0JAskCF9595Z///bW8f/dKrZLHMelEwZrE5eCOBYZCvXvp5FCr7P9yMbWqdlsIVjXqWQu9d/nUm2X%2bcuOsbXVy8ht/cXzQy/vrqucfXa2eU1R4IFgVkOcu8cGV09n/MGvunpz/vYBaVb4R/NK9Mvjk5dRqMlmtE9SqlvTBOoJ1YNHgI7VqcCj7W1KrkNEIVgj7qEXVahRTxEFqFaG%2bt6ZgRclvWFetNgDFva1WcfaCFWi/emm1Wm0T/I5axQ7AN6xY/yWrq9USlDZeUqvwOQhW%2bAiObECtjnC09EStWpiGYLUwhWd7UKuGhnF0K2p11CPsmWCF0S8srFYLIO08Vat2ZiFYTcxCrZoYw7JNqNUylbDXBCuM/vnCavWcorUHatXaRAQreCJqFTyA1cur1WqbsHcEK4x%2bWFitIvXXrq1Wa3nC3hSsMHq1CqPftLBabRIKe1%2bwYujVKsZ9xKpqNQIp7BDBCqBXqwD0cUuq1TinsKMEqza9WtUWH72eWo2mCjtQsKrSq1VV7imLqdUUrbBjBasevVrVs564klpNBAs7XLAq0atVJejpy6jVdLOwMwSrBr1a1VBOWkOtktjCThKs4vRqVZw4dQG1SpULO0%2bwytKrVVnfGVdXqxl4YacKVkF6tSqIO%2b/SajXPL%2bxswSpFr1alZGdfV61mE4ZdQLCK0KtVEdYcF1WrHIph1xCs/PRqld800xXVKhNk2GUEKzO9WmUGzXc5tcpnGXYlwcpJr1Y5NbNeS62ycoZdTLCy0atVNsrcF1Kr3KJh1xOsPPRqlcexwFXUqgBq2CUFKwO9WmVALHMJtSrjGnZVwZpLr1ZzBYudr1bFaMMuLFiz6NVqFl/Jk9WqpG7YtQUrnV6t0u0Kn6lWhYHDLi9YifRqlQhX/jS1Km8ctoJgpdCrVYpalXPUqgpz2CKCNZlerSaT1TpBrWpJh60jWNPo1WqaV8Wj1aoidthSgjWBXq0mYNU9VK3qeoetJlhj6dVqrFT149SqOnnYgoI1il6tRjFFHKRWEephawrWZnq12mwUdIRaBcGHLStYG%2bjVagNQ3NtqFWcftrJgraNXq3U6oe%2bpVSh/2OKCtZJerVbSRL%2bhVtETCFv/RNjKbS%2bsVs3O5ze/%2bPNnnz5odns2VlRAsJbwqtUSlAZe%2bvr2k1999O3NG48a2IstxAgI1qK7Wi2KtPH8vz59cPWT%2b/fuPm1jO3YRIyBYR9zV6ghHG0/%2beOPR1V/f98WqjWkE70KwDgagVgcWDTwavkxdv/bwD59/J1UNTKOVLQjWs0moVSO35PCLqptfPBoiNaTKD4CNDKWdbQjW3izOnntp%2bNXI8Ifl7Qxmp3by7d2n39x9euurx0OtRGqnRj/1wx7/6Zt/mnqO4wkQIBAi4C%2bOhrBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAiIFgh7BYlQCBFQLBS1JxDgECIgGCFsFuUAIEUAcFKUXMOAQIhAoIVwm5RAgRSBAQrRc05BAiECAhWCLtFCRBIERCsFDXnECAQIiBYIewWJUAgRUCwUtScQ4BAiIBghbBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAiIFgh7BYlQCBFQLBS1JxDgECIgGCFsFuUAIEUAcFKUXMOAQIhAoIVwm5RAgRSBAQrRc05BAiECAhWCLtFCRBIERCsFDXnECAQIiBYIewWJUAgRUCwUtScQ4BAiIBghbBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAiIFgh7BYlQCBFQLBS1JxDgECIgGCFsFuUAIEUAcFKUXMOAQIhAoIVwm5RAgRSBAQrRc05BAiECAhWCLtFCRBIERCsFDXnECAQIiBYIewWJUAgRUCwUtScQ4BAiIBghbBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAi8P/kFz8%2b6Zmj5gAAAABJRU5ErkJggg=='/%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='none' version='1.1' id='svg2' width='50' height='50'%3e %3crect x='0' width='40' height='40' rx='8.7109404' fill='%2300f0ff' y='0' /%3e %3cpath d='m 18.459617%2c15.7671 h 7.4686 l 7.6404%2c7.5916 c 0.497%2c0.4938 0.4996%2c1.2971 0.0051%2c1.7934 L 23.775317%2c35 h -7.6937 l 2.326%2c-2.2613 8.54%2c-8.4861 -8.4316%2c-8.4862' fill='%231b1b1b' /%3e %3cpath d='m 21.529217%2c24.2336 h -7.4686 l -7.64042%2c-7.5917 c -0.49702%2c-0.4938 -0.49956%2c-1.297 -0.00508%2c-1.7934 L 16.213517%2c5 h 7.6937 l -2.326%2c2.26132 -8.54%2c8.48608 8.4316%2c8.4862' fill='%231b1b1b' /%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' width='160px' height='160px' style='shape-rendering:geometricPrecision%3b text-rendering:geometricPrecision%3b image-rendering:optimizeQuality%3b fill-rule:evenodd%3b clip-rule:evenodd' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3cpath style='opacity:0.976' fill='%232353e6' d='M 66.5%2c-0.5 C 70.8333%2c-0.5 75.1667%2c-0.5 79.5%2c-0.5C 79.5%2c11.5 79.5%2c23.5 79.5%2c35.5C 79.5%2c35.8333 79.5%2c36.1667 79.5%2c36.5C 57.5087%2c37.986 43.3421%2c49.3193 37%2c70.5C 34.2292%2c96.8028 45.3958%2c113.97 70.5%2c122C 96.7617%2c124.787 113.928%2c113.621 122%2c88.5C 122.498%2c85.5184 122.665%2c82.5184 122.5%2c79.5C 122.833%2c79.5 123.167%2c79.5 123.5%2c79.5C 135.5%2c79.5 147.5%2c79.5 159.5%2c79.5C 159.5%2c83.8333 159.5%2c88.1667 159.5%2c92.5C 150.833%2c128.5 128.5%2c150.833 92.5%2c159.5C 83.8333%2c159.5 75.1667%2c159.5 66.5%2c159.5C 30.5%2c150.833 8.16667%2c128.5 -0.5%2c92.5C -0.5%2c83.8333 -0.5%2c75.1667 -0.5%2c66.5C 8.16667%2c30.5 30.5%2c8.16667 66.5%2c-0.5 Z'/%3e %3cpath style='opacity:1' fill='%2317e6a0' d='M 79.5%2c35.5 C 94.1667%2c35.5 108.833%2c35.5 123.5%2c35.5C 123.5%2c50.1667 123.5%2c64.8333 123.5%2c79.5C 123.167%2c79.5 122.833%2c79.5 122.5%2c79.5C 108.167%2c79.5 93.8333%2c79.5 79.5%2c79.5C 79.5%2c65.1667 79.5%2c50.8333 79.5%2c36.5C 79.5%2c36.1667 79.5%2c35.8333 79.5%2c35.5 Z'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='255' height='56' viewBox='0 0 255 56' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M94.1882 42.6203C94.2202 42.6845 94.2368 42.7552 94.2368 42.8269C94.2368 43.0831 94.0291 43.2908 93.773 43.2908H91.7279C90.9738 43.2908 90.2855 42.861 89.9545 42.1834L86.8154 35.7571C86.4844 35.0794 85.7961 34.6497 85.042 34.6497H68.8001C68.046 34.6497 67.3577 35.0794 67.0267 35.7571L63.8876 42.1834C63.5566 42.861 62.8683 43.2908 62.1142 43.2908H60.0691C59.813 43.2908 59.6053 43.0831 59.6053 42.8269C59.6053 42.7552 59.6219 42.6845 59.6539 42.6203L74.3619 13.067C74.6955 12.3965 75.3799 11.9727 76.1288 11.9727H77.7133C78.4622 11.9727 79.1466 12.3965 79.4802 13.067L94.1882 42.6203ZM81.4665 31.2732C82.9297 31.2732 83.8842 29.7367 83.2358 28.425L78.6904 19.2285C77.966 17.763 75.876 17.763 75.1517 19.2285L70.6063 28.425C69.9579 29.7367 70.9124 31.2732 72.3756 31.2732H81.4665Z' fill='%233568DD'/%3e %3cpath d='M101.577 11.9727C102.597 11.9727 103.424 12.7995 103.424 13.8194V41.4441C103.424 42.464 102.597 43.2908 101.577 43.2908C100.557 43.2908 99.7304 42.464 99.7304 41.4441V13.8194C99.7304 12.7995 100.557 11.9727 101.577 11.9727Z' fill='%233568DD'/%3e %3cpath d='M142.748 21.6164C142.748 24.258 141.756 26.3745 139.774 27.9659C137.791 29.5254 135.974 30.3052 129.211 30.3052C129.118 30.3052 129.07 30.4146 129.132 30.4831L140.088 42.5997C140.157 42.6758 140.195 42.7746 140.195 42.8772C140.195 43.1056 140.01 43.2908 139.781 43.2908H136.847C136.291 43.2908 135.761 43.0561 135.386 42.6444L124.761 30.9516C124.387 30.5399 123.857 30.3052 123.301 30.3052H118.148C117.058 30.3052 116.175 31.1889 116.175 32.2789V41.4681C116.175 42.4747 115.358 43.2908 114.352 43.2908C113.345 43.2908 112.529 42.4747 112.529 41.4681V13.9463C112.529 12.8563 113.413 11.9727 114.503 11.9727L131.668 11.9727C135.121 11.9727 137.823 12.7843 139.774 14.4075C141.756 15.9988 142.748 18.1949 142.748 20.9957V21.6164ZM131.572 27.0588C133.906 27.0588 135.729 26.5655 137.04 25.5789C138.383 24.5922 139.054 23.2236 139.054 21.4731V20.8525C139.054 19.102 138.399 17.7334 137.088 16.7468C135.777 15.7601 133.938 15.2668 131.572 15.2668L118.148 15.2668C117.058 15.2668 116.175 16.1504 116.175 17.2405V25.0851C116.175 26.1752 117.058 27.0588 118.148 27.0588L131.572 27.0588Z' fill='%233568DD'/%3e %3cpath d='M164.508 11.9727C170.072 11.9727 174.325 13.2776 177.267 15.8874C180.209 18.4973 181.68 22.2847 181.68 27.2498V28.0614C181.68 33.0265 180.209 36.8139 177.267 39.4238C174.357 42.0018 170.104 43.2908 164.508 43.2908H152.188C151.098 43.2908 150.214 42.4071 150.214 41.3171V13.9463C150.214 12.8563 151.098 11.9727 152.188 11.9727L164.508 11.9727ZM164.508 39.9966C168.953 39.9966 172.295 39.01 174.533 37.0367C176.804 35.0316 177.939 32.0557 177.939 28.1091V27.2021C177.939 23.2873 176.804 20.3273 174.533 18.3222C172.263 16.2853 168.905 15.2668 164.46 15.2668L155.833 15.2668C154.743 15.2668 153.86 16.1504 153.86 17.2405V38.023C153.86 39.113 154.743 39.9966 155.833 39.9966H164.508Z' fill='%233568DD'/%3e %3cpath d='M217.995 42.6203C218.027 42.6845 218.044 42.7552 218.044 42.8269C218.044 43.0831 217.836 43.2908 217.58 43.2908H215.535C214.781 43.2908 214.092 42.861 213.761 42.1834L210.622 35.7571C210.291 35.0794 209.603 34.6497 208.849 34.6497H192.607C191.853 34.6497 191.165 35.0794 190.834 35.7571L187.694 42.1834C187.363 42.861 186.675 43.2908 185.921 43.2908H183.876C183.62 43.2908 183.412 43.0831 183.412 42.8269C183.412 42.7552 183.429 42.6845 183.461 42.6203L198.169 13.067C198.502 12.3965 199.187 11.9727 199.936 11.9727H201.52C202.269 11.9727 202.953 12.3965 203.287 13.067L217.995 42.6203ZM205.273 31.2732C206.737 31.2732 207.691 29.7367 207.043 28.425L202.497 19.2285C201.773 17.763 199.683 17.763 198.959 19.2285L194.413 28.425C193.765 29.7367 194.719 31.2732 196.182 31.2732H205.273Z' fill='%233568DD'/%3e %3cpath d='M237.396 43.8159C233.815 43.8159 230.697 43.1794 228.043 41.9063C225.389 40.6014 223.342 38.7554 221.903 36.3683C220.464 33.9813 219.745 31.1964 219.745 28.0136V27.2975C219.745 24.083 220.464 21.2822 221.903 18.8951C223.342 16.5081 225.389 14.678 228.043 13.4049C230.697 12.1 233.815 11.4475 237.396 11.4475C240.946 11.4475 244.048 12.1 246.702 13.4049C249.356 14.7098 251.403 16.5558 252.842 18.9429C254.281 21.3299 255 24.1148 255 27.2975V28.0136C255 31.1964 254.281 33.9813 252.842 36.3683C251.403 38.7554 249.356 40.6014 246.702 41.9063C244.048 43.1794 240.946 43.8159 237.396 43.8159ZM237.396 40.4263C241.745 40.4263 245.135 39.3283 247.565 37.1322C250.028 34.9361 251.259 31.9125 251.259 28.0614V27.2498C251.259 23.3987 250.028 20.3751 247.565 18.179C245.103 15.9511 241.713 14.8371 237.396 14.8371C233.048 14.8371 229.626 15.9511 227.132 18.179C224.669 20.3751 223.438 23.3987 223.438 27.2498V28.0614C223.438 31.9125 224.669 34.9361 227.132 37.1322C229.626 39.3283 233.048 40.4263 237.396 40.4263Z' fill='%233568DD'/%3e %3cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.10597 55.1451C1.74639 55.3643 1.27805 55.2627 1.04167 54.9141L0.136253 53.5792C-0.10013 53.2306 -0.0207549 52.7586 0.310909 52.4991C3.29302 50.1657 5.74427 47.5356 7.67204 44.7187C14.8501 34.2299 14.8501 21.0307 7.67204 10.5418C5.74427 7.72492 3.29302 5.09486 0.310911 2.76146C-0.0207531 2.50195 -0.100129 2.02992 0.136254 1.68139L1.04167 0.346419C1.27805 -0.00211083 1.74639 -0.103741 2.10597 0.11546L42.3244 24.6324C44.569 26.0007 44.569 29.2598 42.3244 30.6281L2.10597 55.1451Z' fill='url(%23paint0_linear_551_2884)'/%3e %3cdefs%3e %3clinearGradient id='paint0_linear_551_2884' x1='49.1443' y1='28.1198' x2='-16.1846' y2='28.1198' gradientUnits='userSpaceOnUse'%3e %3cstop stop-color='%233568DD'/%3e %3cstop offset='1' stop-color='%233568DD' stop-opacity='0.6'/%3e %3c/linearGradient%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='21' height='20' viewBox='0 0 21 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.59961 3C3.77118 3 3.09961 3.67157 3.09961 4.5V14.5C3.09961 15.8807 4.2189 17 5.59961 17H15.0996C16.2042 17 17.0996 16.1046 17.0996 15V7C17.0996 6.25972 16.6974 5.61337 16.0996 5.26756V5C16.0996 3.89543 15.2042 3 14.0996 3H4.59961ZM15.0996 5H4.59961C4.32347 5 4.09961 4.77614 4.09961 4.5C4.09961 4.22386 4.32347 4 4.59961 4H14.0996C14.6519 4 15.0996 4.44772 15.0996 5ZM13.5996 11H14.5996C14.8758 11 15.0996 11.2239 15.0996 11.5C15.0996 11.7761 14.8758 12 14.5996 12H13.5996C13.3235 12 13.0996 11.7761 13.0996 11.5C13.0996 11.2239 13.3235 11 13.5996 11Z' fill='white'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.2097 4.3871L4.29289 4.29289C4.65338 3.93241 5.22061 3.90468 5.6129 4.2097L5.70711 4.29289L12 10.585L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.415 12L19.7071 18.2929C20.0676 18.6534 20.0953 19.2206 19.7903 19.6129L19.7071 19.7071C19.3466 20.0676 18.7794 20.0953 18.3871 19.7903L18.2929 19.7071L12 13.415L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.585 12L4.29289 5.70711C3.93241 5.34662 3.90468 4.77939 4.2097 4.3871L4.29289 4.29289L4.2097 4.3871Z' fill='%23212121'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3.32422 17.2375H21.3242C21.8765 17.2375 22.3242 17.6853 22.3242 18.2375C22.3242 18.7504 21.9382 19.1731 21.4408 19.2308L21.3242 19.2375H3.32422C2.77193 19.2375 2.32422 18.7898 2.32422 18.2375C2.32422 17.7247 2.71026 17.302 3.2076 17.2443L3.32422 17.2375H21.3242H3.32422ZM3.3241 11.2375L21.3241 11.2354C21.8764 11.2353 22.3242 11.683 22.3242 12.2353C22.3242 12.7481 21.9383 13.1708 21.441 13.2286L21.3243 13.2354L3.32434 13.2375C2.77205 13.2376 2.32422 12.79 2.32422 12.2377C2.32422 11.7248 2.71016 11.3021 3.20748 11.2443L3.3241 11.2375L21.3241 11.2354L3.3241 11.2375ZM3.32422 5.23755H21.3242C21.8765 5.23755 22.3242 5.68526 22.3242 6.23755C22.3242 6.75038 21.9382 7.17306 21.4408 7.23082L21.3242 7.23755H3.32422C2.77193 7.23755 2.32422 6.78983 2.32422 6.23755C2.32422 5.72471 2.71026 5.30204 3.2076 5.24428L3.32422 5.23755H21.3242H3.32422Z' fill='%23212121'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,"import { PrismicError } from \"./errors/PrismicError.js\";\nconst getRepositoryName = (repositoryEndpoint) => {\n try {\n const hostname = new URL(repositoryEndpoint).hostname;\n if (hostname.endsWith(\"prismic.io\") || // Production\n hostname.endsWith(\"wroom.io\") || // Staging\n hostname.endsWith(\"wroom.test\")) {\n return hostname.split(\".\")[0];\n }\n } catch {\n }\n throw new PrismicError(`An invalid Prismic Document API endpoint was provided: ${repositoryEndpoint}`, void 0, void 0);\n};\nexport {\n getRepositoryName\n};\n//# sourceMappingURL=getRepositoryName.js.map\n","import { PrismicError } from \"./errors/PrismicError.js\";\nimport { isRepositoryName } from \"./isRepositoryName.js\";\nconst getRepositoryEndpoint = (repositoryName) => {\n if (isRepositoryName(repositoryName)) {\n return `https://${repositoryName}.cdn.prismic.io/api/v2`;\n } else {\n throw new PrismicError(`An invalid Prismic repository name was given: ${repositoryName}`, void 0, void 0);\n }\n};\nexport {\n getRepositoryEndpoint\n};\n//# sourceMappingURL=getRepositoryEndpoint.js.map\n","const isRepositoryName = (input) => {\n return /^[a-zA-Z0-9][-a-zA-Z0-9]{2,}[a-zA-Z0-9]$/.test(input);\n};\nexport {\n isRepositoryName\n};\n//# sourceMappingURL=isRepositoryName.js.map\n","import { LinkType } from \"../types/value/link.js\";\nimport { documentToLinkField } from \"./documentToLinkField.js\";\nconst asLink = (linkFieldOrDocument, ...configObjectOrTuple) => {\n if (!linkFieldOrDocument) {\n return null;\n }\n const linkField = (\n // prettier-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - Bug in TypeScript 4.9: https://github.com/microsoft/TypeScript/issues/51501\n // TODO: Remove the `prettier-ignore` comment when this bug is fixed.\n \"link_type\" in linkFieldOrDocument ? linkFieldOrDocument : documentToLinkField(linkFieldOrDocument)\n );\n const [configObjectOrLinkResolver] = configObjectOrTuple;\n let config;\n if (typeof configObjectOrLinkResolver === \"function\" || configObjectOrLinkResolver == null) {\n config = {\n linkResolver: configObjectOrLinkResolver\n };\n } else {\n config = { ...configObjectOrLinkResolver };\n }\n switch (linkField.link_type) {\n case LinkType.Media:\n case LinkType.Web:\n return \"url\" in linkField ? linkField.url : null;\n case LinkType.Document: {\n if (\"id\" in linkField && config.linkResolver) {\n const resolvedURL = config.linkResolver(linkField);\n if (resolvedURL != null) {\n return resolvedURL;\n }\n }\n if (\"url\" in linkField && linkField.url) {\n return linkField.url;\n }\n return null;\n }\n case LinkType.Any:\n default:\n return null;\n }\n};\nexport {\n asLink\n};\n//# sourceMappingURL=asLink.js.map\n","import { LinkType } from \"../types/value/link.js\";\nconst documentToLinkField = (prismicDocument) => {\n var _a;\n return {\n link_type: LinkType.Document,\n id: prismicDocument.id,\n uid: prismicDocument.uid || void 0,\n type: prismicDocument.type,\n tags: prismicDocument.tags,\n lang: prismicDocument.lang,\n url: prismicDocument.url == null ? void 0 : prismicDocument.url,\n slug: (_a = prismicDocument.slugs) == null ? void 0 : _a[0],\n // Slug field is not available with GraphQL\n // The REST API does not include a `data` property if the data\n // object is empty.\n //\n // A presence check for `prismicDocument.data` is done to\n // support partial documents. While `documentToLinkField` is\n // not typed to accept partial documents, passing a partial\n // document can happen in untyped projects.\n ...prismicDocument.data && Object.keys(prismicDocument.data).length > 0 ? { data: prismicDocument.data } : {}\n };\n};\nexport {\n documentToLinkField\n};\n//# sourceMappingURL=documentToLinkField.js.map\n","const minifyGraphQLQuery = (query) => {\n return query.replace(/(\\n| )*( |{|})(\\n| )*/gm, (_chars, _spaces, brackets) => brackets);\n};\nexport {\n minifyGraphQLQuery\n};\n//# sourceMappingURL=minifyGraphQLQuery.js.map\n","const preview = \"io.prismic.preview\";\nexport {\n preview\n};\n//# sourceMappingURL=cookie.js.map\n","const castThunk = (a) => {\n return typeof a === \"function\" ? a : () => a;\n};\nexport {\n castThunk\n};\n//# sourceMappingURL=castThunk.js.map\n",null,"'use client'\n\nimport { useMutation } from '@tanstack/react-query'\nimport type {\n Config,\n ResolvedRegister,\n SwitchChainErrorType,\n} from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type SwitchChainData,\n type SwitchChainMutate,\n type SwitchChainMutateAsync,\n type SwitchChainVariables,\n switchChainMutationOptions,\n} from '@wagmi/core/query'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport type {\n UseMutationParameters,\n UseMutationReturnType,\n} from '../utils/query.js'\nimport { useChains } from './useChains.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseSwitchChainParameters<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n ConfigParameter & {\n mutation?:\n | UseMutationParameters<\n SwitchChainData,\n SwitchChainErrorType,\n SwitchChainVariables,\n context\n >\n | undefined\n }\n>\n\nexport type UseSwitchChainReturnType<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n UseMutationReturnType<\n SwitchChainData,\n SwitchChainErrorType,\n SwitchChainVariables,\n context\n > & {\n chains: config['chains']\n switchChain: SwitchChainMutate\n switchChainAsync: SwitchChainMutateAsync\n }\n>\n\n/** https://wagmi.sh/react/api/hooks/useSwitchChain */\nexport function useSwitchChain<\n config extends Config = ResolvedRegister['config'],\n context = unknown,\n>(\n parameters: UseSwitchChainParameters = {},\n): UseSwitchChainReturnType {\n const { mutation } = parameters\n\n const config = useConfig(parameters)\n\n const mutationOptions = switchChainMutationOptions(config)\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n })\n\n type Return = UseSwitchChainReturnType\n return {\n ...result,\n chains: useChains({ config }) as unknown as config['chains'],\n switchChain: mutate as Return['switchChain'],\n switchChainAsync: mutateAsync as Return['switchChainAsync'],\n }\n}\n","'use client'\n\nimport { useMutation } from '@tanstack/react-query'\nimport type { Connector, DisconnectErrorType } from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type DisconnectData,\n type DisconnectMutate,\n type DisconnectMutateAsync,\n type DisconnectVariables,\n disconnectMutationOptions,\n} from '@wagmi/core/query'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport type {\n UseMutationParameters,\n UseMutationReturnType,\n} from '../utils/query.js'\nimport { useConfig } from './useConfig.js'\nimport { useConnections } from './useConnections.js'\n\nexport type UseDisconnectParameters = Compute<\n ConfigParameter & {\n mutation?:\n | UseMutationParameters<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n >\n | undefined\n }\n>\n\nexport type UseDisconnectReturnType = Compute<\n UseMutationReturnType<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n > & {\n connectors: readonly Connector[]\n disconnect: DisconnectMutate\n disconnectAsync: DisconnectMutateAsync\n }\n>\n\n/** https://wagmi.sh/react/api/hooks/useDisconnect */\nexport function useDisconnect(\n parameters: UseDisconnectParameters = {},\n): UseDisconnectReturnType {\n const { mutation } = parameters\n\n const config = useConfig(parameters)\n\n const mutationOptions = disconnectMutationOptions(config)\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n })\n\n return {\n ...result,\n connectors: useConnections({ config }).map(\n (connection) => connection.connector,\n ),\n disconnect: mutate,\n disconnectAsync: mutateAsync,\n }\n}\n","'use client'\n\nimport type { Config, GetBalanceErrorType, ResolvedRegister } from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type GetBalanceData,\n type GetBalanceOptions,\n type GetBalanceQueryKey,\n getBalanceQueryOptions,\n} from '@wagmi/core/query'\nimport type { GetBalanceQueryFnData } from '@wagmi/core/query'\n\nimport type { ConfigParameter, QueryParameter } from '../types/properties.js'\nimport { type UseQueryReturnType, useQuery } from '../utils/query.js'\nimport { useChainId } from './useChainId.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseBalanceParameters<\n config extends Config = Config,\n selectData = GetBalanceData,\n> = Compute<\n GetBalanceOptions &\n ConfigParameter &\n QueryParameter<\n GetBalanceQueryFnData,\n GetBalanceErrorType,\n selectData,\n GetBalanceQueryKey\n >\n>\n\nexport type UseBalanceReturnType =\n UseQueryReturnType\n\n/** https://wagmi.sh/react/api/hooks/useBalance */\nexport function useBalance<\n config extends Config = ResolvedRegister['config'],\n selectData = GetBalanceData,\n>(\n parameters: UseBalanceParameters = {},\n): UseBalanceReturnType {\n const { address, query = {} } = parameters\n\n const config = useConfig(parameters)\n const chainId = useChainId({ config })\n\n const options = getBalanceQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n })\n const enabled = Boolean(address && (query.enabled ?? true))\n\n return useQuery({ ...query, ...options, enabled })\n}\n",null,"var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.2097 4.3871L4.29289 4.29289C4.65338 3.93241 5.22061 3.90468 5.6129 4.2097L5.70711 4.29289L12 10.585L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.415 12L19.7071 18.2929C20.0676 18.6534 20.0953 19.2206 19.7903 19.6129L19.7071 19.7071C19.3466 20.0676 18.7794 20.0953 18.3871 19.7903L18.2929 19.7071L12 13.415L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.585 12L4.29289 5.70711C3.93241 5.34662 3.90468 4.77939 4.2097 4.3871L4.29289 4.29289L4.2097 4.3871Z' fill='%23A1A6B2'/%3e%3c/svg%3e\";\n export default img;",null,"function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t\"number\"==typeof t&&!isNaN(t),d=t=>\"string\"==typeof t,p=t=>\"function\"==typeof t,m=t=>d(t)||p(t)?t:null,f=t=>e(t)||d(t)||p(t)||u(t);function g(t,e,n){void 0===n&&(n=300);const{scrollHeight:o,style:s}=t;requestAnimationFrame(()=>{s.minHeight=\"initial\",s.height=o+\"px\",s.transition=`all ${n}ms`,requestAnimationFrame(()=>{s.height=\"0\",s.padding=\"0\",s.margin=\"0\",setTimeout(e,n)})})}function h(e){let{enter:a,exit:r,appendPosition:i=!1,collapse:l=!0,collapseDuration:c=300}=e;return function(e){let{children:u,position:d,preventExitTransition:p,done:m,nodeRef:f,isIn:h}=e;const y=i?`${a}--${d}`:a,v=i?`${r}--${d}`:r,T=n(0);return o(()=>{const t=f.current,e=y.split(\" \"),n=o=>{o.target===f.current&&(t.dispatchEvent(new Event(\"d\")),t.removeEventListener(\"animationend\",n),t.removeEventListener(\"animationcancel\",n),0===T.current&&\"animationcancel\"!==o.type&&t.classList.remove(...e))};t.classList.add(...e),t.addEventListener(\"animationend\",n),t.addEventListener(\"animationcancel\",n)},[]),s(()=>{const t=f.current,e=()=>{t.removeEventListener(\"animationend\",e),l?g(t,m,c):m()};h||(p?e():(T.current=1,t.className+=` ${v}`,t.addEventListener(\"animationend\",e)))},[h]),t.createElement(t.Fragment,null,u)}}function y(t,e){return null!=t?{content:t.content,containerId:t.props.containerId,id:t.props.toastId,theme:t.props.theme,type:t.props.type,data:t.props.data||{},isLoading:t.props.isLoading,icon:t.props.icon,status:e}:{}}const v={list:new Map,emitQueue:new Map,on(t,e){return this.list.has(t)||this.list.set(t,[]),this.list.get(t).push(e),this},off(t,e){if(e){const n=this.list.get(t).filter(t=>t!==e);return this.list.set(t,n),this}return this.list.delete(t),this},cancelEmit(t){const e=this.emitQueue.get(t);return e&&(e.forEach(clearTimeout),this.emitQueue.delete(t)),this},emit(t){this.list.has(t)&&this.list.get(t).forEach(e=>{const n=setTimeout(()=>{e(...[].slice.call(arguments,1))},0);this.emitQueue.has(t)||this.emitQueue.set(t,[]),this.emitQueue.get(t).push(n)})}},T=e=>{let{theme:n,type:o,...s}=e;return t.createElement(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"colored\"===n?\"currentColor\":`var(--toastify-icon-color-${o})`,...s})},E={info:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\"}))},warning:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\"}))},success:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\"}))},error:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\"}))},spinner:function(){return t.createElement(\"div\",{className:\"Toastify__spinner\"})}};function C(t){const[,o]=r(t=>t+1,0),[l,c]=i([]),g=n(null),h=n(new Map).current,T=t=>-1!==l.indexOf(t),C=n({toastKey:1,displayedToast:0,count:0,queue:[],props:t,containerId:null,isToastActive:T,getToast:t=>h.get(t)}).current;function b(t){let{containerId:e}=t;const{limit:n}=C.props;!n||e&&C.containerId!==e||(C.count-=C.queue.length,C.queue=[])}function I(t){c(e=>null==t?[]:e.filter(e=>e!==t))}function _(){const{toastContent:t,toastProps:e,staleId:n}=C.queue.shift();O(t,e,n)}function L(t,n){let{delay:s,staleId:r,...i}=n;if(!f(t)||function(t){return!g.current||C.props.enableMultiContainer&&t.containerId!==C.props.containerId||h.has(t.toastId)&&null==t.updateId}(i))return;const{toastId:l,updateId:c,data:T}=i,{props:b}=C,L=()=>I(l),N=null==c;N&&C.count++;const M={...b,style:b.toastStyle,key:C.toastKey++,...Object.fromEntries(Object.entries(i).filter(t=>{let[e,n]=t;return null!=n})),toastId:l,updateId:c,data:T,closeToast:L,isIn:!1,className:m(i.className||b.toastClassName),bodyClassName:m(i.bodyClassName||b.bodyClassName),progressClassName:m(i.progressClassName||b.progressClassName),autoClose:!i.isLoading&&(R=i.autoClose,w=b.autoClose,!1===R||u(R)&&R>0?R:w),deleteToast(){const t=y(h.get(l),\"removed\");h.delete(l),v.emit(4,t);const e=C.queue.length;if(C.count=null==l?C.count-C.displayedToast:C.count-1,C.count<0&&(C.count=0),e>0){const t=null==l?C.props.limit:1;if(1===e||1===t)C.displayedToast++,_();else{const n=t>e?e:t;C.displayedToast=n;for(let t=0;tt in E)(o)&&(i=E[o](l))),i}(M),p(i.onOpen)&&(M.onOpen=i.onOpen),p(i.onClose)&&(M.onClose=i.onClose),M.closeButton=b.closeButton,!1===i.closeButton||f(i.closeButton)?M.closeButton=i.closeButton:!0===i.closeButton&&(M.closeButton=!f(b.closeButton)||b.closeButton);let x=t;e(t)&&!d(t.type)?x=a(t,{closeToast:L,toastProps:M,data:T}):p(t)&&(x=t({closeToast:L,toastProps:M,data:T})),b.limit&&b.limit>0&&C.count>b.limit&&N?C.queue.push({toastContent:x,toastProps:M,staleId:r}):u(s)?setTimeout(()=>{O(x,M,r)},s):O(x,M,r)}function O(t,e,n){const{toastId:o}=e;n&&h.delete(n);const s={content:t,props:e};h.set(o,s),c(t=>[...t,o].filter(t=>t!==n)),v.emit(4,y(s,null==s.props.updateId?\"added\":\"updated\"))}return s(()=>(C.containerId=t.containerId,v.cancelEmit(3).on(0,L).on(1,t=>g.current&&I(t)).on(5,b).emit(2,C),()=>{h.clear(),v.emit(3,C)}),[]),s(()=>{C.props=t,C.isToastActive=T,C.displayedToast=l.length}),{getToastToRender:function(e){const n=new Map,o=Array.from(h.values());return t.newestOnTop&&o.reverse(),o.forEach(t=>{const{position:e}=t.props;n.has(e)||n.set(e,[]),n.get(e).push(t)}),Array.from(n,t=>e(t[0],t[1]))},containerRef:g,isToastActive:T}}function b(t){return t.targetTouches&&t.targetTouches.length>=1?t.targetTouches[0].clientX:t.clientX}function I(t){return t.targetTouches&&t.targetTouches.length>=1?t.targetTouches[0].clientY:t.clientY}function _(t){const[o,a]=i(!1),[r,l]=i(!1),c=n(null),u=n({start:0,x:0,y:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,boundingRect:null,didMove:!1}).current,d=n(t),{autoClose:m,pauseOnHover:f,closeToast:g,onClick:h,closeOnClick:y}=t;function v(e){if(t.draggable){\"touchstart\"===e.nativeEvent.type&&e.nativeEvent.preventDefault(),u.didMove=!1,document.addEventListener(\"mousemove\",_),document.addEventListener(\"mouseup\",L),document.addEventListener(\"touchmove\",_),document.addEventListener(\"touchend\",L);const n=c.current;u.canCloseOnClick=!0,u.canDrag=!0,u.boundingRect=n.getBoundingClientRect(),n.style.transition=\"\",u.x=b(e.nativeEvent),u.y=I(e.nativeEvent),\"x\"===t.draggableDirection?(u.start=u.x,u.removalDistance=n.offsetWidth*(t.draggablePercent/100)):(u.start=u.y,u.removalDistance=n.offsetHeight*(80===t.draggablePercent?1.5*t.draggablePercent:t.draggablePercent/100))}}function T(e){if(u.boundingRect){const{top:n,bottom:o,left:s,right:a}=u.boundingRect;\"touchend\"!==e.nativeEvent.type&&t.pauseOnHover&&u.x>=s&&u.x<=a&&u.y>=n&&u.y<=o?C():E()}}function E(){a(!0)}function C(){a(!1)}function _(e){const n=c.current;u.canDrag&&n&&(u.didMove=!0,o&&C(),u.x=b(e),u.y=I(e),u.delta=\"x\"===t.draggableDirection?u.x-u.start:u.y-u.start,u.start!==u.x&&(u.canCloseOnClick=!1),n.style.transform=`translate${t.draggableDirection}(${u.delta}px)`,n.style.opacity=\"\"+(1-Math.abs(u.delta/u.removalDistance)))}function L(){document.removeEventListener(\"mousemove\",_),document.removeEventListener(\"mouseup\",L),document.removeEventListener(\"touchmove\",_),document.removeEventListener(\"touchend\",L);const e=c.current;if(u.canDrag&&u.didMove&&e){if(u.canDrag=!1,Math.abs(u.delta)>u.removalDistance)return l(!0),void t.closeToast();e.style.transition=\"transform 0.2s, opacity 0.2s\",e.style.transform=`translate${t.draggableDirection}(0)`,e.style.opacity=\"1\"}}s(()=>{d.current=t}),s(()=>(c.current&&c.current.addEventListener(\"d\",E,{once:!0}),p(t.onOpen)&&t.onOpen(e(t.children)&&t.children.props),()=>{const t=d.current;p(t.onClose)&&t.onClose(e(t.children)&&t.children.props)}),[]),s(()=>(t.pauseOnFocusLoss&&(document.hasFocus()||C(),window.addEventListener(\"focus\",E),window.addEventListener(\"blur\",C)),()=>{t.pauseOnFocusLoss&&(window.removeEventListener(\"focus\",E),window.removeEventListener(\"blur\",C))}),[t.pauseOnFocusLoss]);const O={onMouseDown:v,onTouchStart:v,onMouseUp:T,onTouchEnd:T};return m&&f&&(O.onMouseEnter=C,O.onMouseLeave=E),y&&(O.onClick=t=>{h&&h(t),u.canCloseOnClick&&g()}),{playToast:E,pauseToast:C,isRunning:o,preventExitTransition:r,toastRef:c,eventHandlers:O}}function L(e){let{closeToast:n,theme:o,ariaLabel:s=\"close\"}=e;return t.createElement(\"button\",{className:`Toastify__close-button Toastify__close-button--${o}`,type:\"button\",onClick:t=>{t.stopPropagation(),n(t)},\"aria-label\":s},t.createElement(\"svg\",{\"aria-hidden\":\"true\",viewBox:\"0 0 14 16\"},t.createElement(\"path\",{fillRule:\"evenodd\",d:\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"})))}function O(e){let{delay:n,isRunning:o,closeToast:s,type:a=\"default\",hide:r,className:i,style:l,controlledProgress:u,progress:d,rtl:m,isIn:f,theme:g}=e;const h=r||u&&0===d,y={...l,animationDuration:`${n}ms`,animationPlayState:o?\"running\":\"paused\",opacity:h?0:1};u&&(y.transform=`scaleX(${d})`);const v=c(\"Toastify__progress-bar\",u?\"Toastify__progress-bar--controlled\":\"Toastify__progress-bar--animated\",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${a}`,{\"Toastify__progress-bar--rtl\":m}),T=p(i)?i({rtl:m,type:a,defaultClassName:v}):c(v,i);return t.createElement(\"div\",{role:\"progressbar\",\"aria-hidden\":h?\"true\":\"false\",\"aria-label\":\"notification timer\",className:T,style:y,[u&&d>=1?\"onTransitionEnd\":\"onAnimationEnd\"]:u&&d<1?null:()=>{f&&s()}})}const N=n=>{const{isRunning:o,preventExitTransition:s,toastRef:r,eventHandlers:i}=_(n),{closeButton:l,children:u,autoClose:d,onClick:m,type:f,hideProgressBar:g,closeToast:h,transition:y,position:v,className:T,style:E,bodyClassName:C,bodyStyle:b,progressClassName:I,progressStyle:N,updateId:M,role:R,progress:w,rtl:x,toastId:$,deleteToast:k,isIn:P,isLoading:B,iconOut:D,closeOnClick:A,theme:z}=n,F=c(\"Toastify__toast\",`Toastify__toast-theme--${z}`,`Toastify__toast--${f}`,{\"Toastify__toast--rtl\":x},{\"Toastify__toast--close-on-click\":A}),H=p(T)?T({rtl:x,position:v,type:f,defaultClassName:F}):c(F,T),S=!!w||!d,q={closeToast:h,type:f,theme:z};let Q=null;return!1===l||(Q=p(l)?l(q):e(l)?a(l,q):L(q)),t.createElement(y,{isIn:P,done:k,position:v,preventExitTransition:s,nodeRef:r},t.createElement(\"div\",{id:$,onClick:m,className:H,...i,style:E,ref:r},t.createElement(\"div\",{...P&&{role:R},className:p(C)?C({type:f}):c(\"Toastify__toast-body\",C),style:b},null!=D&&t.createElement(\"div\",{className:c(\"Toastify__toast-icon\",{\"Toastify--animate-icon Toastify__zoom-enter\":!B})},D),t.createElement(\"div\",null,u)),Q,t.createElement(O,{...M&&!S?{key:`pb-${M}`}:{},rtl:x,theme:z,delay:d,isRunning:o,isIn:P,closeToast:h,hide:g,type:f,style:N,className:I,controlledProgress:S,progress:w||0})))},M=function(t,e){return void 0===e&&(e=!1),{enter:`Toastify--animate Toastify__${t}-enter`,exit:`Toastify--animate Toastify__${t}-exit`,appendPosition:e}},R=h(M(\"bounce\",!0)),w=h(M(\"slide\",!0)),x=h(M(\"zoom\")),$=h(M(\"flip\")),k=l((e,n)=>{const{getToastToRender:o,containerRef:a,isToastActive:r}=C(e),{className:i,style:l,rtl:u,containerId:d}=e;function f(t){const e=c(\"Toastify__toast-container\",`Toastify__toast-container--${t}`,{\"Toastify__toast-container--rtl\":u});return p(i)?i({position:t,rtl:u,defaultClassName:e}):c(e,m(i))}return s(()=>{n&&(n.current=a.current)},[]),t.createElement(\"div\",{ref:a,className:\"Toastify\",id:d},o((e,n)=>{const o=n.length?{...l}:{...l,pointerEvents:\"none\"};return t.createElement(\"div\",{className:f(e),style:o,key:`container-${e}`},n.map((e,o)=>{let{content:s,props:a}=e;return t.createElement(N,{...a,isIn:r(a.toastId),style:{...a.style,\"--nth\":o+1,\"--len\":n.length},key:`toast-${a.key}`},s)}))}))});k.displayName=\"ToastContainer\",k.defaultProps={position:\"top-right\",transition:R,autoClose:5e3,closeButton:L,pauseOnHover:!0,pauseOnFocusLoss:!0,closeOnClick:!0,draggable:!0,draggablePercent:80,draggableDirection:\"x\",role:\"alert\",theme:\"light\"};let P,B=new Map,D=[],A=1;function z(){return\"\"+A++}function F(t){return t&&(d(t.toastId)||u(t.toastId))?t.toastId:z()}function H(t,e){return B.size>0?v.emit(0,t,e):D.push({content:t,options:e}),e.toastId}function S(t,e){return{...e,type:e&&e.type||t,toastId:F(e)}}function q(t){return(e,n)=>H(e,S(t,n))}function Q(t,e){return H(t,S(\"default\",e))}Q.loading=(t,e)=>H(t,S(\"default\",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...e})),Q.promise=function(t,e,n){let o,{pending:s,error:a,success:r}=e;s&&(o=d(s)?Q.loading(s,n):Q.loading(s.render,{...n,...s}));const i={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(t,e,s)=>{if(null==e)return void Q.dismiss(o);const a={type:t,...i,...n,data:s},r=d(e)?{render:e}:e;return o?Q.update(o,{...a,...r}):Q(r.render,{...a,...r}),s},c=p(t)?t():t;return c.then(t=>l(\"success\",r,t)).catch(t=>l(\"error\",a,t)),c},Q.success=q(\"success\"),Q.info=q(\"info\"),Q.error=q(\"error\"),Q.warning=q(\"warning\"),Q.warn=Q.warning,Q.dark=(t,e)=>H(t,S(\"default\",{theme:\"dark\",...e})),Q.dismiss=t=>{B.size>0?v.emit(1,t):D=D.filter(e=>null!=t&&e.options.toastId!==t)},Q.clearWaitingQueue=function(t){return void 0===t&&(t={}),v.emit(5,t)},Q.isActive=t=>{let e=!1;return B.forEach(n=>{n.isToastActive&&n.isToastActive(t)&&(e=!0)}),e},Q.update=function(t,e){void 0===e&&(e={}),setTimeout(()=>{const n=function(t,e){let{containerId:n}=e;const o=B.get(n||P);return o&&o.getToast(t)}(t,e);if(n){const{props:o,content:s}=n,a={delay:100,...o,...e,toastId:e.toastId||t,updateId:z()};a.toastId!==t&&(a.staleId=t);const r=a.render||s;delete a.render,H(r,a)}},0)},Q.done=t=>{Q.update(t,{progress:1})},Q.onChange=t=>(v.on(4,t),()=>{v.off(4,t)}),Q.POSITION={TOP_LEFT:\"top-left\",TOP_RIGHT:\"top-right\",TOP_CENTER:\"top-center\",BOTTOM_LEFT:\"bottom-left\",BOTTOM_RIGHT:\"bottom-right\",BOTTOM_CENTER:\"bottom-center\"},Q.TYPE={INFO:\"info\",SUCCESS:\"success\",WARNING:\"warning\",ERROR:\"error\",DEFAULT:\"default\"},v.on(2,t=>{P=t.containerId||t,B.set(P,t),D.forEach(t=>{v.emit(0,t.content,t.options)}),D=[]}).on(3,t=>{B.delete(t.containerId||t),0===B.size&&v.off(0).off(1).off(5)});export{R as Bounce,$ as Flip,E as Icons,w as Slide,k as ToastContainer,x as Zoom,g as collapseToast,h as cssTransition,Q as toast,_ as useToast,C as useToastContainer};\n//# sourceMappingURL=react-toastify.esm.mjs.map\n",null,null,null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3e %3cpath d='M3.89705 4.05379L3.96967 3.96967C4.23594 3.7034 4.6526 3.6792 4.94621 3.89705L5.03033 3.96967L10 8.939L14.9697 3.96967C15.2359 3.7034 15.6526 3.6792 15.9462 3.89705L16.0303 3.96967C16.2966 4.23594 16.3208 4.6526 16.1029 4.94621L16.0303 5.03033L11.061 10L16.0303 14.9697C16.2966 15.2359 16.3208 15.6526 16.1029 15.9462L16.0303 16.0303C15.7641 16.2966 15.3474 16.3208 15.0538 16.1029L14.9697 16.0303L10 11.061L5.03033 16.0303C4.76406 16.2966 4.3474 16.3208 4.05379 16.1029L3.96967 16.0303C3.7034 15.7641 3.6792 15.3474 3.89705 15.0538L3.96967 14.9697L8.939 10L3.96967 5.03033C3.7034 4.76406 3.6792 4.3474 3.89705 4.05379L3.96967 3.96967L3.89705 4.05379Z' fill='%23222426'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='82' height='81' viewBox='0 0 82 81' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg filter='url(%23filter0_di_1876_10638)'%3e%3crect x='8.68164' y='4' width='64.6362' height='64.6362' rx='32.3181' fill='white'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M28.1203 58.9565C27.8253 59.1364 27.4411 59.053 27.2472 58.767L26.5044 57.6718C26.3104 57.3859 26.3756 56.9986 26.6476 56.7857C29.0942 54.8714 31.1052 52.7137 32.6867 50.4027C38.5756 41.7976 38.5756 30.969 32.6867 22.3639C31.1052 20.0529 29.0942 17.8952 26.6477 15.9808C26.3756 15.7679 26.3104 15.3807 26.5044 15.0947L27.2472 13.9995C27.4411 13.7136 27.8253 13.6302 28.1203 13.8101L61.1156 33.9238C62.9572 35.0464 62.9572 37.7202 61.1156 38.8427L28.1203 58.9565Z' fill='url(%23paint0_linear_1876_10638)'/%3e%3c/g%3e%3cdefs%3e%3cfilter id='filter0_di_1876_10638' x='0.681641' y='0' width='80.6367' height='80.6362' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e%3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e%3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e%3cfeOffset dy='4'/%3e%3cfeGaussianBlur stdDeviation='4'/%3e%3cfeComposite in2='hardAlpha' operator='out'/%3e%3cfeColorMatrix type='matrix' values='0 0 0 0 0.184314 0 0 0 0 0.168627 0 0 0 0 0.262745 0 0 0 0.1 0'/%3e%3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_1876_10638'/%3e%3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_1876_10638' result='shape'/%3e%3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e%3cfeOffset dy='-1'/%3e%3cfeComposite in2='hardAlpha' operator='arithmetic' k2='-1' k3='1'/%3e%3cfeColorMatrix type='matrix' values='0 0 0 0 0.184314 0 0 0 0 0.168627 0 0 0 0 0.262745 0 0 0 0.1 0'/%3e%3cfeBlend mode='normal' in2='shape' result='effect2_innerShadow_1876_10638'/%3e%3c/filter%3e%3clinearGradient id='paint0_linear_1876_10638' x1='62.4968' y1='28.6702' x2='26.3926' y2='28.6702' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='%233568DD'/%3e%3cstop offset='1' stop-color='%237DA3F9'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M17.287 2.51074L11.248 7.34163L12.3696 4.49152L17.287 2.51074Z' fill='%23E17726' stroke='%23E17726' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M3.36133 2.51074L9.34536 7.38735L8.27875 4.49152L3.36133 2.51074Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M15.1163 13.709L13.5098 16.3633L16.9473 17.3827L17.9297 13.7676L15.1163 13.709Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M2.72461 13.7673L3.70105 17.3825L7.13858 16.3631L5.53806 13.7087L2.72461 13.7673Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M6.95006 9.2241L5.99219 10.7869L9.39969 10.9504L9.28443 6.99487L6.95006 9.2241Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.6977 9.22416L11.3269 6.94922L11.248 10.9505L14.6555 10.7869L13.6977 9.22416Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.13867 16.3636L9.19448 15.2842L7.42357 13.7939L7.13867 16.3636Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.4551 15.2842L13.5109 16.3636L13.226 13.7939L11.4551 15.2842Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.5109 16.3633L11.4551 15.2839L11.6187 16.7291L11.6008 17.337L13.5109 16.3633Z' fill='%23D5BFB2' stroke='%23D5BFB2' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.13867 16.3633L9.04875 17.337L9.0368 16.7291L9.19448 15.2839L7.13867 16.3633Z' fill='%23D5BFB2' stroke='%23D5BFB2' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M9.08499 12.8392L7.375 12.297L8.58149 11.7019L9.08499 12.8392Z' fill='%23233447' stroke='%23233447' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.5645 12.839L12.068 11.7017L13.2804 12.2967L11.5645 12.839Z' fill='%23233447' stroke='%23233447' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.1378 16.3634L7.43464 13.7087L5.53711 13.7673L7.1378 16.3634Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.2129 13.7087L13.5097 16.3634L15.1164 13.7673L13.2129 13.7087Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M14.6555 10.7869L11.248 10.9504L11.5634 12.839L12.0668 11.7019L13.279 12.2968L14.6555 10.7869Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.37466 12.2968L8.58095 11.7019L9.08438 12.839L9.39969 10.9504L5.99219 10.7869L7.37466 12.2968Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M5.99219 10.7869L7.42303 13.7939L7.37466 12.2968L5.99219 10.7869Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.279 12.2968L13.2246 13.7939L14.6554 10.7869L13.279 12.2968Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M9.39929 10.9504L9.08398 12.839L9.48409 15.0683L9.56889 12.1333L9.39929 10.9504Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.2476 10.9502L11.084 12.1266L11.1628 15.068L11.5629 12.8388L11.2476 10.9502Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.5642 12.8391L11.1641 15.0683L11.4549 15.284L13.2255 13.794L13.2799 12.2969L11.5642 12.8391Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.375 12.2969L7.42337 13.794L9.194 15.284L9.48483 15.0683L9.08472 12.8391L7.375 12.2969Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.601 17.3367L11.6189 16.7288L11.4678 16.5852H9.18172L9.0366 16.7288L9.04855 17.3367L7.13867 16.363L7.80576 16.951L9.16381 17.9645H11.4858L12.8438 16.951L13.5109 16.363L11.601 17.3367Z' fill='%23C0AC9D' stroke='%23C0AC9D' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.4537 15.2841L11.1629 15.0684H9.48364L9.19281 15.2841L9.03516 16.729L9.18027 16.5854H11.4663L11.6174 16.729L11.4537 15.2841Z' fill='%23161616' stroke='%23161616' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M17.5424 7.65563L18.0518 4.9884L17.288 2.5105L11.4551 7.17846L13.6988 9.22428L16.8694 10.225L17.5669 9.34212L17.2635 9.10708L17.7485 8.62928L17.3788 8.31567L17.8637 7.91707L17.5424 7.65563Z' fill='%23763E1A' stroke='%23763E1A' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M2.59766 4.98865L3.11305 7.65587L2.78578 7.91732L3.27071 8.31592L2.90104 8.62952L3.38597 9.10733L3.08259 9.34237L3.78013 10.2252L6.95071 9.22453L9.19443 7.17871L3.36149 2.51074L2.59766 4.98865Z' fill='%23763E1A' stroke='%23763E1A' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M16.8682 10.2248L13.6976 9.22412L14.6555 10.787L13.2246 13.7942L15.116 13.7678H17.9294L16.8682 10.2248Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M6.95046 9.22412L3.77988 10.2248L2.72461 13.7678H5.53806L7.42345 13.7942L5.99254 10.787L6.95046 9.22412Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.2477 10.9503L11.4537 7.17826L12.3692 4.49121H8.27734L9.19282 7.17826L9.39884 10.9503L9.47767 12.1396L9.48364 15.0681H11.1629L11.1689 12.1396L11.2477 10.9503Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M6 12.6362L10 8.63623L6 4.63623' stroke='%23A2B2D8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;",null,"var img = \"data:image/svg+xml,%3csvg width='247' height='307' viewBox='0 0 247 307' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M110.535 0C103.879 -6.17484e-07 97.4969 2.65024 92.7911 7.36767L18.8715 81.4695C16.0717 84.2762 14.6719 87.9548 14.6719 91.6333C14.6719 95.3119 16.0718 98.9905 18.8715 101.797L67.3134 150.358V64.388C67.3134 57.9722 72.461 52.7712 78.8611 52.7712C105.9 52.7712 171.718 52.7712 180.695 52.7712L233.337 0.000747875L110.535 0Z' fill='%234A21EF'/%3e%3cpath d='M67.3153 166.43H169.109C175.509 166.43 180.697 161.229 180.697 154.814V68.8437L229.139 117.404C231.939 120.211 233.339 123.89 233.339 127.568C233.339 131.247 231.939 134.925 229.139 137.732L155.219 211.834C150.513 216.551 144.131 219.202 137.476 219.202L14.6739 219.201L67.3153 166.43Z' fill='%234A21EF'/%3e%3cpath d='M21.5984 307C15.3525 307 8.46722 304.88 0.942622 300.639V291.468C8.0246 296.251 14.9344 298.642 21.6722 298.642C24.7705 298.642 27.2295 298.075 29.0492 296.941C30.9181 295.758 31.8525 294.13 31.8525 292.059C31.8525 290.186 30.9918 288.706 29.2705 287.622C27.5492 286.487 24.8935 285.477 21.3033 284.589C14.8607 282.913 10.4836 281.483 8.17214 280.299C3.05738 277.686 0.5 273.766 0.5 268.539C0.5 264.052 2.39344 260.502 6.18033 257.888C9.96722 255.275 14.6394 253.968 20.1967 253.968C26.9836 253.968 33.1066 255.941 38.5656 259.885V269.057C32.3197 264.52 26.1968 262.252 20.1967 262.252C17.0492 262.252 14.4426 262.844 12.3771 264.027C10.3115 265.211 9.2787 266.863 9.2787 268.983C9.2787 270.265 9.86887 271.374 11.0492 272.311C12.2295 273.199 13.5082 273.889 14.8853 274.382C16.3115 274.826 18.4263 275.393 21.2295 276.083C24.1804 276.823 26.6148 277.538 28.5328 278.228C30.5 278.919 32.4918 279.88 34.5082 281.113C36.5246 282.296 38.0246 283.8 39.0082 285.625C40.041 287.449 40.5574 289.619 40.5574 292.133C40.5574 296.818 38.7623 300.466 35.1722 303.08C31.6312 305.693 27.1066 307 21.5984 307Z' fill='%23070C27'/%3e%3cpath d='M58.3189 307C56.5975 307 54.9254 306.803 53.3025 306.408C51.7287 306.014 50.2041 305.397 48.7287 304.559C47.2533 303.672 46.0484 302.414 45.1139 300.787C44.1795 299.111 43.7123 297.163 43.7123 294.944C43.6631 290.95 45.0402 287.917 47.8434 285.846C50.6467 283.726 54.6549 282.666 59.868 282.666H71.7451V280.299C71.7451 278.13 70.8599 276.502 69.0894 275.418C67.3189 274.283 65.032 273.716 62.2287 273.716C56.868 273.716 53.7451 275.492 52.8598 279.042L44.7451 279.19C44.8434 275.294 46.5401 272.213 49.8352 269.944C53.1795 267.676 57.2615 266.542 62.0812 266.542C66.95 266.542 71.1058 267.725 74.5484 270.092C78.0402 272.459 79.7861 275.516 79.7861 279.264V306.408H71.7451V300.491C70.6139 302.069 68.8926 303.548 66.5812 304.929C64.3189 306.31 61.5648 307 58.3189 307ZM58.9828 299.973C62.2287 299.973 65.1549 298.864 67.7615 296.645C70.4172 294.426 71.7451 291.813 71.7451 288.805H61.3435C58.1467 288.805 55.7615 289.421 54.1877 290.654C52.6631 291.837 51.9992 293.341 52.1959 295.166C52.3434 296.842 53.0812 298.075 54.409 298.864C55.7369 299.604 57.2615 299.973 58.9828 299.973Z' fill='%23070C27'/%3e%3cpath d='M86.2756 306.408L86.128 274.53V265.876C86.128 261.192 88.0461 257.666 91.8821 255.3C95.7182 252.933 100.784 252.538 107.079 254.116L107.005 260.625C102.923 259.54 99.8248 259.54 97.71 260.625C95.6444 261.66 94.6116 263.436 94.6116 265.95V267.208H106.71V274.53H94.6116L94.6854 306.408H86.2756Z' fill='%23070C27'/%3e%3cpath d='M129.014 307C123.408 307 118.662 305.028 114.777 301.083C110.891 297.089 108.949 292.306 108.949 286.734C108.949 281.113 110.916 276.354 114.85 272.459C118.785 268.514 123.506 266.542 129.014 266.542C133.883 266.542 138.162 268.145 141.85 271.35C145.588 274.505 147.875 278.475 148.711 283.258C149.203 285.575 149.227 287.794 148.785 289.914H117.359C117.85 292.824 119.178 295.141 121.342 296.867C123.506 298.543 126.063 299.382 129.014 299.382C133.539 299.382 137.154 297.779 139.859 294.574H147.469C147.469 294.574 146.589 299.756 139.859 304.189C136.416 306.063 132.801 307 129.014 307ZM117.359 283.332H140.449C139.957 280.718 138.654 278.524 136.539 276.749C134.473 274.974 131.941 274.086 128.941 274.086C125.941 274.086 123.383 274.998 121.268 276.823C119.154 278.598 117.85 280.768 117.359 283.332Z' fill='%23070C27'/%3e%3cpath d='M210.389 307C208.668 307 206.996 306.803 205.373 306.408C203.799 306.014 202.275 305.397 200.799 304.559C199.324 303.672 198.119 302.414 197.184 300.787C196.25 299.111 195.783 297.163 195.783 294.944C195.734 290.95 197.111 287.917 199.914 285.846C202.717 283.726 206.725 282.666 211.939 282.666H223.816V280.299C223.816 278.13 222.93 276.502 221.16 275.418C219.389 274.283 217.102 273.716 214.299 273.716C208.939 273.716 205.816 275.492 204.93 279.042L196.816 279.19C196.914 275.294 198.611 272.213 201.906 269.944C205.25 267.676 209.332 266.542 214.152 266.542C219.021 266.542 223.176 267.725 226.619 270.092C230.111 272.459 231.857 275.516 231.857 279.264V306.408H223.816V300.491C222.684 302.069 220.963 303.548 218.652 304.929C216.389 306.31 213.635 307 210.389 307ZM211.053 299.973C214.299 299.973 217.225 298.864 219.832 296.645C222.488 294.426 223.816 291.813 223.816 288.805H213.414C210.217 288.805 207.832 289.421 206.258 290.654C204.734 291.837 204.07 293.341 204.266 295.166C204.414 296.842 205.152 298.075 206.479 298.864C207.807 299.604 209.332 299.973 211.053 299.973Z' fill='%23070C27'/%3e%3cpath d='M238.016 306.408V255.3H246.5V306.408H238.016Z' fill='%23070C27'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M153.715 255.3H176.141C181.109 255.3 185.24 257.001 188.535 260.403C191.83 263.756 193.477 267.824 193.477 272.607C193.477 277.439 191.83 281.507 188.535 284.811C185.289 288.065 181.158 289.717 176.141 289.766L162.494 289.84V306.408H153.715V255.3ZM175.551 281.852L162.494 281.926V263.288L175.551 263.214C178.453 263.214 180.74 264.077 182.412 265.802C184.133 267.528 184.994 269.698 184.994 272.311C184.994 274.974 184.133 277.242 182.412 279.116C180.691 280.94 178.404 281.852 175.551 281.852Z' fill='%23070C27'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='28' height='18' viewBox='0 0 28 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M5.7322 3.87813C10.2984 -0.444404 17.7016 -0.444404 22.2679 3.87813L22.8174 4.39834C23.0457 4.6145 23.0457 4.96488 22.8174 5.18104L20.9375 6.96061C20.8233 7.06868 20.6382 7.06868 20.5241 6.96061L19.7678 6.24475C16.5823 3.22921 11.4176 3.22921 8.23214 6.24475L7.42226 7.01137C7.30814 7.11944 7.12308 7.11944 7.00889 7.01137L5.12903 5.2318C4.90065 5.01564 4.90065 4.66526 5.12903 4.4491L5.7322 3.87813ZM26.1556 7.55852L27.8288 9.14231C28.0571 9.35846 28.0571 9.70885 27.8288 9.92501L20.2846 17.0668C20.0563 17.2828 19.6861 17.2828 19.4578 17.0668L14.1034 11.9981C14.0463 11.944 13.9538 11.944 13.8967 11.9981L8.5424 17.0668C8.3141 17.2828 7.9439 17.2828 7.7156 17.0668L0.171232 9.92493C-0.0570773 9.70878 -0.0570773 9.35839 0.171232 9.14224L1.84435 7.55838C2.07266 7.3423 2.44282 7.3423 2.67113 7.55838L8.02564 12.6271C8.08266 12.6812 8.17519 12.6812 8.23229 12.6271L13.5865 7.55838C13.8148 7.3423 14.185 7.3423 14.4133 7.55838L19.7678 12.6271C19.8249 12.6812 19.9174 12.6812 19.9745 12.6271L25.3288 7.55852C25.5572 7.34237 25.9273 7.34237 26.1556 7.55852Z' fill='%233396FF'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,null,"import React, { useState } from \"react\";\nimport { ethers } from \"ethers\";\nimport { Input, Button } from \"@airdao/ui-library\";\nimport { checkValidNumberString } from \"../../../../services/numbers\";\n\nconst percents = [25, 50, 75, 100];\n\nconst AmountInput = ({\n inputError = false,\n inputValue,\n setInputValue,\n balance,\n placeholder,\n label,\n disabled,\n fullWithdrawal,\n}) => {\n const [percent, setPercent] = useState(0);\n\n const handleChange = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (\n e.target.value === \"\" ||\n (/^[\\d.]*$/.test(e.target.value) &&\n checkValidNumberString(e.target.value))\n ) {\n setInputValue(e.target.value);\n }\n setPercent(0);\n if (fullWithdrawal) {\n fullWithdrawal(false);\n }\n };\n\n const handlePercent = (value) => {\n if (value === 100 && fullWithdrawal) {\n fullWithdrawal(true)\n }\n const parsedBalance = ethers.utils.formatEther(balance);\n setInputValue(Math.floor(parsedBalance * (value / 100)));\n setPercent(value);\n };\n\n return (\n
\n AMB
}\n disabled={disabled}\n />\n\n
\n {percents.map((el) => (\n handlePercent(el)}\n className={`deposit__percent-button ${\n el === percent ? \"deposit__percent-button_active\" : \"\"\n }`}\n >\n {el + \"%\"}\n \n ))}\n
\n \n );\n};\n\nexport default AmountInput;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport * as PropTypes from \"prop-types\";\nimport appStore from \"../../../../store/app.store\";\nimport {\n checkValidNumberString,\n parseFloatToBigNumber,\n formatRounded,\n THOUSAND,\n ZERO,\n} from \"../../../../services/numbers\";\nimport StakingWrapper from \"../../../../services/staking.wrapper\";\nimport { debugLog, formatThousand } from \"../../../../utils/helpers\";\nimport AmountInput from \"../AmountInput\";\n\nimport { Button, Notify, networkById } from \"@airdao/ui-library\";\nimport { useAccount } from \"wagmi\";\nimport { providers } from \"ethers\";\n\nconst readProvider = new providers.JsonRpcProvider(\n process.env.REACT_APP_RPC_URL\n);\n\nconst ambChainId = +process.env.REACT_APP_CHAIN_ID;\n\nconst explorerUrl = networkById[ambChainId].blockExplorers.default.url;\n\nconst Deposit = observer(({ depositInfo }) => {\n\n const { address: account, chainId } = useAccount();\n\n const [inputValue, setInputValue] = useState(\"\");\n const [inputError, setInputError] = useState(false);\n const [balance, setBalance] = useState(ZERO);\n\n const isReady = account && chainId === ambChainId;\n\n const checkoutPayment = async () => {\n if (!checkValidNumberString(inputValue)) {\n return false;\n }\n const tx = await StakingWrapper.stake(depositInfo, inputValue);\n debugLog(\"stake\", tx);\n\n if (!tx) {\n Notify.error(\"Failed to create transaction.\", null, { autoClose: 5000 });\n }\n\n setInputValue(\"\");\n\n Notify.loading(`Transaction pending.`, null, { autoClose: 5000 });\n\n try {\n await tx.wait();\n\n const amount = formatThousand(formatRounded(tx.value));\n\n Notify.success(\n `Transaction successful! You staked ${amount} AMB`,\n \n View on explorer\n ,\n { autoClose: 5000 }\n );\n } catch (err) {\n Notify.error(\n \"Transaction failed.\",\n \n View on explorer\n ,\n { autoClose: 5000 }\n );\n\n return false;\n }\n\n window.dataLayer.push({\n event: \"Stake\",\n });\n\n return appStore.setRefresh();\n };\n\n const refreshProc = async () => {\n if (readProvider && account) {\n readProvider.getBalance(account).then((balanceObj) => {\n setBalance(balanceObj);\n });\n }\n };\n\n const validateInput = useCallback(\n () =>\n !checkValidNumberString(inputValue) ||\n parseFloatToBigNumber(inputValue).lt(THOUSAND),\n [inputValue]\n );\n\n useEffect(() => {\n setInputError(inputValue !== \"\" ? validateInput() : false);\n refreshProc();\n }, [inputValue, account, depositInfo]);\n\n useEffect(() => {\n if (!account) {\n setInputValue(\"\");\n }\n }, [account]);\n\n return (\n
\n \n\n
\n
\n
Available to stake
\n
\n {formatThousand(formatRounded(balance, 2))} AMB\n
\n
\n
\n \n {!isReady\n ? \"Connect Wallet\"\n : \"Stake\"}\n \n
\n );\n});\n\nDeposit.propTypes = {\n depositInfo: PropTypes.any,\n};\n\nexport default Deposit;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { observer } from \"mobx-react-lite\";\nimport {\n checkValidNumberString,\n parseFloatToBigNumber,\n formatRounded,\n FIXED_POINT,\n ZERO,\n MIN_SHOW_STAKE,\n} from \"../../../../services/numbers\";\nimport StakingWrapper from \"../../../../services/staking.wrapper\";\nimport { debugLog, formatThousand } from \"../../../../utils/helpers\";\nimport appStore from \"../../../../store/app.store\";\nimport AmountInput from \"../AmountInput\";\n\nimport { Button, networkById, Notify } from \"@airdao/ui-library\";\nimport { useAccount } from \"wagmi\";\nimport { useEthersAdapter } from \"@airdao/ui-library\";\n\nconst ambChainId = +process.env.REACT_APP_CHAIN_ID;\n\nconst explorerUrl = networkById[ambChainId].blockExplorers.default.url;\n\nconst Withdraw = observer(({ withdrawContractInfo }) => {\n const { myStakeInAMB } = withdrawContractInfo;\n const [inputValue, setInputValue] = useState(\"\");\n const [isFullWithdrawal, setFullWithdrawal] = useState(false);\n const [afterWithdraw, setAfterWithdraw] = useState(\n () => myStakeInAMB || ZERO\n );\n\n const { isConnected: isActive, address: account, chainId } = useAccount();\n const { provider } = useEthersAdapter();\n\n const [balance, setBalance] = useState(ZERO);\n\n const isReady = isActive && chainId === ambChainId;\n\n const refreshProc = async () => {\n if (provider && isActive) {\n provider.getBalance(account).then((balanceObj) => {\n setBalance(balanceObj);\n });\n }\n };\n\n const withdrawPayment = async () => {\n if (!checkValidNumberString(inputValue)) {\n return false;\n }\n\n const tx = await StakingWrapper.unstake(\n withdrawContractInfo,\n inputValue,\n isFullWithdrawal\n );\n\n debugLog(\"withdraw\", tx);\n\n if (!tx) {\n Notify.error(\"Failed to create transaction.\", null, { autoClose: 5000 });\n }\n\n setInputValue(\"\");\n\n Notify.loading(`Transaction pending.`, null, { autoClose: 5000 });\n\n try {\n await tx.wait();\n\n Notify.success(\n `Transaction successful!`,\n \n View on explorer\n ,\n { autoClose: 5000 }\n );\n } catch (err) {\n console.log(err);\n Notify.error(\n \"Transaction failed.\",\n \n View on explorer\n ,\n { autoClose: 5000 }\n );\n return false;\n }\n window.dataLayer.push({\n event: \"Withdraw\",\n });\n return appStore.setRefresh();\n };\n\n const calculateSumAfterWithdraw = useCallback(\n () =>\n myStakeInAMB &&\n checkValidNumberString(inputValue) &&\n setAfterWithdraw(myStakeInAMB.sub(parseFloatToBigNumber(inputValue))),\n [inputValue]\n );\n\n useEffect(() => {\n calculateSumAfterWithdraw();\n refreshProc();\n return () => {\n calculateSumAfterWithdraw();\n };\n }, [inputValue, myStakeInAMB]);\n\n useEffect(() => {\n if (!isActive) {\n setInputValue(\"\");\n }\n }, [isActive]);\n\n return (\n
\n \n\n
\n
\n
Available to withdraw
\n
\n {myStakeInAMB && myStakeInAMB.gte(MIN_SHOW_STAKE)\n ? formatThousand(formatRounded(myStakeInAMB, 2))\n : 0}{\" \"}\n AMB\n
\n
\n
\n\n \n {!isReady ? \"Connect Wallet\" : \"Withdraw\"}\n \n
\n );\n});\n\nWithdraw.propTypes = {\n withdrawContractInfo: PropTypes.any,\n};\n\nexport default Withdraw;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Deposit from \"../../../pages/Staking/components/Deposit\";\nimport Withdraw from \"../../../pages/Staking/components/Withdraw\";\n\nimport { TabsRound } from \"@airdao/ui-library\";\n\nconst CollapsedContentTabs = ({ poolInfo }) => {\n const [tab, setTab] = useState(\"Stake\");\n\n return (\n <>\n \n {tab === \"Stake\" ? : null}\n {tab === \"Withdraw\" ? : null}\n \n );\n};\n\nCollapsedContentTabs.propTypes = {\n poolInfo: PropTypes.object,\n};\n\nexport default React.memo(CollapsedContentTabs);\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHeraPool(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1029_3696)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 24C18.65 24 24 18.65 24 12C24 5.34996 18.65 0 12 0C5.34996 0 0 5.34996 0 12C0 18.65 5.34996 24 12 24Z\",\n fill: \"#3568DD\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 10,\n width: 3,\n height: 4,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 14H9V18H8C6.89543 18 6 17.1046 6 16V14Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 6H7C8.10457 6 9 6.89543 9 8V10H6V6Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 18H18C18.5523 18 19 17.5523 19 17V16H17V18Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 6H14C15.1046 6 16 6.89543 16 8V10H13V6Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 11,\n width: 4,\n height: 2,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 14H16V18H15C13.8954 18 13 17.1046 13 16V14Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 13,\n y: 10,\n width: 3,\n height: 4,\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1029_3696\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHeraPool);\nexport default __webpack_public_path__ + \"static/media/hera-pool.faad72038e3c7d17cd5c6bd54b9d93b9.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPlutusPool(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1047_3756)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 0C18.6279 0 24 5.37212 24 12C24 18.6279 18.6279 24 12 24C5.37212 24 0 18.6279 0 12C0 5.37212 5.37212 0 12 0Z\",\n fill: \"#24DD9A\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 16H13V18H7V16Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 16H9V6H14.0863C14.8462 6 15.53 6.08737 16.1379 6.26212C16.7458 6.4314 17.2608 6.67986 17.6829 7.00751C18.1107 7.32969 18.4371 7.7256 18.6623 8.19522C18.8874 8.66485 19 9.19454 19 9.7843C19 10.4287 18.8762 11.0075 18.6285 11.5208C18.3809 12.0341 18.0488 12.471 17.6323 12.8314C17.2214 13.1863 16.7458 13.4594 16.2054 13.6505C15.6651 13.8416 15.0994 13.9372 14.5084 13.9372C14.4296 13.9372 14.348 13.9372 14.2636 13.9372C14.1792 13.9317 14.0835 13.9208 13.9765 13.9044V12.258C14.0385 12.2689 14.2383 12.4246 14.3058 12.43C14.3734 12.43 14.4381 12.43 14.5 12.43C14.8096 12.43 15.0882 12.3727 15.3358 12.258C15.5835 12.1433 15.7917 11.985 15.9606 11.7829C16.1351 11.5754 16.2674 11.327 16.3574 11.0375C16.4531 10.7481 16.5009 10.4259 16.5009 10.071C16.5009 9.63413 16.439 9.26007 16.3152 8.94881C16.1914 8.63754 16.0141 8.38362 15.7833 8.18703C15.5582 7.99044 15.2795 7.84573 14.9475 7.7529C14.621 7.66007 14.2552 7.61365 13.8499 7.61365H13V16Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1047_3756\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlutusPool);\nexport default __webpack_public_path__ + \"static/media/plutus-pool.6d0141d4a16be8fc55e29f85b764977c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgChevron(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.9415 7.73271C16.2271 8.03263 16.2156 8.50737 15.9157 8.79306L10.6652 13.7944C10.3755 14.0703 9.92031 14.0703 9.63064 13.7944L4.38017 8.79306C4.08025 8.50737 4.06871 8.03263 4.35441 7.73271C4.6401 7.43279 5.11483 7.42125 5.41475 7.70694L10.1479 12.2155L14.8811 7.70694C15.181 7.42125 15.6558 7.43279 15.9415 7.73271Z\",\n fill: \"#0E0E0E\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevron);\nexport default __webpack_public_path__ + \"static/media/chevron.63e263d77c60f7b97b3ee968fe102f64.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Collapse from \"@kunukn/react-collapse\";\nimport { FIXED_POINT, formatRounded } from \"../../services/numbers\";\n\nimport DisplayValue from \"../DisplayValue\";\nimport { useModal } from \"hooks\";\nimport CollapsedContentTabs from \"./CollapsedContentTabs\";\n\nimport { ReactComponent as HeraPoolIcon } from \"../../assets/svg/hera-pool.svg\";\nimport { ReactComponent as PlutusPoolIcon } from \"../../assets/svg/plutus-pool.svg\";\n\nimport { ButtonIcon } from \"@airdao/ui-library\";\nimport { ReactComponent as Chevron } from \"../../assets/svg/chevron.svg\";\nimport { useAccount } from \"wagmi\";\n\nconst StakingItem = ({\n expand = false,\n activeExpand,\n setActiveExpand,\n state = 0,\n dispatch,\n index = -1,\n poolInfo,\n}) => {\n const {\n myStakeInAMB,\n active: isPoolActive,\n contractName,\n totalStakeInAMB,\n poolAPY,\n } = poolInfo;\n\n const { chainId, isConnected: isActive } = useAccount();\n const isReady = isActive && chainId === +process.env.REACT_APP_CHAIN_ID;\n\n const { toggle: toggleLogInMethodShow } = useModal();\n\n const stakeBtnHandler = () => {\n if (expand !== false) {\n setActiveExpand(index);\n dispatch({ type: \"toggle\", index });\n if (index === activeExpand) {\n dispatch({ type: \"hide\", index });\n }\n if (index === activeExpand && !state[index]) {\n dispatch({ type: \"toggle\", index });\n }\n } else {\n toggleLogInMethodShow();\n }\n };\n\n const isOpen = state[index] && activeExpand === index;\n\n return (\n \n
\n
\n \n

\n {contractName && contractName.substring(0, 8)}\n

\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n {window.innerWidth > 1000 && (\n \n \n \n )}\n
\n\n \n
\n
\n \n
\n
\n
\n\n
\n \n \n \n
\n \n );\n};\n\nStakingItem.propTypes = {\n poolInfo: PropTypes.object,\n dispatch: PropTypes.func,\n expand: PropTypes.bool,\n state: PropTypes.array,\n index: PropTypes.number,\n activeExpand: PropTypes.number,\n setActiveExpand: PropTypes.func,\n};\nexport default React.memo(StakingItem);\n\nfunction PoolToken({ name, ...props }) {\n switch (name) {\n case \"Hera\":\n return ;\n case \"Plutus\":\n return ;\n default:\n return ;\n }\n}\n","export const getToken = async () => {\n try {\n const response = await fetch(process.env.REACT_APP_AMBROSUS_TOKEN_URL);\n const token = await response.json();\n return token;\n } catch (err) {\n return 0;\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport * as PropTypes from \"prop-types\";\nimport { BigNumber, providers } from \"ethers\";\nimport { observer } from \"mobx-react-lite\";\nimport { formatRounded } from \"../../../../services/numbers\";\nimport appStore from \"store/app.store\";\nimport { formatThousand } from \"../../../../utils/helpers\";\nimport { useAccount } from \"wagmi\";\n\nconst readProvider = new providers.JsonRpcProvider(\n process.env.REACT_APP_RPC_URL\n);\n\nconst InfoBlock = observer(({ poolsArr }) => {\n const [totalReward, setTotalReward] = useState(0);\n const [totalRewardInUsd, setTotalRewardInUsd] = useState(0);\n const [totalStaked, setTotalStaked] = useState(0);\n const [totalStakedInUsd, setTotalStakedInUsd] = useState(0);\n const [balance, setBalance] = useState();\n const [balanceInUsd, setBalanceInUsd] = useState();\n\n const { isConnected: isActive, address: account, chainId } = useAccount();\n\n let poolsRewards = [];\n let myTotalStake = [];\n\n const totalRewardCalculateHandler = (estd) => {\n poolsRewards.push(estd);\n if (poolsRewards.length === poolsArr.length) {\n const rewardInAmb =\n poolsRewards.length > 0 &&\n poolsRewards.reduceRight((acc, curr) => acc + +curr, 0);\n setTotalReward(rewardInAmb);\n const esdSum =\n appStore.tokenPrice &&\n poolsRewards.length > 0 &&\n poolsRewards.reduceRight((acc, curr) => acc + +curr, 0);\n setTotalRewardInUsd(0);\n if (esdSum && esdSum > 0 && appStore.tokenPrice) {\n setTotalRewardInUsd(esdSum * appStore.tokenPrice);\n }\n }\n };\n\n const totalStakeCalculateHandler = (stake) => {\n myTotalStake.push(stake);\n if (myTotalStake.length === poolsArr.length) {\n const totalStakeSum = myTotalStake.reduceRight(\n (acc, curr) => acc.add(curr),\n BigNumber.from(\"0\")\n );\n setTotalStaked(totalStakeSum);\n if (totalStakeSum && appStore.tokenPrice) {\n const TsSum = formatRounded(totalStakeSum);\n setTotalStakedInUsd(TsSum * appStore.tokenPrice);\n }\n }\n };\n\n const getBalance = async () => {\n if (isActive) {\n const bnBalance = await readProvider.getBalance(account);\n const numBalance = formatRounded(bnBalance, 2);\n setBalance(formatThousand(numBalance));\n if (appStore.tokenPrice) {\n setBalanceInUsd(formatThousand(numBalance * appStore.tokenPrice));\n }\n }\n };\n\n const getInfo = async () => {\n if (poolsArr.length > 0) {\n poolsRewards = [];\n myTotalStake = [];\n poolsArr.forEach((pool) => {\n const { estAR, myStakeInAMB } = pool;\n if (estAR) totalRewardCalculateHandler(estAR);\n if (myStakeInAMB) totalStakeCalculateHandler(myStakeInAMB);\n });\n }\n await getBalance();\n };\n\n useEffect(() => {\n if (isActive && chainId === +process.env.REACT_APP_CHAIN_ID) {\n getInfo();\n } else {\n const zero = formatThousand(0);\n\n setTotalReward(0);\n setTotalRewardInUsd(0);\n setTotalStaked(0);\n setTotalStakedInUsd(0);\n setBalance(zero);\n setBalanceInUsd(zero);\n }\n }, [\n poolsArr,\n totalRewardInUsd,\n totalStakedInUsd,\n isActive,\n account,\n chainId,\n ]);\n\n return (\n
\n
\n
\n
AVAILABLE FOR STAKING
\n {balance ? (\n
\n
{balance} AMB
\n
${balanceInUsd}
\n
\n ) : (\n
\n
\n {formatThousand(0)} AMB\n
\n
${formatThousand(0)}
\n
\n )}\n
\n
\n
CURRENTLY STAKING
\n {totalStaked ? (\n
\n
\n {formatThousand(formatRounded(totalStaked, 2))} AMB\n
\n
\n ${formatThousand(totalStakedInUsd)}\n
\n
\n ) : (\n
\n
\n {formatThousand(0)} AMB\n
\n
${formatThousand(0)}
\n
\n )}\n
\n
\n
EARNINGS
\n {balance ? (\n
\n
\n {formatThousand(totalReward)} AMB\n
\n
\n ${formatThousand(totalRewardInUsd)}\n
\n
\n ) : (\n
\n
\n {formatThousand(0)} AMB\n
\n
${formatThousand(0)}
\n
\n )}\n
\n
\n
\n );\n});\n\nInfoBlock.propTypes = {\n poolsArr: PropTypes.array,\n};\n\nexport default React.memo(InfoBlock);\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgInfoIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 10C18.5 5.58172 14.9183 2 10.5 2C6.08172 2 2.5 5.58172 2.5 10C2.5 14.4183 6.08172 18 10.5 18C14.9183 18 18.5 14.4183 18.5 10ZM10.0081 8.91012C10.0504 8.67687 10.2545 8.49999 10.5 8.49999C10.7455 8.49999 10.9496 8.67687 10.9919 8.91012L11 8.99999V13.5021L10.9919 13.592C10.9496 13.8253 10.7455 14.0021 10.5 14.0021C10.2545 14.0021 10.0504 13.8253 10.0081 13.592L10 13.5021V8.99999L10.0081 8.91012ZM9.75 6.74999C9.75 6.33578 10.0858 5.99999 10.5 5.99999C10.9142 5.99999 11.25 6.33578 11.25 6.74999C11.25 7.16421 10.9142 7.49999 10.5 7.49999C10.0858 7.49999 9.75 7.16421 9.75 6.74999Z\",\n fill: \"#393B40\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfoIcon);\nexport default __webpack_public_path__ + \"static/media/info-icon.23e5ae140ba8e1f49eb4aa538c803795.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgChatHelpIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.00001 10C2.00001 5.58172 5.58173 2 10 2C14.4183 2 18 5.58172 18 10C18 14.4183 14.4183 18 10 18C8.65078 18 7.37829 17.6656 6.26225 17.0748L2.62128 17.9851C2.45089 18.0277 2.27065 17.9777 2.14646 17.8536C2.02227 17.7294 1.97234 17.5491 2.01494 17.3787L2.92518 13.7378C2.33442 12.6217 2.00001 11.3492 2.00001 10ZM9.25027 7.30723C9.40317 7.13358 9.64031 7 10 7C10.3597 7 10.5968 7.13358 10.7497 7.30723C10.9113 7.49072 11 7.74463 11 8C11 8.31707 10.9286 8.52273 10.8337 8.68547C10.7328 8.85858 10.5985 8.99908 10.4106 9.19559L10.3885 9.21878C10.2003 9.41576 9.96787 9.66319 9.79142 10.0002C9.61017 10.3464 9.5 10.7611 9.5 11.2929C9.5 11.5691 9.72386 11.7929 10 11.7929C10.2761 11.7929 10.5 11.5691 10.5 11.2929C10.5 10.9085 10.5773 10.6551 10.6773 10.4641C10.7821 10.2639 10.9247 10.1051 11.1115 9.90956L11.1528 9.86652C11.3225 9.68963 11.5347 9.46855 11.6976 9.18921C11.8839 8.86964 12 8.48947 12 8C12 7.52689 11.8387 7.0308 11.5003 6.64641C11.1532 6.25219 10.6403 6 10 6C9.35969 6 8.84683 6.25219 8.49973 6.64641C8.16129 7.0308 8 7.52689 8 8C8 8.27614 8.22386 8.5 8.5 8.5C8.77614 8.5 9 8.27614 9 8C9 7.74463 9.08871 7.49072 9.25027 7.30723ZM10.6995 13.5126C10.6995 13.1262 10.3863 12.813 9.99989 12.813C9.61352 12.813 9.30029 13.1262 9.30029 13.5126C9.30029 13.899 9.61352 14.2122 9.99989 14.2122C10.3863 14.2122 10.6995 13.899 10.6995 13.5126Z\",\n fill: \"#393B40\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChatHelpIcon);\nexport default __webpack_public_path__ + \"static/media/chat-help-icon.1438ef47f9cdaf8bc8aebbb186b3b48a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHbr(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 37,\n viewBox: \"0 0 38 37\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 18.3131C0 9.27256 6.36031 1.73145 14.8107 1.88141e-05V5.94545C10.0537 7.39447 6.46549 11.5632 5.8205 16.6603H11.5356C12.3542 13.5713 15.169 11.2946 18.5155 11.2946C21.862 11.2946 24.6768 13.5713 25.4953 16.6603H31.2064C30.5614 11.5631 26.9731 7.39442 22.2161 5.94542V0C30.6665 1.7314 37.0269 9.27252 37.0269 18.3131C37.0269 28.6336 28.7381 37 18.5135 37C8.28875 37 0 28.6336 0 18.3131ZM31.1499 20.363H25.497C24.8364 22.8654 22.866 24.8357 20.3637 25.4964V31.0957C25.8899 30.2879 30.2727 25.9155 31.1499 20.363ZM16.661 31.0954V25.4947C14.1616 24.8324 12.1941 22.8633 11.5339 20.363H5.87698C6.75404 25.9148 11.1358 30.2867 16.661 31.0954Z\",\n fill: \"#FFC93E\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHbr);\nexport default __webpack_public_path__ + \"static/media/hbr.c44fa377887eca52be93f23ab61f6b99.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowShort(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.52686 10C5.52686 9.72386 5.75071 9.5 6.02686 9.5H12.8197L10.1733 6.85355C9.97804 6.65829 9.97804 6.34171 10.1733 6.14645C10.3686 5.95118 10.6851 5.95118 10.8804 6.14645L14.3804 9.64645C14.5757 9.84171 14.5757 10.1583 14.3804 10.3536L10.8804 13.8536C10.6851 14.0488 10.3686 14.0488 10.1733 13.8536C9.97804 13.6583 9.97804 13.3417 10.1733 13.1464L12.8197 10.5H6.02686C5.75071 10.5 5.52686 10.2761 5.52686 10Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowShort);\nexport default __webpack_public_path__ + \"static/media/arrow-short.4a08dc8ea2e37d7943a9f1e155b85ce2.svg\";\nexport { ForwardRef as ReactComponent };","import { FIXED_POINT } from \"../services/numbers\";\nimport StakingItem from \"../components/StakingItem\";\nimport React, { useContext, useState } from \"react\";\nimport { PoolsContext } from \"../config\";\nimport appStore from \"../store/app.store\";\n\nimport { observer } from \"mobx-react-lite\";\nimport { collapsedReducer } from \"../utils/reducers\";\nimport { useAsync } from \"../hooks\";\nimport { getToken } from \"../api\";\n\nimport { Button, Footer } from \"@airdao/ui-library\";\nimport InfoBlock from \"./Staking/components/InfoBlock\";\n\nimport { ReactComponent as InfoIcon } from \"../assets/svg/info-icon.svg\";\nimport { ReactComponent as ChatHelpIcon } from \"../assets/svg/chat-help-icon.svg\";\nimport { ReactComponent as HBRIcon } from \"../assets/svg/hbr.svg\";\nimport { ReactComponent as ArrowIcon } from \"../assets/svg/arrow-short.svg\";\nimport background from \"../assets/images/background.png\";\nimport apy from \"../assets/images/apy.png\";\n\nimport { useAccount } from \"wagmi\";\n\nconst NewStaking = observer(() => {\n const { chainId } = useAccount();\n\n const [activeExpand, setActiveExpand] = useState(-1);\n const [state, dispatch] = React.useReducer(collapsedReducer, [false]);\n const pools = useContext(PoolsContext);\n\n const {\n data: courseData,\n status: priceStatus,\n run,\n } = useAsync({\n status: appStore.tokenPrice !== undefined ? \"pending\" : \"idle\",\n data: null,\n });\n\n React.useEffect(() => {\n if (priceStatus === \"idle\") {\n run(getToken());\n }\n if (priceStatus === \"resolved\") {\n appStore.setTokenPrice(courseData?.data?.price_usd);\n appStore.setTokenChange(courseData?.data?.percent_change_24h);\n }\n }, [run, priceStatus]);\n\n return (\n <>\n \"background\"\n\n
\n
\n

Stake and Earn

\n \n
\n
\n
Pools
\n
\n Currently staking\n
\n
Total staked
\n
APY
\n
\n {pools\n .filter(\n (pool) => pool.active || pool.totalStakeInAMB.gte(FIXED_POINT)\n )\n .sort((a, b) => b.active - a.active)\n .map((item, index) => (\n \n ))}\n
\n
\n \n
\n

Earn big with Harbour!

\n \n Start earning\n \n \n
\n
\n \"35%\n
\n
\n
\n\n
\n\n
\n \n \n \n \n \n \n
\n\n

\n | React.ForwardRefExoticComponent & React.RefAttributes>,\n // TODO remove in next major\n options?: IObserverOptions\n) {\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false\n console.warn(\n `[mobx-react-lite] \\`observer(fn, { forwardRef: true })\\` is deprecated, use \\`observer(React.forwardRef(fn))\\``\n )\n }\n\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\n `[mobx-react-lite] You are trying to use \\`observer\\` on a function component wrapped in either another \\`observer\\` or \\`React.memo\\`. The observer already applies 'React.memo' for you.`\n )\n }\n\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent\n }\n\n let useForwardRef = options?.forwardRef ?? false\n let render = baseComponent\n\n const baseComponentName = baseComponent.displayName || baseComponent.name\n\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true\n render = baseComponent[\"render\"]\n if (typeof render !== \"function\") {\n throw new Error(\n `[mobx-react-lite] \\`render\\` property of ForwardRef was not a function`\n )\n }\n }\n\n let observerComponent = (props: any, ref: React.Ref) => {\n return useObserver(() => render(props, ref), baseComponentName)\n }\n\n // Don't set `displayName` for anonymous components,\n // so the `displayName` can be customized by user, see #3192.\n if (baseComponentName !== \"\") {\n ;(observerComponent as React.FunctionComponent).displayName = baseComponentName\n }\n\n // Support legacy context: `contextTypes` must be applied before `memo`\n if ((baseComponent as any).contextTypes) {\n ;(observerComponent as React.FunctionComponent).contextTypes = (\n baseComponent as any\n ).contextTypes\n }\n\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent)\n }\n\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent)\n\n copyStaticProperties(baseComponent, observerComponent)\n\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set() {\n throw new Error(\n `[mobx-react-lite] \\`${\n this.displayName || this.type?.displayName || \"Component\"\n }.contextTypes\\` must be set before applying \\`observer\\`.`\n )\n }\n })\n }\n\n return observerComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n Object.keys(base).forEach(key => {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n","import \"./utils/assertEnvironment\"\n\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\"\nimport { observerBatching } from \"./utils/observerBatching\"\nimport { useDeprecated } from \"./utils/utils\"\nimport { useObserver as useObserverOriginal } from \"./useObserver\"\nimport { enableStaticRendering } from \"./staticRendering\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\n\nobserverBatching(batch)\n\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\"\nexport { observer, IObserverOptions } from \"./observer\"\nexport { Observer } from \"./ObserverComponent\"\nexport { useLocalObservable } from \"./useLocalObservable\"\nexport { useLocalStore } from \"./useLocalStore\"\nexport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport const clearTimers = observerFinalizationRegistry[\"finalizeAllImmediately\"] ?? (() => {})\n\nexport function useObserver(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\n \"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\"\n )\n }\n return useObserverOriginal(fn, baseComponentName)\n}\n\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\"\n\nexport function useStaticRendering(enable: boolean) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\"\n )\n }\n enableStaticRendering(enable)\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 0)\n ? toastAutoClose\n : containerAutoClose;\n}\n\nexport const canUseDom = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport function canBeRendered(content: T): boolean {\n return (\n isValidElement(content) || isStr(content) || isFn(content) || isNum(content)\n );\n}\n","import { ToastPosition, TypeOptions } from '../types';\n\ntype KeyOfPosition =\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'TOP_CENTER'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'BOTTOM_CENTER';\n\ntype KeyOfType = 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR' | 'DEFAULT';\n\nexport const POSITION: { [key in KeyOfPosition]: ToastPosition } = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\n\nexport const TYPE: { [key in KeyOfType]: TypeOptions } = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default'\n};\n\nexport const enum Default {\n COLLAPSE_DURATION = 300,\n DEBOUNCE_DURATION = 50,\n CSS_NAMESPACE = 'Toastify',\n DRAGGABLE_PERCENT = 80\n}\n\nexport const enum Direction {\n X = 'x',\n Y = 'y'\n}\n\nexport const enum SyntheticEvent {\n ENTRANCE_ANIMATION_END = 'd'\n}\n","import React, { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { collapseToast } from './collapseToast';\nimport { Default, SyntheticEvent } from './constant';\n\nimport { ToastTransitionProps } from '../types';\n\nexport interface CSSTransitionProps {\n /**\n * Css class to apply when toast enter\n */\n enter: string;\n\n /**\n * Css class to apply when toast leave\n */\n exit: string;\n\n /**\n * Append current toast position to the classname.\n * If multiple classes are provided, only the last one will get the position\n * For instance `myclass--top-center`...\n * `Default: false`\n */\n appendPosition?: boolean;\n\n /**\n * Collapse toast smoothly when exit animation end\n * `Default: true`\n */\n collapse?: boolean;\n\n /**\n * Collapse transition duration\n * `Default: 300`\n */\n collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n Enter,\n Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n * enter: \"animate__animated animate__bounceIn\",\n * exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n enter,\n exit,\n appendPosition = false,\n collapse = true,\n collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n return function ToastTransition({\n children,\n position,\n preventExitTransition,\n done,\n nodeRef,\n isIn\n }: ToastTransitionProps) {\n const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n const baseClassName = useRef();\n const animationStep = useRef(AnimationStep.Enter);\n\n useLayoutEffect(() => {\n onEnter();\n }, []);\n\n useEffect(() => {\n if (!isIn) preventExitTransition ? onExited() : onExit();\n }, [isIn]);\n\n function onEnter() {\n const node = nodeRef.current!;\n baseClassName.current = node.className;\n node.className += ` ${enterClassName}`;\n node.addEventListener('animationend', onEntered);\n node.addEventListener('animationcancel', onEntered);\n }\n\n function onEntered(e: AnimationEvent) {\n if (e.target !== nodeRef.current) return;\n\n const node = nodeRef.current!;\n node.dispatchEvent(new Event(SyntheticEvent.ENTRANCE_ANIMATION_END));\n node.removeEventListener('animationend', onEntered);\n node.removeEventListener('animationcancel', onEntered);\n if (animationStep.current === AnimationStep.Enter) {\n node.className = baseClassName.current!;\n }\n }\n\n function onExit() {\n animationStep.current = AnimationStep.Exit;\n const node = nodeRef.current!;\n\n node.className += ` ${exitClassName}`;\n node.addEventListener('animationend', onExited);\n }\n\n function onExited() {\n const node = nodeRef.current!;\n\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n }\n\n return <>{children};\n };\n}\n","import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n node: HTMLElement,\n done: () => void,\n duration = Default.COLLAPSE_DURATION\n) {\n const { scrollHeight, style } = node;\n\n requestAnimationFrame(() => {\n style.minHeight = 'initial';\n style.height = scrollHeight + 'px';\n style.transition = `all ${duration}ms`;\n\n requestAnimationFrame(() => {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(done, duration as number);\n });\n });\n}\n","import {\n Id,\n ToastContent,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\nexport const enum Event {\n Show,\n Clear,\n DidMount,\n WillUnmount,\n Change,\n ClearWaitingQueue\n}\n\ntype OnShowCallback = (\n content: ToastContent,\n options: NotValidatedToastProps\n) => void;\ntype OnClearCallback = (id?: Id) => void;\ntype OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;\ntype OnDidMountCallback = (containerInstance: ContainerInstance) => void;\ntype OnWillUnmountCallback = OnDidMountCallback;\nexport type OnChangeCallback = (\n toast: number,\n containerId?: number | string\n) => void;\ntype Callback =\n | OnShowCallback\n | OnClearCallback\n | OnClearWaitingQueue\n | OnDidMountCallback\n | OnWillUnmountCallback\n | OnChangeCallback;\ntype TimeoutId = ReturnType;\n\nexport interface EventManager {\n list: Map;\n emitQueue: Map;\n on(event: Event.Show, callback: OnShowCallback): EventManager;\n on(event: Event.Clear, callback: OnClearCallback): EventManager;\n on(\n event: Event.ClearWaitingQueue,\n callback: OnClearWaitingQueue\n ): EventManager;\n on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;\n on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;\n on(event: Event.Change, callback: OnChangeCallback): EventManager;\n off(event: Event, callback?: Callback): EventManager;\n cancelEmit(event: Event): EventManager;\n emit(\n event: Event.Show,\n content: React.ReactNode,\n options: NotValidatedToastProps\n ): void;\n emit(event: Event.Clear, id?: string | number): void;\n emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;\n emit(event: Event.DidMount, containerInstance: ContainerInstance): void;\n emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;\n emit(event: Event.Change, toast: number, containerId?: number | string): void;\n}\n\nexport const eventManager: EventManager = {\n list: new Map(),\n emitQueue: new Map(),\n\n on(event: Event, callback: Callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event)!.push(callback);\n return this;\n },\n\n off(event, callback) {\n if (callback) {\n const cb = this.list.get(event)!.filter(cb => cb !== callback);\n this.list.set(event, cb);\n return this;\n }\n this.list.delete(event);\n return this;\n },\n\n cancelEmit(event) {\n const timers = this.emitQueue.get(event);\n if (timers) {\n timers.forEach(clearTimeout);\n this.emitQueue.delete(event);\n }\n\n return this;\n },\n\n /**\n * Enqueue the event at the end of the call stack\n * Doing so let the user call toast as follow:\n * toast('1')\n * toast('2')\n * toast('3')\n * Without setTimemout the code above will not work\n */\n emit(event: Event, ...args: any[]) {\n this.list.has(event) &&\n this.list.get(event)!.forEach((callback: Callback) => {\n const timer: TimeoutId = setTimeout(() => {\n // @ts-ignore\n callback(...args);\n }, 0);\n\n this.emitQueue.has(event) || this.emitQueue.set(event, []);\n this.emitQueue.get(event)!.push(timer);\n });\n }\n};\n","import {\n useEffect,\n useRef,\n useReducer,\n cloneElement,\n isValidElement,\n useState\n} from 'react';\nimport {\n parseClassName,\n canBeRendered,\n isBool,\n isFn,\n isNum,\n isStr,\n isToastIdValid,\n getAutoCloseDelay\n} from '../utils';\nimport { eventManager, Event } from '../core/eventManager';\n\nimport {\n Id,\n ToastContainerProps,\n ToastProps,\n ToastContent,\n Toast,\n ToastPosition,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n ToastTransition\n} from '../types';\n\ninterface QueuedToast {\n toastContent: ToastContent;\n toastProps: ToastProps;\n staleId?: Id;\n}\n\nexport interface ContainerInstance {\n toastKey: number;\n displayedToast: number;\n props: ToastContainerProps;\n containerId?: Id | null;\n isToastActive: (toastId: Id) => boolean;\n getToast: (id: Id) => Toast | null | undefined;\n queue: QueuedToast[];\n count: number;\n}\n\nexport function useToastContainer(props: ToastContainerProps) {\n const [, forceUpdate] = useReducer(x => x + 1, 0);\n const [toastIds, setToastIds] = useState([]);\n const containerRef = useRef(null);\n const toastToRender = useRef(new Map()).current;\n const isToastActive = (id: Id) => toastIds.indexOf(id) !== -1;\n const instance = useRef({\n toastKey: 1,\n displayedToast: 0,\n count: 0,\n queue: [],\n props,\n containerId: null,\n isToastActive,\n getToast: id => toastToRender.get(id)\n }).current;\n\n useEffect(() => {\n instance.containerId = props.containerId;\n eventManager\n .cancelEmit(Event.WillUnmount)\n .on(Event.Show, buildToast)\n .on(Event.Clear, toastId => containerRef.current && removeToast(toastId))\n .on(Event.ClearWaitingQueue, clearWaitingQueue)\n .emit(Event.DidMount, instance);\n\n return () => eventManager.emit(Event.WillUnmount, instance);\n }, []);\n\n useEffect(() => {\n instance.isToastActive = isToastActive;\n instance.displayedToast = toastIds.length;\n eventManager.emit(Event.Change, toastIds.length, props.containerId);\n }, [toastIds]);\n\n useEffect(() => {\n instance.props = props;\n });\n\n function clearWaitingQueue({ containerId }: ClearWaitingQueueParams) {\n const { limit } = instance.props;\n if (limit && (!containerId || instance.containerId === containerId)) {\n instance.count -= instance.queue.length;\n instance.queue = [];\n }\n }\n\n function removeToast(toastId?: Id) {\n setToastIds(state =>\n isToastIdValid(toastId) ? state.filter(id => id !== toastId) : []\n );\n }\n\n function dequeueToast() {\n const {\n toastContent,\n toastProps,\n staleId\n } = instance.queue.shift() as QueuedToast;\n appendToast(toastContent, toastProps, staleId);\n }\n\n /**\n * check if a container is attached to the dom\n * check for multi-container, build only if associated\n * check for duplicate toastId if no update\n */\n function isNotValid(options: NotValidatedToastProps) {\n return (\n !containerRef.current ||\n (instance.props.enableMultiContainer &&\n options.containerId !== instance.props.containerId) ||\n (toastToRender.has(options.toastId) && options.updateId == null)\n );\n }\n\n // this function and all the function called inside needs to rely on refs\n function buildToast(\n content: ToastContent,\n { delay, staleId, ...options }: NotValidatedToastProps\n ) {\n if (!canBeRendered(content) || isNotValid(options)) return;\n\n const { toastId, updateId, data } = options;\n const { props } = instance;\n const closeToast = () => removeToast(toastId);\n const isNotAnUpdate = updateId == null;\n\n if (isNotAnUpdate) instance.count++;\n\n const toastProps: ToastProps = {\n toastId,\n updateId,\n isLoading: options.isLoading,\n theme: options.theme || props.theme!,\n icon: options.icon != null ? options.icon : props.icon,\n isIn: false,\n key: options.key || instance.toastKey++,\n type: options.type!,\n closeToast: closeToast,\n closeButton: options.closeButton,\n rtl: props.rtl,\n position: options.position || (props.position as ToastPosition),\n transition: options.transition || (props.transition as ToastTransition),\n className: parseClassName(options.className || props.toastClassName),\n bodyClassName: parseClassName(\n options.bodyClassName || props.bodyClassName\n ),\n style: options.style || props.toastStyle,\n bodyStyle: options.bodyStyle || props.bodyStyle,\n onClick: options.onClick || props.onClick,\n pauseOnHover: isBool(options.pauseOnHover)\n ? options.pauseOnHover\n : props.pauseOnHover,\n pauseOnFocusLoss: isBool(options.pauseOnFocusLoss)\n ? options.pauseOnFocusLoss\n : props.pauseOnFocusLoss,\n draggable: isBool(options.draggable)\n ? options.draggable\n : props.draggable,\n draggablePercent:\n options.draggablePercent || (props.draggablePercent as number),\n draggableDirection:\n options.draggableDirection || props.draggableDirection,\n closeOnClick: isBool(options.closeOnClick)\n ? options.closeOnClick\n : props.closeOnClick,\n progressClassName: parseClassName(\n options.progressClassName || props.progressClassName\n ),\n progressStyle: options.progressStyle || props.progressStyle,\n autoClose: options.isLoading\n ? false\n : getAutoCloseDelay(options.autoClose, props.autoClose),\n hideProgressBar: isBool(options.hideProgressBar)\n ? options.hideProgressBar\n : props.hideProgressBar,\n progress: options.progress,\n role: options.role || props.role,\n deleteToast() {\n toastToRender.delete(toastId);\n const queueLen = instance.queue.length;\n instance.count = isToastIdValid(toastId)\n ? instance.count - 1\n : instance.count - instance.displayedToast;\n\n if (instance.count < 0) instance.count = 0;\n\n if (queueLen > 0) {\n const freeSlot = isToastIdValid(toastId) ? 1 : instance.props.limit!;\n\n if (queueLen === 1 || freeSlot === 1) {\n instance.displayedToast++;\n dequeueToast();\n } else {\n const toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n instance.displayedToast = toDequeue;\n\n for (let i = 0; i < toDequeue; i++) dequeueToast();\n }\n } else {\n forceUpdate();\n }\n }\n };\n\n if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n if (isFn(options.onClose)) toastProps.onClose = options.onClose;\n\n toastProps.closeButton = props.closeButton;\n\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n toastProps.closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n toastProps.closeButton = canBeRendered(props.closeButton)\n ? props.closeButton\n : true;\n }\n\n let toastContent = content;\n\n if (isValidElement(content) && !isStr(content.type)) {\n toastContent = cloneElement(content, {\n closeToast,\n toastProps,\n data\n });\n } else if (isFn(content)) {\n toastContent = content({ closeToast, toastProps, data });\n }\n\n // not handling limit + delay by design. Waiting for user feedback first\n if (\n props.limit &&\n props.limit > 0 &&\n instance.count > props.limit &&\n isNotAnUpdate\n ) {\n instance.queue.push({ toastContent, toastProps, staleId });\n } else if (isNum(delay) && (delay as number) > 0) {\n setTimeout(() => {\n appendToast(toastContent, toastProps, staleId);\n }, delay);\n } else {\n appendToast(toastContent, toastProps, staleId);\n }\n }\n\n function appendToast(\n content: ToastContent,\n toastProps: ToastProps,\n staleId?: Id\n ) {\n const { toastId } = toastProps;\n\n if (staleId) toastToRender.delete(staleId);\n\n toastToRender.set(toastId, {\n content,\n props: toastProps\n });\n setToastIds(state => [...state, toastId].filter(id => id !== staleId));\n }\n\n function getToastToRender(\n cb: (position: ToastPosition, toastList: Toast[]) => T\n ) {\n const toRender = new Map();\n const collection = Array.from(toastToRender.values());\n\n if (props.newestOnTop) collection.reverse();\n\n collection.forEach(toast => {\n const { position } = toast.props;\n toRender.has(position) || toRender.set(position, []);\n toRender.get(position)!.push(toast);\n });\n\n return Array.from(toRender, p => cb(p[0], p[1]));\n }\n\n return {\n getToastToRender,\n containerRef,\n isToastActive\n };\n}\n","import {\n useState,\n useRef,\n useEffect,\n isValidElement,\n DOMAttributes\n} from 'react';\n\nimport { isFn, Default, Direction, SyntheticEvent } from '../utils';\nimport { ToastProps } from '../types';\n\ninterface Draggable {\n start: number;\n x: number;\n y: number;\n delta: number;\n removalDistance: number;\n canCloseOnClick: boolean;\n canDrag: boolean;\n boundingRect: DOMRect | null;\n didMove: boolean;\n}\n\ntype DragEvent = MouseEvent & TouchEvent;\n\nfunction getX(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientX\n : e.clientX;\n}\n\nfunction getY(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientY\n : e.clientY;\n}\n\nexport function useToast(props: ToastProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [preventExitTransition, setPreventExitTransition] = useState(false);\n const toastRef = useRef(null);\n const drag = useRef({\n start: 0,\n x: 0,\n y: 0,\n delta: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n boundingRect: null,\n didMove: false\n }).current;\n const syncProps = useRef(props);\n const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n useEffect(() => {\n syncProps.current = props;\n });\n\n useEffect(() => {\n if (toastRef.current)\n toastRef.current.addEventListener(\n SyntheticEvent.ENTRANCE_ANIMATION_END,\n playToast,\n { once: true }\n );\n\n if (isFn(props.onOpen))\n props.onOpen(isValidElement(props.children) && props.children.props);\n\n return () => {\n const props = syncProps.current;\n if (isFn(props.onClose))\n props.onClose(isValidElement(props.children) && props.children.props);\n };\n }, []);\n\n useEffect(() => {\n props.pauseOnFocusLoss && bindFocusEvents();\n return () => {\n props.pauseOnFocusLoss && unbindFocusEvents();\n };\n }, [props.pauseOnFocusLoss]);\n\n function onDragStart(\n e: React.MouseEvent | React.TouchEvent\n ) {\n if (props.draggable) {\n bindDragEvents();\n const toast = toastRef.current!;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n drag.boundingRect = toast.getBoundingClientRect();\n toast.style.transition = '';\n drag.x = getX(e.nativeEvent as DragEvent);\n drag.y = getY(e.nativeEvent as DragEvent);\n\n if (props.draggableDirection === Direction.X) {\n drag.start = drag.x;\n drag.removalDistance =\n toast.offsetWidth * (props.draggablePercent / 100);\n } else {\n drag.start = drag.y;\n drag.removalDistance =\n toast.offsetHeight *\n (props.draggablePercent === Default.DRAGGABLE_PERCENT\n ? props.draggablePercent * 1.5\n : props.draggablePercent / 100);\n }\n }\n }\n\n function onDragTransitionEnd() {\n if (drag.boundingRect) {\n const { top, bottom, left, right } = drag.boundingRect;\n\n if (\n props.pauseOnHover &&\n drag.x >= left &&\n drag.x <= right &&\n drag.y >= top &&\n drag.y <= bottom\n ) {\n pauseToast();\n } else {\n playToast();\n }\n }\n }\n\n function playToast() {\n setIsRunning(true);\n }\n\n function pauseToast() {\n setIsRunning(false);\n }\n\n function bindFocusEvents() {\n if (!document.hasFocus()) pauseToast();\n\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n\n function bindDragEvents() {\n drag.didMove = false;\n document.addEventListener('mousemove', onDragMove);\n document.addEventListener('mouseup', onDragEnd);\n\n document.addEventListener('touchmove', onDragMove);\n document.addEventListener('touchend', onDragEnd);\n }\n\n function unbindDragEvents() {\n document.removeEventListener('mousemove', onDragMove);\n document.removeEventListener('mouseup', onDragEnd);\n\n document.removeEventListener('touchmove', onDragMove);\n document.removeEventListener('touchend', onDragEnd);\n }\n\n function onDragMove(e: MouseEvent | TouchEvent) {\n const toast = toastRef.current!;\n if (drag.canDrag && toast) {\n drag.didMove = true;\n if (isRunning) pauseToast();\n drag.x = getX(e as DragEvent);\n drag.y = getY(e as DragEvent);\n if (props.draggableDirection === Direction.X) {\n drag.delta = drag.x - drag.start;\n } else {\n drag.delta = drag.y - drag.start;\n }\n\n // prevent false positif during a toast click\n if (drag.start !== drag.x) drag.canCloseOnClick = false;\n toast.style.transform = `translate${props.draggableDirection}(${drag.delta}px)`;\n toast.style.opacity = `${1 -\n Math.abs(drag.delta / drag.removalDistance)}`;\n }\n }\n\n function onDragEnd() {\n unbindDragEvents();\n const toast = toastRef.current!;\n if (drag.canDrag && drag.didMove && toast) {\n drag.canDrag = false;\n if (Math.abs(drag.delta) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast();\n return;\n }\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.transform = `translate${props.draggableDirection}(0)`;\n toast.style.opacity = '1';\n }\n }\n\n const eventHandlers: DOMAttributes = {\n onMouseDown: onDragStart,\n onTouchStart: onDragStart,\n onMouseUp: onDragTransitionEnd,\n onTouchEnd: onDragTransitionEnd\n };\n\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n eventHandlers.onMouseLeave = playToast;\n }\n\n // prevent toast from closing when user drags the toast\n if (closeOnClick) {\n eventHandlers.onClick = (e: React.MouseEvent) => {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast();\n };\n }\n\n return {\n playToast,\n pauseToast,\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n };\n}\n","import * as React from 'react';\nimport { Default } from '../utils';\nimport { Theme, TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n closeToast: (e: React.MouseEvent) => void;\n type: TypeOptions;\n ariaLabel?: string;\n theme: Theme;\n}\n\nexport function CloseButton({\n closeToast,\n theme,\n ariaLabel = 'close'\n}: CloseButtonProps) {\n return (\n {\n e.stopPropagation();\n closeToast(e);\n }}\n aria-label={ariaLabel}\n >\n \n \n \n \n );\n}\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { TYPE, Default, isFn } from './../utils';\nimport { TypeOptions, ToastClassName, Theme } from '../types';\n\nexport interface ProgressBarProps {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: number;\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: boolean;\n\n /**\n * Func to close the current toast\n */\n closeToast: () => void;\n\n /**\n * Optional type : info, success ...\n */\n type: TypeOptions;\n\n /**\n * The theme that is currently used\n */\n theme: Theme;\n\n /**\n * Hide or not the progress bar\n */\n hide?: boolean;\n\n /**\n * Optionnal className\n */\n className?: ToastClassName;\n\n /**\n * Optionnal inline style\n */\n style?: React.CSSProperties;\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress?: boolean;\n\n /**\n * Controlled progress value\n */\n progress?: number | string;\n\n /**\n * Support rtl content\n */\n rtl?: boolean;\n\n /**\n * Tell if the component is visible on screen or not\n */\n isIn?: boolean;\n}\n\nexport function ProgressBar({\n delay,\n isRunning,\n closeToast,\n type,\n hide,\n className,\n style: userStyle,\n controlledProgress,\n progress,\n rtl,\n isIn,\n theme\n}: ProgressBarProps) {\n const style: React.CSSProperties = {\n ...userStyle,\n animationDuration: `${delay}ms`,\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1\n };\n\n if (controlledProgress) style.transform = `scaleX(${progress})`;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__progress-bar`,\n controlledProgress\n ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n `${Default.CSS_NAMESPACE}__progress-bar-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n }\n );\n const classNames = isFn(className)\n ? className({\n rtl,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n\n // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n const animationEvent = {\n [controlledProgress && progress! >= 1\n ? 'onTransitionEnd'\n : 'onAnimationEnd']:\n controlledProgress && progress! < 1\n ? null\n : () => {\n isIn && closeToast();\n }\n };\n\n // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n return (\n \n );\n}\n\nProgressBar.defaultProps = {\n type: TYPE.DEFAULT,\n hide: false\n};\n","import * as React from 'react';\n\nimport { Theme, TypeOptions } from '../types';\nimport { Default } from '../utils';\n\n/**\n * Used when providing custom icon\n */\nexport interface IconProps {\n theme: Theme;\n type: TypeOptions;\n}\n\nexport type BuiltInIconProps = React.SVGProps & IconProps;\n\nconst Svg: React.FC = ({ theme, type, ...rest }) => (\n \n);\n\nfunction Warning(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Info(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Success(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Error(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Spinner() {\n return