{"version":3,"file":"static/chunks/855-0711bc4c957ed7a4.js","mappings":"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AM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAA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","sources":["webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/constants/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/contracts/types/factories/ERC20OrderRouter__factory.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/contracts/types/factories/ERC20__factory.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/contracts/types/factories/GelatoLimitOrders__factory.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/contracts/types/factories/Multicall__factory.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/contracts/types/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/limit-orders/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/stoplimit-orders/core.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/stoplimit-orders/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/types/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/utils/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/utils/queries/constants.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/utils/queries/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/dist/utils/queries/stoplimit.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql-request/dist/createRequestBody.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql-request/dist/index.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql-request/dist/types.js","webpack://_N_E/./node_modules/aes-js/index.js","webpack://_N_E/./node_modules/@ethersproject/hash/lib.esm/message.js","webpack://_N_E/./node_modules/@ethersproject/pbkdf2/lib.esm/pbkdf2.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/wordlist.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/lang-en.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/wordlists.js","webpack://_N_E/./node_modules/@ethersproject/hdnode/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/hdnode/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/random/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/random/lib.esm/random.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/utils.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/keystore.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/crowdsale.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/inspect.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/wallet/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/wallet/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/constants/lib.esm/strings.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/ws.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/websocket-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/ankr-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/cloudflare-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/etherscan-provider.js","webpack://_N_E/./node_modules/@ethersproject/random/lib.esm/shuffle.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/fallback-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/ipc-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/infura-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/nodesmith-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/pocket-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/strings/lib.esm/idna.js","webpack://_N_E/./node_modules/ethers/lib.esm/_version.js","webpack://_N_E/./node_modules/ethers/lib.esm/ethers.js","webpack://_N_E/./node_modules/ethers/lib.esm/index.js","webpack://_N_E/./node_modules/scrypt-js/scrypt.js","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/jsutils/inspect.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/jsutils/defineInspect.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/jsutils/invariant.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/language/ast.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/language/visitor.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/language/printer.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/graphql/language/blockString.mjs","webpack://_N_E/./node_modules/@gelatonetwork/limit-orders-lib/node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS = exports.GENERIC_GAS_LIMIT_ORDER_EXECUTION = exports.NATIVE_WRAPPED_TOKEN_ADDRESS = exports.NATIVE_TOKEN_NAME = exports.NATIVE_WRAPPED_TOKEN_TICKER = exports.NATIVE_TOKEN_TICKER = exports.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER = exports.GELATO_LIMIT_ORDERS_MODULE_FLASHBOTS_ADDRESS = exports.GELATO_LIMIT_ORDERS_MODULE_ADDRESS = exports.GELATO_LIMIT_ORDERS_ADDRESS = exports.SUBGRAPH_URL = exports.OLD_SUBGRAPH_URL = exports.NETWORK_STOP_LIMIT_HANDLERS = exports.NETWORK_HANDLERS = exports.NETWORK_NAME = exports.HANDLERS_ADDRESSES = exports.LIMIT_ORDER_SLIPPAGE = exports.STOP_LIMIT_SLIPPAGE_BPS = exports.BPS_GELATO_FEE = exports.CHAIN_ID = exports.MAX_LIFETIME_IN_SECONDS = exports.SLIPPAGE_BPS = exports.ETH_ADDRESS = void 0;\nexports.ETH_ADDRESS = \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\";\nexports.SLIPPAGE_BPS = 40; // 0.4%\nexports.MAX_LIFETIME_IN_SECONDS = 7889238; // 3 months in seconds\nexports.CHAIN_ID = {\n MAINNET: 1,\n ROPSTEN: 3,\n GOERLI: 5,\n CRONOS: 25,\n BSC: 56,\n MATIC: 137,\n FANTOM: 250,\n AVAX: 43114,\n};\nexports.BPS_GELATO_FEE = {\n [exports.CHAIN_ID.MAINNET]: 10,\n [exports.CHAIN_ID.MATIC]: 10,\n [exports.CHAIN_ID.FANTOM]: 10,\n [exports.CHAIN_ID.BSC]: 10,\n [exports.CHAIN_ID.AVAX]: 10,\n [exports.CHAIN_ID.CRONOS]: 10,\n};\nexports.STOP_LIMIT_SLIPPAGE_BPS = {\n [exports.CHAIN_ID.MAINNET]: 500,\n [exports.CHAIN_ID.ROPSTEN]: 500,\n [exports.CHAIN_ID.MATIC]: 500,\n [exports.CHAIN_ID.FANTOM]: 500,\n [exports.CHAIN_ID.BSC]: 500,\n [exports.CHAIN_ID.AVAX]: 500,\n [exports.CHAIN_ID.CRONOS]: 500,\n};\nexports.LIMIT_ORDER_SLIPPAGE = {\n [exports.CHAIN_ID.MAINNET]: 40,\n [exports.CHAIN_ID.ROPSTEN]: 40,\n [exports.CHAIN_ID.MATIC]: 40,\n [exports.CHAIN_ID.FANTOM]: 40,\n [exports.CHAIN_ID.BSC]: 40,\n [exports.CHAIN_ID.AVAX]: 40,\n [exports.CHAIN_ID.CRONOS]: 40,\n};\nexports.HANDLERS_ADDRESSES = {\n // UniswapV2Router02Handler\n [exports.CHAIN_ID.MAINNET]: {\n [\"uniswap\"]: \"0x837c03414fb86861f28ca7e91e5fd770fda0f52d\",\n [\"uniswap_stoplimit\"]: \"0xf437a1a98566872f734bd18addf4bb610d1f887b\",\n },\n // UniswapV2Router02Handler\n [exports.CHAIN_ID.ROPSTEN]: {\n [\"uniswap\"]: \"0x1f397f95d31eb20183b69d685a5060cfdefd508b\",\n [\"quickswap_stoplimit\"]: \"0x87bE4Eb9dFb2DefcEA035D3010f33584Fc8ddDB5\",\n },\n // UniswapV2Router02Handler\n [exports.CHAIN_ID.MATIC]: {\n [\"quickswap\"]: \"0xaccbd2c6ad75ad3394dc5f4b1f606bf111e4eae3\",\n [\"polydex\"]: \"0x00fc86d360162e4672ec6B427E12ed36F39f1f53\",\n [\"cafeswap\"]: \"0xd167afcee4e9a89e69646fd3c27e58b61d1b7f97\",\n [\"mmfinance\"]: \"0xfbc6b53fa3792a95f37ac8d66e5110f41da0d976\",\n [\"quickswap_stoplimit\"]: \"0x51cc226648f8de65513de7cdfd3e7b116156234e\",\n },\n // UniswapV2Router02Handler\n [exports.CHAIN_ID.FANTOM]: {\n [\"spiritswap\"]: \"0x5fb00386558ccc219e51b69d8e963ef20b0c267a\",\n [\"spookyswap\"]: \"0x228ffd7122d202c0cd24330892881c47b0817c7a\",\n [\"bombswap\"]: \"0x87C4Fbd67f6DD8a1B5EFD9879956c728C97afeFe\",\n [\"defyswap\"]: \"0x3d401587320522a5e0bb973d10a852430a8edbbd\",\n [\"tombswap\"]: \"0xc72ef1bae14d0be7ec28c149e5e24659115f7c90\",\n [\"protofi\"]: \"0xfd2c20e265c130dc01d5cacc3012d3205e49c8b5\",\n [\"spiritswap_stoplimit\"]: \"0x6ea82c72732389c5149326e048a46be9f8bec8e8\",\n [\"spookyswap_stoplimit\"]: \"0xe912cd26c4a4cfffc175a297f1328ab23313a1a7\",\n },\n // UniswapV2Router02Handler\n [exports.CHAIN_ID.BSC]: {\n [\"pancakeswap\"]: \"0x88f8CCC064bA2D39cF08D57B6e7504a7B6bE8E4e\",\n [\"pancakeswap_stoplimit\"]: \"0x84b826bcd26f1bc0cd5fbbdef7f5b8965d6bbb38\",\n },\n // UniswapV2Router02Handler\n [exports.CHAIN_ID.AVAX]: {\n [\"traderjoe\"]: \"0x88f8CCC064bA2D39cF08D57B6e7504a7B6bE8E4e\",\n [\"pangolin\"]: \"0x8b206547cfe6f35a77ddab2d6d97260765a349ef\",\n [\"pangolin_stoplimit\"]: \"0xb4c53e2e32caf977d61a8a776bdc44837a5d0d91\",\n [\"traderjoe_stoplimit\"]: \"0xcf497830e43836738bdd0c3d7e09b599ddf081b2\",\n },\n [exports.CHAIN_ID.CRONOS]: {\n [\"vvsfinance\"]: \"0x6b9da2978ebe1c60d2cdaf52ee6c498cd8bb3f16\",\n [\"mmfinance\"]: \"0xee5154b3408e762d935f79ddef3a4ba56ac4d102\",\n },\n};\nexports.NETWORK_NAME = {\n [exports.CHAIN_ID.MAINNET]: \"Ethereum\",\n [exports.CHAIN_ID.ROPSTEN]: \"Ropsten\",\n [exports.CHAIN_ID.GOERLI]: \"Goerli\",\n [exports.CHAIN_ID.MATIC]: \"Polygon (Matic)\",\n [exports.CHAIN_ID.FANTOM]: \"FANTOM\",\n [exports.CHAIN_ID.BSC]: \"BSC\",\n [exports.CHAIN_ID.AVAX]: \"AVAX\",\n [exports.CHAIN_ID.CRONOS]: \"Cronos\",\n};\nexports.NETWORK_HANDLERS = {\n [exports.CHAIN_ID.MAINNET]: [\"uniswap\", \"uniswap_stoplimit\"],\n [exports.CHAIN_ID.ROPSTEN]: [\"uniswap\", \"quickswap_stoplimit\"],\n [exports.CHAIN_ID.MATIC]: [\n \"quickswap\",\n \"polydex\",\n \"cafeswap\",\n \"mmfinance\",\n \"quickswap_stoplimit\",\n ],\n [exports.CHAIN_ID.FANTOM]: [\n \"spiritswap\",\n \"spookyswap\",\n \"bombswap\",\n \"defyswap\",\n \"tombswap\",\n \"protofi\",\n \"spiritswap_stoplimit\",\n \"spookyswap_stoplimit\",\n ],\n [exports.CHAIN_ID.BSC]: [\"pancakeswap\", \"pancakeswap_stoplimit\"],\n [exports.CHAIN_ID.AVAX]: [\n \"traderjoe\",\n \"pangolin\",\n \"pangolin_stoplimit\",\n \"traderjoe_stoplimit\",\n ],\n [exports.CHAIN_ID.CRONOS]: [\"vvsfinance\", \"mmfinance\"],\n};\nexports.NETWORK_STOP_LIMIT_HANDLERS = {\n [exports.CHAIN_ID.MAINNET]: [\"uniswap_stoplimit\"],\n [exports.CHAIN_ID.ROPSTEN]: [\"quickswap_stoplimit\"],\n [exports.CHAIN_ID.MATIC]: [\"quickswap_stoplimit\"],\n [exports.CHAIN_ID.BSC]: [\"pancakeswap_stoplimit\"],\n [exports.CHAIN_ID.FANTOM]: [\"spookyswap_stoplimit\", \"spiritswap_stoplimit\"],\n [exports.CHAIN_ID.AVAX]: [\"traderjoe_stoplimit\", \"pangolin_stoplimit\"],\n};\nexports.OLD_SUBGRAPH_URL = {\n [exports.CHAIN_ID.MAINNET]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders\",\n [exports.CHAIN_ID.ROPSTEN]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-ropsten\",\n [exports.CHAIN_ID.MATIC]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-polygon\",\n [exports.CHAIN_ID.FANTOM]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-fantom\",\n};\nexports.SUBGRAPH_URL = {\n [exports.CHAIN_ID.MAINNET]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-ii\",\n [exports.CHAIN_ID.MATIC]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-polygon-ii\",\n [exports.CHAIN_ID.FANTOM]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-fantom-ii\",\n [exports.CHAIN_ID.BSC]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-bsc\",\n [exports.CHAIN_ID.AVAX]: \"https://api.thegraph.com/subgraphs/name/gelatodigital/limit-orders-avax\",\n [exports.CHAIN_ID.CRONOS]: \"https://graph.cronoslabs.com/subgraphs/name/gelatonetwork/limit-orders-cronos\",\n};\nexports.GELATO_LIMIT_ORDERS_ADDRESS = {\n [exports.CHAIN_ID.MAINNET]: \"0x36049D479A97CdE1fC6E2a5D2caE30B666Ebf92B\",\n [exports.CHAIN_ID.ROPSTEN]: \"0x0e5096D201Fe2985f5C26432A76f145D6e5D1453\",\n [exports.CHAIN_ID.GOERLI]: \"0xa0453c6ab71fe3da89640ee2503326bd0899a589\",\n [exports.CHAIN_ID.MATIC]: \"0x38c4092b28dAB7F3d98eE6524549571c283cdfA5\",\n [exports.CHAIN_ID.FANTOM]: \"0x05Ad1094Eb6Cde564d732196F6754Ee464896031\",\n [exports.CHAIN_ID.BSC]: \"0x0c30D3d66bc7C73A83fdA929888c34dcb24FD599\",\n [exports.CHAIN_ID.AVAX]: \"0x0c30D3d66bc7C73A83fdA929888c34dcb24FD599\",\n [exports.CHAIN_ID.CRONOS]: \"0x5d41545c190637b9337ec5ffa89bac5ee0cb3a4c\",\n};\nexports.GELATO_LIMIT_ORDERS_MODULE_ADDRESS = {\n [exports.CHAIN_ID.MAINNET]: \"0x037fc8e71445910e1E0bBb2a0896d5e9A7485318\",\n [exports.CHAIN_ID.ROPSTEN]: \"0x3f3C13b09B601fb6074124fF8D779d2964caBf8B\",\n [exports.CHAIN_ID.GOERLI]: \"0xCf8EDB3333Fae73b23f689229F4De6Ac95d1f707\",\n [exports.CHAIN_ID.MATIC]: \"0x5A36178E38864F5E724A2DaF5f9cD9bA473f7903\",\n [exports.CHAIN_ID.FANTOM]: \"0xf2253BF9a0BD002300cFe6f4E630d755669f6DCa\",\n [exports.CHAIN_ID.BSC]: \"0xb7499a92fc36e9053a4324aFfae59d333635D9c3\",\n [exports.CHAIN_ID.AVAX]: \"0xb7499a92fc36e9053a4324aFfae59d333635D9c3\",\n [exports.CHAIN_ID.CRONOS]: \"0xf437a1a98566872f734BD18aDdF4BB610D1F887b\",\n};\nexports.GELATO_LIMIT_ORDERS_MODULE_FLASHBOTS_ADDRESS = {\n [exports.CHAIN_ID.MAINNET]: \"0xbeC333EDE1A0687D2b9624F8C073a54c93ba9777\",\n [exports.CHAIN_ID.GOERLI]: \"0xCf8EDB3333Fae73b23f689229F4De6Ac95d1f707\",\n};\nexports.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER = {\n [exports.CHAIN_ID.MAINNET]: \"0x5fb00386558ccc219e51b69d8e963ef20b0c267a\",\n [exports.CHAIN_ID.ROPSTEN]: \"0x9c06ff386779cc2269d482bcecf2378a4ff5cb90\",\n [exports.CHAIN_ID.GOERLI]: \"0x247A1306b6122ba28862b19a95004899db91f1b5\",\n [exports.CHAIN_ID.MATIC]: \"0x16773FcA1bd726E1eafAB52699bcF738fE4AdF69\",\n [exports.CHAIN_ID.FANTOM]: \"0x97C1af451407e266fD57168e61D4B5af31894244\",\n [exports.CHAIN_ID.BSC]: \"0x64c7f3c2C19B41a6aD67bb5f4edc8EdbB3284F34\",\n [exports.CHAIN_ID.AVAX]: \"0x3441456d5750f4a22b0DcBD434D99B97455B70Ac\",\n [exports.CHAIN_ID.CRONOS]: \"0x260aB0aCb931D7Da784fC35c7E96c3B13213Abf1\",\n};\nexports.NATIVE_TOKEN_TICKER = {\n [exports.CHAIN_ID.MAINNET]: \"ETH\",\n [exports.CHAIN_ID.ROPSTEN]: \"ETH\",\n [exports.CHAIN_ID.GOERLI]: \"ETH\",\n [exports.CHAIN_ID.MATIC]: \"MATIC\",\n [exports.CHAIN_ID.FANTOM]: \"FTM\",\n [exports.CHAIN_ID.BSC]: \"BNB\",\n [exports.CHAIN_ID.AVAX]: \"AVAX\",\n [exports.CHAIN_ID.CRONOS]: \"CRO\",\n};\nexports.NATIVE_WRAPPED_TOKEN_TICKER = {\n [exports.CHAIN_ID.MAINNET]: \"WETH\",\n [exports.CHAIN_ID.ROPSTEN]: \"WETH\",\n [exports.CHAIN_ID.GOERLI]: \"WETH\",\n [exports.CHAIN_ID.MATIC]: \"WMATIC\",\n [exports.CHAIN_ID.FANTOM]: \"WFTM\",\n [exports.CHAIN_ID.BSC]: \"WBNB\",\n [exports.CHAIN_ID.AVAX]: \"WAVAX\",\n [exports.CHAIN_ID.CRONOS]: \"WCRO\",\n};\nexports.NATIVE_TOKEN_NAME = {\n [exports.CHAIN_ID.MAINNET]: \"Ether\",\n [exports.CHAIN_ID.ROPSTEN]: \"Ether\",\n [exports.CHAIN_ID.GOERLI]: \"Ether\",\n [exports.CHAIN_ID.MATIC]: \"Matic\",\n [exports.CHAIN_ID.FANTOM]: \"Fantom\",\n [exports.CHAIN_ID.BSC]: \"Bnb\",\n [exports.CHAIN_ID.AVAX]: \"Avax\",\n [exports.CHAIN_ID.CRONOS]: \"Cronos\",\n};\nexports.NATIVE_WRAPPED_TOKEN_ADDRESS = {\n [exports.CHAIN_ID.MAINNET]: \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n [exports.CHAIN_ID.ROPSTEN]: \"0xc778417e063141139fce010982780140aa0cd5ab\",\n [exports.CHAIN_ID.GOERLI]: \"0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6\",\n [exports.CHAIN_ID.MATIC]: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\",\n [exports.CHAIN_ID.FANTOM]: \"0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83\",\n [exports.CHAIN_ID.BSC]: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n [exports.CHAIN_ID.AVAX]: \"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7\",\n [exports.CHAIN_ID.CRONOS]: \"0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23\",\n};\nexports.GENERIC_GAS_LIMIT_ORDER_EXECUTION = \"400000\";\nexports.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS = {\n [exports.CHAIN_ID.MAINNET]: \"0x260aB0aCb931D7Da784fC35c7E96c3B13213Abf1\",\n [exports.CHAIN_ID.ROPSTEN]: \"0xDC41072F4aFE7e4a7ea0f21d13a92662Fe733C55\",\n [exports.CHAIN_ID.MATIC]: \"0x81967ac4ce8e2d94f7e4b4cf3d2e760605079604\",\n [exports.CHAIN_ID.BSC]: \"0xe912cd26c4a4cfffc175a297f1328ab23313a1a7\",\n [exports.CHAIN_ID.FANTOM]: \"0xf437a1a98566872f734bd18addf4bb610d1f887b\",\n [exports.CHAIN_ID.AVAX]: \"0xf437a1a98566872f734bd18addf4bb610d1f887b\",\n [exports.CHAIN_ID.CRONOS]: \"\",\n};\n","\"use strict\";\n/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERC20OrderRouter__factory = void 0;\nconst ethers_1 = require(\"ethers\");\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IGelatoPineCore\",\n name: \"_gelatoPineCore\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"key\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"caller\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"module\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"inputToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"witness\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"secret\",\n type: \"bytes32\",\n },\n ],\n name: \"DepositToken\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"_secret\",\n type: \"bytes32\",\n },\n ],\n name: \"depositToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"gelatoPineCore\",\n outputs: [\n {\n internalType: \"contract IGelatoPineCore\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\nclass ERC20OrderRouter__factory {\n static createInterface() {\n return new ethers_1.utils.Interface(_abi);\n }\n static connect(address, signerOrProvider) {\n return new ethers_1.Contract(address, _abi, signerOrProvider);\n }\n}\nexports.ERC20OrderRouter__factory = ERC20OrderRouter__factory;\nERC20OrderRouter__factory.abi = _abi;\n","\"use strict\";\n/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERC20__factory = void 0;\nconst ethers_1 = require(\"ethers\");\nconst _abi = [\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: false,\n inputs: [\n {\n name: \"_spender\",\n type: \"address\",\n },\n {\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\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: \"_from\",\n type: \"address\",\n },\n {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\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 {\n name: \"_owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\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 {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\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 name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n payable: true,\n stateMutability: \"payable\",\n type: \"fallback\",\n },\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: \"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];\nclass ERC20__factory {\n static createInterface() {\n return new ethers_1.utils.Interface(_abi);\n }\n static connect(address, signerOrProvider) {\n return new ethers_1.Contract(address, _abi, signerOrProvider);\n }\n}\nexports.ERC20__factory = ERC20__factory;\nERC20__factory.abi = _abi;\n","\"use strict\";\n/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GelatoLimitOrders__factory = void 0;\nconst ethers_1 = require(\"ethers\");\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"_key\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_caller\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"DepositETH\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"_key\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"OrderCancelled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"_key\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"_auxData\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_bought\",\n type: \"uint256\",\n },\n ],\n name: \"OrderExecuted\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"ETH_ADDRESS\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_auxData\",\n type: \"bytes\",\n },\n ],\n name: \"canExecuteOrder\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"cancelOrder\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"decodeOrder\",\n outputs: [\n {\n internalType: \"address\",\n name: \"module\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"secret\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"depositEth\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"_secret\",\n type: \"bytes32\",\n },\n ],\n name: \"encodeEthOrder\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"_secret\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"encodeTokenOrder\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n name: \"ethDeposits\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_signature\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_auxData\",\n type: \"bytes\",\n },\n ],\n name: \"executeOrder\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"existOrder\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"keyOf\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IModule\",\n name: \"_module\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_inputToken\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_witness\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"vaultOfOrder\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\nclass GelatoLimitOrders__factory {\n static createInterface() {\n return new ethers_1.utils.Interface(_abi);\n }\n static connect(address, signerOrProvider) {\n return new ethers_1.Contract(address, _abi, signerOrProvider);\n }\n}\nexports.GelatoLimitOrders__factory = GelatoLimitOrders__factory;\nGelatoLimitOrders__factory.abi = _abi;\n","\"use strict\";\n/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Multicall__factory = void 0;\nconst ethers_1 = require(\"ethers\");\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_factory\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_mainModule\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_wallet\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"_imageHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_threshold\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"_signers\",\n type: \"bytes\",\n },\n ],\n name: \"RequiredConfig\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_wallet\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_signer\",\n type: \"address\",\n },\n ],\n name: \"RequiredSigner\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_addr\",\n type: \"address\",\n },\n ],\n name: \"callBalanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callBlockNumber\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_i\",\n type: \"uint256\",\n },\n ],\n name: \"callBlockhash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callChainId\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_addr\",\n type: \"address\",\n },\n ],\n name: \"callCode\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"code\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_addr\",\n type: \"address\",\n },\n ],\n name: \"callCodeHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"codeHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_addr\",\n type: \"address\",\n },\n ],\n name: \"callCodeSize\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"size\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callCoinbase\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callDifficulty\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callGasLeft\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callGasLimit\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callGasPrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callOrigin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callTimestamp\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"lastSignerUpdate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"lastWalletUpdate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"bool\",\n name: \"delegateCall\",\n type: \"bool\",\n },\n {\n internalType: \"bool\",\n name: \"revertOnError\",\n type: \"bool\",\n },\n {\n internalType: \"uint256\",\n name: \"gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IModuleCalls.Transaction[]\",\n name: \"_txs\",\n type: \"tuple[]\",\n },\n ],\n name: \"multiCall\",\n outputs: [\n {\n internalType: \"bool[]\",\n name: \"_successes\",\n type: \"bool[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_results\",\n type: \"bytes[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_wallet\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_threshold\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"weight\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"signer\",\n type: \"address\",\n },\n ],\n internalType: \"struct RequireUtils.Member[]\",\n name: \"_members\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bool\",\n name: \"_index\",\n type: \"bool\",\n },\n ],\n name: \"publishConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_wallet\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"_hash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_sizeMembers\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_signature\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_index\",\n type: \"bool\",\n },\n ],\n name: \"publishInitialSigners\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_wallet\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_nonce\",\n type: \"uint256\",\n },\n ],\n name: \"requireMinNonce\",\n outputs: [],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_expiration\",\n type: \"uint256\",\n },\n ],\n name: \"requireNonExpired\",\n outputs: [],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\nclass Multicall__factory {\n static createInterface() {\n return new ethers_1.utils.Interface(_abi);\n }\n static connect(address, signerOrProvider) {\n return new ethers_1.Contract(address, _abi, signerOrProvider);\n }\n}\nexports.Multicall__factory = Multicall__factory;\nMulticall__factory.abi = _abi;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Multicall__factory = exports.GelatoLimitOrders__factory = exports.ERC20OrderRouter__factory = exports.ERC20__factory = void 0;\nvar ERC20__factory_1 = require(\"./factories/ERC20__factory\");\nObject.defineProperty(exports, \"ERC20__factory\", { enumerable: true, get: function () { return ERC20__factory_1.ERC20__factory; } });\nvar ERC20OrderRouter__factory_1 = require(\"./factories/ERC20OrderRouter__factory\");\nObject.defineProperty(exports, \"ERC20OrderRouter__factory\", { enumerable: true, get: function () { return ERC20OrderRouter__factory_1.ERC20OrderRouter__factory; } });\nvar GelatoLimitOrders__factory_1 = require(\"./factories/GelatoLimitOrders__factory\");\nObject.defineProperty(exports, \"GelatoLimitOrders__factory\", { enumerable: true, get: function () { return GelatoLimitOrders__factory_1.GelatoLimitOrders__factory; } });\nvar Multicall__factory_1 = require(\"./factories/Multicall__factory\");\nObject.defineProperty(exports, \"Multicall__factory\", { enumerable: true, get: function () { return Multicall__factory_1.Multicall__factory; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.constants = exports.utils = exports.isEthereumChain = exports.GelatoStopLimitOrders = exports.isValidChainIdAndHandler = exports.GelatoLimitOrders = void 0;\nconst tslib_1 = require(\"tslib\");\nvar limit_orders_1 = require(\"./limit-orders\");\nObject.defineProperty(exports, \"GelatoLimitOrders\", { enumerable: true, get: function () { return limit_orders_1.GelatoLimitOrders; } });\nObject.defineProperty(exports, \"isValidChainIdAndHandler\", { enumerable: true, get: function () { return limit_orders_1.isValidChainIdAndHandler; } });\nvar stoplimit_orders_1 = require(\"./stoplimit-orders\");\nObject.defineProperty(exports, \"GelatoStopLimitOrders\", { enumerable: true, get: function () { return stoplimit_orders_1.GelatoStopLimitOrders; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isEthereumChain\", { enumerable: true, get: function () { return utils_1.isEthereumChain; } });\ntslib_1.__exportStar(require(\"./types\"), exports);\nexports.utils = tslib_1.__importStar(require(\"./utils\"));\nexports.constants = tslib_1.__importStar(require(\"./constants\"));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GelatoLimitOrders = exports.isFlashbotsCompatibleChainId = exports.isValidChainIdAndHandler = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ethers_1 = require(\"ethers\");\nconst abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nconst abstract_signer_1 = require(\"@ethersproject/abstract-signer\");\nconst constants_1 = require(\"../constants\");\nconst types_1 = require(\"../contracts/types\");\nconst queries_1 = require(\"../utils/queries\");\nconst utils_1 = require(\"../utils\");\nconst isValidChainIdAndHandler = (chainId, handler) => {\n return constants_1.NETWORK_HANDLERS[chainId].includes(handler);\n};\nexports.isValidChainIdAndHandler = isValidChainIdAndHandler;\nconst isFlashbotsCompatibleChainId = (chainId) => {\n return chainId == constants_1.CHAIN_ID.MAINNET || chainId == constants_1.CHAIN_ID.GOERLI;\n};\nexports.isFlashbotsCompatibleChainId = isFlashbotsCompatibleChainId;\nclass GelatoLimitOrders {\n constructor(chainId, signerOrProvider, handler, isFlashbotsProtected = false, subgraphUrl) {\n var _a;\n if (handler && !(0, exports.isValidChainIdAndHandler)(chainId, handler)) {\n throw new Error(\"Invalid chainId and handler\");\n }\n else if (isFlashbotsProtected &&\n (handler || !(0, exports.isFlashbotsCompatibleChainId)(chainId))) {\n throw new Error(\"Invalid chainId or handler for Flashbots bundle submission. handler must be undefined, and chainId either 1 (mainnet) or 5 (goerli)\");\n }\n this._chainId = chainId;\n this._gelatoFeeBPS = constants_1.BPS_GELATO_FEE[chainId];\n this._slippageBPS = constants_1.LIMIT_ORDER_SLIPPAGE[chainId];\n this._subgraphUrl = subgraphUrl !== null && subgraphUrl !== void 0 ? subgraphUrl : constants_1.SUBGRAPH_URL[chainId];\n this._signer = abstract_signer_1.Signer.isSigner(signerOrProvider)\n ? signerOrProvider\n : undefined;\n this._provider = abstract_provider_1.Provider.isProvider(signerOrProvider)\n ? signerOrProvider\n : abstract_signer_1.Signer.isSigner(signerOrProvider)\n ? signerOrProvider.provider\n : undefined;\n this._gelatoLimitOrders = this._signer\n ? types_1.GelatoLimitOrders__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ADDRESS[this._chainId], this._signer)\n : this._provider\n ? types_1.GelatoLimitOrders__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ADDRESS[this._chainId], this._provider)\n : new ethers_1.Contract(constants_1.GELATO_LIMIT_ORDERS_ADDRESS[this._chainId], types_1.GelatoLimitOrders__factory.createInterface());\n this._moduleAddress = isFlashbotsProtected\n ? constants_1.GELATO_LIMIT_ORDERS_MODULE_FLASHBOTS_ADDRESS[this._chainId]\n : constants_1.GELATO_LIMIT_ORDERS_MODULE_ADDRESS[this._chainId];\n this._handler = handler;\n this._handlerAddress = handler\n ? (_a = constants_1.HANDLERS_ADDRESSES[this._chainId][handler]) === null || _a === void 0 ? void 0 : _a.toLowerCase()\n : undefined;\n this._isFlashbotsProtected = isFlashbotsProtected;\n this._abiEncoder = new ethers_1.utils.AbiCoder();\n this._erc20OrderRouter = this._signer\n ? types_1.ERC20OrderRouter__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER[this._chainId], this._signer)\n : this._provider\n ? types_1.ERC20OrderRouter__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER[this._chainId], this._provider)\n : new ethers_1.Contract(constants_1.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER[this._chainId], types_1.ERC20OrderRouter__factory.createInterface());\n }\n get gelatoFeeBPS() {\n return this._gelatoFeeBPS;\n }\n get slippageBPS() {\n return this._slippageBPS;\n }\n get chainId() {\n return this._chainId;\n }\n get signer() {\n return this._signer;\n }\n get provider() {\n return this._provider;\n }\n get subgraphUrl() {\n return this._subgraphUrl;\n }\n set subgraphUrl(url) {\n this._subgraphUrl = url;\n }\n get handler() {\n return this._handler;\n }\n get handlerAddress() {\n return this._handlerAddress;\n }\n get moduleAddress() {\n return this._moduleAddress;\n }\n get contract() {\n return this._gelatoLimitOrders;\n }\n get erc20OrderRouter() {\n return this._erc20OrderRouter;\n }\n get isFlashbotsProtected() {\n return this._isFlashbotsProtected;\n }\n encodeLimitOrderSubmission(inputToken, outputToken, inputAmount, minReturn, owner, checkAllowance = true) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const { payload } = yield this.encodeLimitOrderSubmissionWithSecret(inputToken, outputToken, inputAmount, minReturn, owner, checkAllowance);\n return payload;\n });\n }\n encodeLimitOrderSubmissionWithSecret(inputToken, outputToken, inputAmount, minReturnToBeParsed, owner, checkAllowance = true) {\n var _a;\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const randomSecret = ethers_1.utils.hexlify(ethers_1.utils.randomBytes(19)).replace(\"0x\", \"\");\n // 0x67656c61746f6e6574776f726b = gelatonetwork in hex\n const fullSecret = `0x67656c61746f6e6574776f726b${randomSecret}`;\n const { privateKey: secret, address: witness } = new ethers_1.Wallet(fullSecret);\n const { minReturn } = this.getFeeAndSlippageAdjustedMinReturn(minReturnToBeParsed);\n const payload = yield this._encodeSubmitData(inputToken, outputToken, owner, witness, inputAmount, minReturn, secret, checkAllowance);\n const encodedData = this._handlerAddress\n ? this._abiEncoder.encode([\"address\", \"uint256\", \"address\"], [outputToken, minReturn, this._handlerAddress])\n : this._abiEncoder.encode([\"address\", \"uint256\"], [outputToken, minReturn]);\n return {\n payload,\n secret,\n witness,\n order: {\n id: this._getKey({\n module: this._moduleAddress,\n inputToken,\n owner,\n witness,\n data: encodedData,\n }),\n module: this._moduleAddress.toLowerCase(),\n data: encodedData,\n inputToken: inputToken.toLowerCase(),\n outputToken: outputToken.toLowerCase(),\n owner: owner.toLowerCase(),\n witness: witness.toLowerCase(),\n inputAmount: inputAmount.toString(),\n minReturn: minReturn.toString(),\n adjustedMinReturn: minReturnToBeParsed.toString(),\n inputData: payload.data.toString(),\n secret: secret.toLowerCase(),\n handler: (_a = this._handlerAddress) !== null && _a !== void 0 ? _a : null,\n },\n };\n });\n }\n submitLimitOrder(inputToken, outputToken, inputAmount, minReturn, checkAllowance = true, overrides) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._signer)\n throw new Error(\"No signer\");\n const owner = yield this._signer.getAddress();\n const txData = yield this.encodeLimitOrderSubmission(inputToken, outputToken, inputAmount, minReturn, owner, checkAllowance);\n return this._signer.sendTransaction(Object.assign(Object.assign({}, overrides), { to: txData.to, data: txData.data, value: ethers_1.BigNumber.from(txData.value) }));\n });\n }\n encodeLimitOrderCancellation(order, checkIsActiveOrder) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._gelatoLimitOrders)\n throw new Error(\"No gelato limit orders contract\");\n if (!order.inputToken)\n throw new Error(\"No input token in order\");\n if (!order.witness)\n throw new Error(\"No witness in order\");\n if (!order.outputToken)\n throw new Error(\"No output token in order\");\n if (!order.minReturn)\n throw new Error(\"No minReturn in order\");\n if (!order.owner)\n throw new Error(\"No owner\");\n if (!order.module)\n throw new Error(\"No module in order\");\n if (checkIsActiveOrder) {\n const isActiveOrder = yield this.isActiveOrder(order);\n if (!isActiveOrder)\n throw new Error(\"Order not found. Please review your order data.\");\n }\n const data = this._gelatoLimitOrders.interface.encodeFunctionData(\"cancelOrder\", [order.module, order.inputToken, order.owner, order.witness, order.data]);\n return {\n data,\n to: this._gelatoLimitOrders.address,\n value: ethers_1.constants.Zero,\n };\n });\n }\n cancelLimitOrder(order, checkIsActiveOrder, overrides) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._signer)\n throw new Error(\"No signer\");\n if (!this._gelatoLimitOrders)\n throw new Error(\"No gelato limit orders contract\");\n let _order = order;\n if (order.id) {\n try {\n const subgraphOrder = yield Promise.race([\n this.getOrder(order.id),\n new Promise((resolve) => setTimeout(resolve, 5000)).then(() => {\n throw new Error(\"Timeout\");\n }),\n ]);\n if (subgraphOrder) {\n if (subgraphOrder.status === \"cancelled\") {\n throw new Error(`Order status is not open. Current order status: ${subgraphOrder.status}. Cancellation transaction hash: ${subgraphOrder.cancelledTxHash}`);\n }\n if (subgraphOrder.status === \"executed\") {\n throw new Error(`Order status is not open. Current order status: ${subgraphOrder.status}. Execution transaction hash: ${subgraphOrder.executedTxHash}`);\n }\n _order = Object.assign(Object.assign({}, order), subgraphOrder);\n }\n // eslint-disable-next-line no-empty\n }\n catch (error) { }\n }\n if (!_order.inputToken)\n throw new Error(\"No input token in order\");\n if (!_order.witness)\n throw new Error(\"No witness in order\");\n if (!_order.outputToken)\n throw new Error(\"No output token in order\");\n if (!_order.minReturn)\n throw new Error(\"No minReturn in order\");\n if (!_order.data)\n throw new Error(\"No data in order\");\n if (!_order.module)\n throw new Error(\"No module in order\");\n if (checkIsActiveOrder) {\n const isActiveOrder = yield this.isActiveOrder(_order);\n if (!isActiveOrder)\n throw new Error(\"Order not found. Please review your order data.\");\n }\n const owner = yield this._signer.getAddress();\n if (owner.toLowerCase() !== order.owner.toLowerCase())\n throw new Error(\"Owner and signer mismatch\");\n return this._gelatoLimitOrders.cancelOrder(_order.module, _order.inputToken, _order.owner, _order.witness, _order.data, overrides !== null && overrides !== void 0 ? overrides : {\n gasLimit: (0, utils_1.isEthereumChain)(this._chainId) ? 600000 : 2000000,\n });\n });\n }\n approveTokenAmount(inputToken, amount, overrides) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._signer)\n throw new Error(\"No signer\");\n return overrides\n ? types_1.ERC20__factory.connect(inputToken, this._signer).approve(this._erc20OrderRouter.address, amount, overrides)\n : types_1.ERC20__factory.connect(inputToken, this._signer).approve(this._erc20OrderRouter.address, amount);\n });\n }\n isActiveOrder(order) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._provider)\n throw new Error(\"No provider\");\n if (!this._gelatoLimitOrders)\n throw new Error(\"No gelato limit orders contract\");\n if (!order.module)\n throw new Error(\"No module in order\");\n if (!order.inputToken)\n throw new Error(\"No input token in order\");\n if (!order.owner)\n throw new Error(\"No owner in order\");\n if (!order.witness)\n throw new Error(\"No witness in order\");\n if (!order.data)\n throw new Error(\"No data in order\");\n return this._gelatoLimitOrders.existOrder(order.module, order.inputToken, order.owner, order.witness, order.data);\n });\n }\n getExchangeRate(inputValue, inputDecimals, outputValue, outputDecimals, invert = false) {\n const factor = ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(18));\n if (invert) {\n return ethers_1.BigNumber.from(inputValue)\n .mul(factor)\n .div(outputValue)\n .mul(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(outputDecimals)))\n .div(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(inputDecimals)))\n .toString();\n }\n else {\n return ethers_1.BigNumber.from(outputValue)\n .mul(factor)\n .div(inputValue)\n .mul(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(inputDecimals)))\n .div(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(outputDecimals)))\n .toString();\n }\n }\n getFeeAndSlippageAdjustedMinReturn(outputAmount, extraSlippageBPS) {\n if (extraSlippageBPS) {\n if (!Number.isInteger(extraSlippageBPS))\n throw new Error(\"Extra Slippage BPS must an unsigned integer\");\n }\n const gelatoFee = ethers_1.BigNumber.from(outputAmount)\n .mul(this._gelatoFeeBPS)\n .div(10000)\n .gte(1)\n ? ethers_1.BigNumber.from(outputAmount).mul(this._gelatoFeeBPS).div(10000)\n : ethers_1.BigNumber.from(1);\n const slippageBPS = extraSlippageBPS\n ? this._slippageBPS + extraSlippageBPS\n : this._slippageBPS;\n const slippage = ethers_1.BigNumber.from(outputAmount).mul(slippageBPS).div(10000);\n const minReturn = ethers_1.BigNumber.from(outputAmount).sub(gelatoFee).sub(slippage);\n return {\n minReturn: minReturn.toString(),\n slippage: slippage.toString(),\n gelatoFee: gelatoFee.toString(),\n };\n }\n getAdjustedMinReturn(minReturn, extraSlippageBPS) {\n const gelatoFee = ethers_1.BigNumber.from(this._gelatoFeeBPS);\n const slippage = extraSlippageBPS\n ? ethers_1.BigNumber.from(this._slippageBPS + extraSlippageBPS)\n : ethers_1.BigNumber.from(this._slippageBPS);\n const fees = gelatoFee.add(slippage);\n const adjustedMinReturn = ethers_1.BigNumber.from(minReturn)\n .mul(10000)\n .div(ethers_1.BigNumber.from(10000).sub(fees));\n return adjustedMinReturn.toString();\n }\n getExecutionPrice(inputAmount, inputDecimals, outputAmount, outputDecimals, isInverted = false) {\n const factor = ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(isInverted ? outputDecimals : inputDecimals));\n if (isInverted) {\n return ethers_1.BigNumber.from(inputAmount)\n .mul(factor)\n .div(outputAmount)\n .toString();\n }\n else {\n return ethers_1.BigNumber.from(outputAmount)\n .mul(factor)\n .div(inputAmount)\n .toString();\n }\n }\n getOrder(orderId) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const order = yield (0, queries_1.queryOrder)(orderId, this._chainId);\n if (order) {\n return Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) });\n }\n else {\n return null;\n }\n });\n }\n getOrders(owner, includeOrdersWithNullHandler = false) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, queries_1.queryOrders)(owner, this._chainId);\n return orders\n .map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })))\n .filter((order) => {\n if (this._handler && !order.handler) {\n return includeOrdersWithNullHandler ? true : false;\n }\n else {\n return this._handler ? order.handler === this._handlerAddress : true;\n }\n });\n });\n }\n getOpenOrders(owner, includeOrdersWithNullHandler = false) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, queries_1.queryOpenOrders)(owner, this._chainId);\n return orders\n .map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })))\n .filter((order) => {\n if (this._handler && !order.handler) {\n return includeOrdersWithNullHandler ? true : false;\n }\n else {\n return this._handler ? order.handler === this._handlerAddress : true;\n }\n });\n });\n }\n getPastOrders(owner, includeOrdersWithNullHandler = false) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, queries_1.queryPastOrders)(owner, this._chainId);\n return orders\n .map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })))\n .filter((order) => {\n if (this._handler && !order.handler) {\n return includeOrdersWithNullHandler ? true : false;\n }\n else {\n return this._handler ? order.handler === this._handlerAddress : true;\n }\n });\n });\n }\n getExecutedOrders(owner, includeOrdersWithNullHandler = false) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, queries_1.queryExecutedOrders)(owner, this._chainId);\n return orders\n .map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })))\n .filter((order) => {\n if (this._handler && !order.handler) {\n return includeOrdersWithNullHandler ? true : false;\n }\n else {\n return this._handler ? order.handler === this._handlerAddress : true;\n }\n });\n });\n }\n getCancelledOrders(owner, includeOrdersWithNullHandler = false) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, queries_1.queryCancelledOrders)(owner, this._chainId);\n return orders\n .map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })))\n .filter((order) => {\n if (this._handler && !order.handler) {\n return includeOrdersWithNullHandler ? true : false;\n }\n else {\n return this._handler ? order.handler === this._handlerAddress : true;\n }\n });\n });\n }\n _getKey(order) {\n return ethers_1.utils.keccak256(this._abiEncoder.encode([\"address\", \"address\", \"address\", \"address\", \"bytes\"], [order.module, order.inputToken, order.owner, order.witness, order.data]));\n }\n _encodeSubmitData(inputToken, outputToken, owner, witness, amount, minReturn, secret, checkAllowance) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._provider)\n throw new Error(\"No provider\");\n if (inputToken.toLowerCase() === outputToken.toLowerCase())\n throw new Error(\"Input token and output token can not be equal\");\n const encodedData = this._handlerAddress\n ? this._abiEncoder.encode([\"address\", \"uint256\", \"address\"], [outputToken, minReturn, this._handlerAddress])\n : this._abiEncoder.encode([\"address\", \"uint256\"], [outputToken, minReturn]);\n let data, value, to;\n if ((0, utils_1.isNetworkGasToken)(inputToken)) {\n const encodedEthOrder = yield this._gelatoLimitOrders.encodeEthOrder(this._moduleAddress, constants_1.ETH_ADDRESS, // we also use ETH_ADDRESS if it's MATIC\n owner, witness, encodedData, secret);\n data = this._gelatoLimitOrders.interface.encodeFunctionData(\"depositEth\", [encodedEthOrder]);\n value = amount;\n to = this._gelatoLimitOrders.address;\n }\n else {\n if (checkAllowance) {\n const allowance = yield types_1.ERC20__factory.connect(inputToken, this._provider).allowance(owner, this._erc20OrderRouter.address);\n if (allowance.lt(amount))\n throw new Error(\"Insufficient token allowance for placing order\");\n }\n data = this._erc20OrderRouter.interface.encodeFunctionData(\"depositToken\", [\n amount,\n this._moduleAddress,\n inputToken,\n owner,\n witness,\n encodedData,\n secret,\n ]);\n value = ethers_1.constants.Zero;\n to = this._erc20OrderRouter.address;\n }\n return { data, value, to };\n });\n }\n}\nexports.GelatoLimitOrders = GelatoLimitOrders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GelatoBase = exports.isETHOrWETH = exports.isFlashbotsCompatibleChainId = exports.isValidChainIdAndHandler = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ethers_1 = require(\"ethers\");\nconst abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nconst abstract_signer_1 = require(\"@ethersproject/abstract-signer\");\nconst constants_1 = require(\"../constants\");\nconst types_1 = require(\"../contracts/types\");\nconst utils_1 = require(\"../utils\");\nconst isValidChainIdAndHandler = (chainId, handler) => {\n return constants_1.NETWORK_HANDLERS[chainId].includes(handler);\n};\nexports.isValidChainIdAndHandler = isValidChainIdAndHandler;\nconst isFlashbotsCompatibleChainId = (chainId) => {\n return chainId == constants_1.CHAIN_ID.MAINNET || chainId == constants_1.CHAIN_ID.GOERLI;\n};\nexports.isFlashbotsCompatibleChainId = isFlashbotsCompatibleChainId;\nconst isETHOrWETH = (tokenAddress, chainID) => {\n const WETH_ADDRESS = constants_1.NATIVE_WRAPPED_TOKEN_ADDRESS[chainID];\n return (tokenAddress.toLowerCase() === constants_1.ETH_ADDRESS.toLowerCase() ||\n tokenAddress.toLowerCase() === WETH_ADDRESS.toLowerCase());\n};\nexports.isETHOrWETH = isETHOrWETH;\nclass GelatoBase {\n constructor(chainId, moduleAddress, signerOrProvider, handler, handlerAddress) {\n if (handler && !(0, exports.isValidChainIdAndHandler)(chainId, handler)) {\n throw new Error(\"Invalid chainId and handler\");\n }\n this._chainId = chainId;\n this._gelatoFeeBPS = constants_1.BPS_GELATO_FEE[chainId];\n this._slippageBPS = constants_1.STOP_LIMIT_SLIPPAGE_BPS[chainId];\n this._subgraphUrl = constants_1.SUBGRAPH_URL[chainId];\n this._signer = abstract_signer_1.Signer.isSigner(signerOrProvider)\n ? signerOrProvider\n : undefined;\n this._provider = abstract_provider_1.Provider.isProvider(signerOrProvider)\n ? signerOrProvider\n : abstract_signer_1.Signer.isSigner(signerOrProvider)\n ? signerOrProvider.provider\n : undefined;\n this._gelatoCore = this._signer\n ? types_1.GelatoLimitOrders__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ADDRESS[this._chainId], this._signer)\n : this._provider\n ? types_1.GelatoLimitOrders__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ADDRESS[this._chainId], this._provider)\n : new ethers_1.Contract(constants_1.GELATO_LIMIT_ORDERS_ADDRESS[this._chainId], types_1.GelatoLimitOrders__factory.createInterface());\n this._abiEncoder = new ethers_1.utils.AbiCoder();\n this._erc20OrderRouter = this._signer\n ? types_1.ERC20OrderRouter__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER[this._chainId], this._signer)\n : this._provider\n ? types_1.ERC20OrderRouter__factory.connect(constants_1.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER[this._chainId], this._provider)\n : new ethers_1.Contract(constants_1.GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER[this._chainId], types_1.ERC20OrderRouter__factory.createInterface());\n this._handler = handler;\n this._handlerAddress = handlerAddress;\n this._moduleAddress = moduleAddress;\n }\n get gelatoFeeBPS() {\n return this._gelatoFeeBPS;\n }\n get slippageBPS() {\n return this._slippageBPS;\n }\n get chainId() {\n return this._chainId;\n }\n get signer() {\n return this._signer;\n }\n get provider() {\n return this._provider;\n }\n get subgraphUrl() {\n return this._subgraphUrl;\n }\n get handler() {\n return this._handler;\n }\n get handlerAddress() {\n return this._handlerAddress;\n }\n get moduleAddress() {\n return this._moduleAddress;\n }\n get contract() {\n return this._gelatoCore;\n }\n get erc20OrderRouter() {\n return this._erc20OrderRouter;\n }\n get abiEncoder() {\n return this._abiEncoder;\n }\n encodeLimitOrderCancellation(order, checkIsActiveOrder) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._gelatoCore)\n throw new Error(\"No gelato limit orders contract\");\n if (!order.inputToken)\n throw new Error(\"No input token in order\");\n if (!order.witness)\n throw new Error(\"No witness in order\");\n if (!order.outputToken)\n throw new Error(\"No output token in order\");\n if (!order.minReturn)\n throw new Error(\"No minReturn in order\");\n if (!order.owner)\n throw new Error(\"No owner\");\n if (checkIsActiveOrder) {\n const isActiveOrder = yield this.isActiveOrder(order);\n if (!isActiveOrder)\n throw new Error(\"Order not found. Please review your order data.\");\n }\n const data = this._gelatoCore.interface.encodeFunctionData(\"cancelOrder\", [\n this._moduleAddress,\n order.inputToken,\n order.owner,\n order.witness,\n order.data,\n ]);\n return {\n data,\n to: this._gelatoCore.address,\n value: ethers_1.constants.Zero,\n };\n });\n }\n cancelStopLimitOrder(order, checkIsActiveOrder, overrides) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._signer)\n throw new Error(\"No signer\");\n if (!this._gelatoCore)\n throw new Error(\"No gelato limit orders contract\");\n if (!order.inputToken)\n throw new Error(\"No input token in order\");\n if (!order.witness)\n throw new Error(\"No witness in order\");\n if (!order.outputToken)\n throw new Error(\"No output token in order\");\n if (!order.minReturn)\n throw new Error(\"No minReturn in order\");\n if (!order.data)\n throw new Error(\"No data in order\");\n if (checkIsActiveOrder) {\n const isActiveOrder = yield this.isActiveOrder(order);\n if (!isActiveOrder)\n throw new Error(\"Order not found. Please review your order data.\");\n }\n const owner = yield this._signer.getAddress();\n if (owner.toLowerCase() !== order.owner.toLowerCase())\n throw new Error(\"Owner and signer mismatch\");\n return this._gelatoCore.cancelOrder(this._moduleAddress, order.inputToken, order.owner, order.witness, order.data, overrides !== null && overrides !== void 0 ? overrides : {\n gasLimit: (0, utils_1.isEthereumChain)(this._chainId) ? 500000 : 1500000,\n });\n });\n }\n approveTokenAmount(inputToken, amount, overrides) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._signer)\n throw new Error(\"No signer\");\n return overrides\n ? types_1.ERC20__factory.connect(inputToken, this._signer).approve(this._erc20OrderRouter.address, amount, overrides)\n : types_1.ERC20__factory.connect(inputToken, this._signer).approve(this._erc20OrderRouter.address, amount);\n });\n }\n isActiveOrder(order) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this._provider)\n throw new Error(\"No provider\");\n if (!this._gelatoCore)\n throw new Error(\"No gelato limit orders contract\");\n if (!order.module)\n throw new Error(\"No module in order\");\n if (!order.inputToken)\n throw new Error(\"No input token in order\");\n if (!order.owner)\n throw new Error(\"No owner in order\");\n if (!order.witness)\n throw new Error(\"No witness in order\");\n if (!order.data)\n throw new Error(\"No data in order\");\n return this._gelatoCore.existOrder(order.module, order.inputToken, order.owner, order.witness, order.data);\n });\n }\n getExchangeRate(inputValue, inputDecimals, outputValue, outputDecimals, invert = false) {\n const factor = ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(18));\n if (invert) {\n return ethers_1.BigNumber.from(inputValue)\n .mul(factor)\n .div(outputValue)\n .mul(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(outputDecimals)))\n .div(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(inputDecimals)))\n .toString();\n }\n else {\n return ethers_1.BigNumber.from(outputValue)\n .mul(factor)\n .div(inputValue)\n .mul(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(inputDecimals)))\n .div(ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(outputDecimals)))\n .toString();\n }\n }\n getFeeAndSlippageAdjustedMinReturn(outputAmount, extraSlippageBPS) {\n if (extraSlippageBPS) {\n if (!Number.isInteger(extraSlippageBPS))\n throw new Error(\"Extra Slippage BPS must an unsigned integer\");\n }\n const gelatoFee = ethers_1.BigNumber.from(outputAmount)\n .mul(this._gelatoFeeBPS)\n .div(10000)\n .gte(1)\n ? ethers_1.BigNumber.from(outputAmount).mul(this._gelatoFeeBPS).div(10000)\n : ethers_1.BigNumber.from(1);\n const slippageBPS = extraSlippageBPS ? extraSlippageBPS : this._slippageBPS;\n const slippage = ethers_1.BigNumber.from(outputAmount).mul(slippageBPS).div(10000);\n const minReturn = ethers_1.BigNumber.from(outputAmount).sub(gelatoFee).sub(slippage);\n return {\n minReturn: minReturn.toString(),\n slippage: slippage.toString(),\n gelatoFee: gelatoFee.toString(),\n };\n }\n getAdjustedMinReturn(minReturn, extraSlippageBPS) {\n const gelatoFee = ethers_1.BigNumber.from(this._gelatoFeeBPS);\n const slippage = extraSlippageBPS\n ? ethers_1.BigNumber.from(extraSlippageBPS)\n : ethers_1.BigNumber.from(this._slippageBPS);\n const fees = gelatoFee.add(slippage);\n const adjustedMinReturn = ethers_1.BigNumber.from(minReturn)\n .mul(10000)\n .div(ethers_1.BigNumber.from(10000).sub(fees));\n return adjustedMinReturn.toString();\n }\n getExecutionPrice(inputAmount, inputDecimals, outputAmount, outputDecimals, isInverted = false) {\n const factor = ethers_1.BigNumber.from(10).pow(ethers_1.BigNumber.from(isInverted ? outputDecimals : inputDecimals));\n if (isInverted) {\n return ethers_1.BigNumber.from(inputAmount)\n .mul(factor)\n .div(outputAmount)\n .toString();\n }\n else {\n return ethers_1.BigNumber.from(outputAmount)\n .mul(factor)\n .div(inputAmount)\n .toString();\n }\n }\n _getKey(order) {\n return ethers_1.utils.keccak256(this._abiEncoder.encode([\"address\", \"address\", \"address\", \"address\", \"bytes\"], [order.module, order.inputToken, order.owner, order.witness, order.data]));\n }\n _encodeSubmitData(inputToken, outputToken, owner, witness, amount, maxReturn, minReturn, secret, checkAllowance) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this.provider)\n throw new Error(\"No provider\");\n if (!this.handlerAddress)\n throw new Error(\"No handlerAddress\");\n if (inputToken.toLowerCase() === outputToken.toLowerCase())\n throw new Error(\"Input token and output token can not be equal\");\n const encodedData = this.abiEncoder.encode([\"address\", \"uint256\", \"address\", \"uint256\"], [outputToken, minReturn, this.handlerAddress, maxReturn]);\n let data, value, to;\n if ((0, utils_1.isNetworkGasToken)(inputToken)) {\n const encodedEthOrder = yield this.contract.encodeEthOrder(this.moduleAddress, constants_1.ETH_ADDRESS, // we also use ETH_ADDRESS if it's MATIC\n owner, witness, encodedData, secret);\n data = this.contract.interface.encodeFunctionData(\"depositEth\", [\n encodedEthOrder,\n ]);\n value = amount;\n to = this.contract.address;\n }\n else {\n if (checkAllowance) {\n const allowance = yield types_1.ERC20__factory.connect(inputToken, this.provider).allowance(owner, this.erc20OrderRouter.address);\n if (allowance.lt(amount))\n throw new Error(\"Insufficient token allowance for placing order\");\n }\n data = this.erc20OrderRouter.interface.encodeFunctionData(\"depositToken\", [\n amount,\n this.moduleAddress,\n inputToken,\n owner,\n witness,\n encodedData,\n secret,\n ]);\n value = ethers_1.constants.Zero;\n to = this.erc20OrderRouter.address;\n }\n return { data, value, to };\n });\n }\n}\nexports.GelatoBase = GelatoBase;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GelatoStopLimitOrders = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ethers_1 = require(\"ethers\");\nconst constants_1 = require(\"../constants\");\nconst core_1 = require(\"./core\");\nconst stoplimit_1 = require(\"../utils/queries/stoplimit\");\nclass GelatoStopLimitOrders extends core_1.GelatoBase {\n constructor(chainId, signerOrProvider, handler) {\n var _a;\n if (handler && !(0, core_1.isValidChainIdAndHandler)(chainId, handler)) {\n throw new Error(\"Invalid chainId and handler\");\n }\n const sotplossHandlers = constants_1.NETWORK_STOP_LIMIT_HANDLERS[chainId];\n if (!handler) {\n throw new Error(\"No Handler defined\");\n }\n if (handler && !sotplossHandlers.includes(handler)) {\n throw new Error(\"Handler not supported\");\n }\n const moduleAddress = constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId];\n if (!moduleAddress)\n throw new Error(\"Invalid chainId and handler\");\n const handlerAddress = (_a = constants_1.HANDLERS_ADDRESSES[chainId][handler]) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n super(chainId, moduleAddress, signerOrProvider, handler, handlerAddress);\n }\n submitStopLimitOrder(inputToken, outputToken, inputAmount, maxReturn, checkAllowance = true, overrides) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!this.signer)\n throw new Error(\"No signer\");\n if (!maxReturn)\n throw new Error(\"No StopLimit defined\");\n const owner = yield this.signer.getAddress();\n const txData = yield this.encodeStopLimitOrderSubmission(inputToken, outputToken, inputAmount, maxReturn, owner, checkAllowance);\n return this.signer.sendTransaction(Object.assign(Object.assign({}, overrides), { to: txData.to, data: txData.data, value: ethers_1.BigNumber.from(txData.value) }));\n });\n }\n encodeStopLimitOrderSubmission(inputToken, outputToken, inputAmount, maxReturn, owner, checkAllowance = true) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const { payload } = yield this.encodeStopLimitOrderSubmissionWithSecret(inputToken, outputToken, inputAmount, maxReturn, owner, checkAllowance);\n return payload;\n });\n }\n encodeStopLimitOrderSubmissionWithSecret(inputToken, outputToken, inputAmount, maxReturnToBeParsed, owner, checkAllowance = true) {\n var _a;\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!maxReturnToBeParsed)\n throw new Error(\"No StopLimit defined\");\n if (!this.handlerAddress)\n throw new Error(\"No handlerAddress\");\n const randomSecret = ethers_1.utils.hexlify(ethers_1.utils.randomBytes(19)).replace(\"0x\", \"\");\n // 0x67656c61746f6e6574776f726b = gelatonetwork in hex\n const fullSecret = `0x67656c61746f6e6574776f726b${randomSecret}`;\n const { privateKey: secret, address: witness } = new ethers_1.Wallet(fullSecret);\n const { minReturn } = this.getFeeAndSlippageAdjustedMinReturn(maxReturnToBeParsed);\n const payload = yield this._encodeSubmitData(inputToken, outputToken, owner, witness, inputAmount, maxReturnToBeParsed, minReturn, secret, checkAllowance);\n const encodedData = this.abiEncoder.encode([\"address\", \"uint256\", \"address\", \"uint256\"], [outputToken, minReturn, this.handlerAddress, maxReturnToBeParsed]);\n return {\n payload,\n secret,\n witness,\n order: {\n id: this._getKey({\n module: this.moduleAddress,\n inputToken,\n owner,\n witness,\n data: encodedData,\n }),\n module: this.moduleAddress.toLowerCase(),\n data: encodedData,\n inputToken: inputToken.toLowerCase(),\n outputToken: outputToken.toLowerCase(),\n owner: owner.toLowerCase(),\n witness: witness.toLowerCase(),\n inputAmount: inputAmount.toString(),\n minReturn: minReturn.toString(),\n maxReturn: maxReturnToBeParsed.toString(),\n adjustedMinReturn: maxReturnToBeParsed.toString(),\n inputData: payload.data.toString(),\n secret: secret.toLowerCase(),\n handler: (_a = this.handlerAddress) !== null && _a !== void 0 ? _a : null,\n },\n };\n });\n }\n getOpenStopLimitOrders(owner) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, stoplimit_1.queryStopLimitOrders)(owner, this.chainId);\n return orders.map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })));\n });\n }\n getStopLimitOrders(owner) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, stoplimit_1.queryStopLimitOrders)(owner, this.chainId);\n return orders.map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })));\n });\n }\n getExecutedStopLimitOrders(owner) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, stoplimit_1.queryStopLimitExecutedOrders)(owner, this.chainId);\n return orders.map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })));\n });\n }\n getCancelledStopLimitOrders(owner) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, stoplimit_1.queryStopLimitCancelledOrders)(owner, this.chainId);\n return orders.map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })));\n });\n }\n getPastStopLimitOrders(owner) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const orders = yield (0, stoplimit_1.queryPastOrders)(owner, this.chainId);\n return orders.map((order) => (Object.assign(Object.assign({}, order), { adjustedMinReturn: this.getAdjustedMinReturn(order.minReturn) })));\n });\n }\n}\nexports.GelatoStopLimitOrders = GelatoStopLimitOrders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEthereumChain = exports.isTransactionCostDependentChain = exports.isNetworkGasToken = exports.queries = void 0;\nconst tslib_1 = require(\"tslib\");\nconst constants_1 = require(\"../constants\");\nexports.queries = tslib_1.__importStar(require(\"./queries/constants\"));\nconst isNetworkGasToken = (token) => {\n if (token.toLowerCase() === constants_1.ETH_ADDRESS.toLowerCase()) {\n return true;\n }\n else {\n return false;\n }\n};\nexports.isNetworkGasToken = isNetworkGasToken;\nconst isTransactionCostDependentChain = (chainId) => {\n switch (chainId) {\n case 1:\n return true;\n case 3:\n return true;\n case 5:\n return true;\n case 25:\n return true;\n case 56:\n return true;\n case 250:\n return true;\n case 43114:\n return true;\n default:\n return false;\n }\n};\nexports.isTransactionCostDependentChain = isTransactionCostDependentChain;\nconst isEthereumChain = (chainId) => {\n switch (chainId) {\n case 1:\n return true;\n case 3:\n return true;\n case 5:\n return true;\n default:\n return false;\n }\n};\nexports.isEthereumChain = isEthereumChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER = exports.GET_ALL_CANCELLED_ORDERS_BY_OWNER = exports.GET_ALL_EXECUTED_ORDERS_BY_OWNER = exports.GET_ALL_PAST_ORDERS_BY_OWNER = exports.GET_ALL_OPEN_ORDERS_BY_OWNER = exports.GET_ALL_ORDERS_BY_OWNER = exports.GET_ORDER_BY_ID = void 0;\nconst graphql_request_1 = require(\"graphql-request\");\nexports.GET_ORDER_BY_ID = (0, graphql_request_1.gql) `\n query getOrdersByOwner($id: String) {\n orders(where: { id: $id }) {\n id\n owner\n inputToken\n outputToken\n minReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\nexports.GET_ALL_ORDERS_BY_OWNER = (0, graphql_request_1.gql) `\n query getOrdersByOwner($owner: String) {\n orders(\n first: 1000\n orderBy: updatedAtBlock\n orderDirection: desc\n where: { owner: $owner }\n ) {\n id\n owner\n inputToken\n outputToken\n minReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\nexports.GET_ALL_OPEN_ORDERS_BY_OWNER = (0, graphql_request_1.gql) `\n query getOpenOrdersByOwner($owner: String) {\n orders(\n first: 1000\n orderBy: updatedAtBlock\n orderDirection: desc\n where: { owner: $owner, status: open }\n ) {\n id\n owner\n inputToken\n outputToken\n minReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\nexports.GET_ALL_PAST_ORDERS_BY_OWNER = (0, graphql_request_1.gql) `\n query getPastOrdersByOwner($owner: String) {\n orders(\n first: 1000\n orderBy: updatedAtBlock\n orderDirection: desc\n where: { owner: $owner, status_not: open }\n ) {\n id\n owner\n inputToken\n outputToken\n minReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\nexports.GET_ALL_EXECUTED_ORDERS_BY_OWNER = (0, graphql_request_1.gql) `\n query getExecutedOrdersByOwner($owner: String) {\n orders(\n first: 1000\n orderBy: updatedAtBlock\n orderDirection: desc\n where: { owner: $owner, status: executed }\n ) {\n id\n owner\n inputToken\n outputToken\n minReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\nexports.GET_ALL_CANCELLED_ORDERS_BY_OWNER = (0, graphql_request_1.gql) `\n query getCancelledOrdersByOwner($owner: String) {\n orders(\n first: 1000\n orderBy: updatedAtBlock\n orderDirection: desc\n where: { owner: $owner, status: cancelled }\n ) {\n id\n owner\n inputToken\n outputToken\n minReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\nexports.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER = (0, graphql_request_1.gql) `\n query getOrdersByOwner($owner: String, $module: String) {\n orders(\n first: 1000\n orderBy: updatedAtBlock\n orderDirection: desc\n where: { owner: $owner, module: $module }\n ) {\n id\n owner\n inputToken\n outputToken\n minReturn\n maxReturn\n module\n witness\n secret\n inputAmount\n vault\n bought\n auxData\n status\n createdTxHash\n executedTxHash\n cancelledTxHash\n blockNumber\n createdAt\n updatedAt\n updatedAtBlock\n updatedAtBlockHash\n data\n inputData\n handler\n }\n }\n`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.queryCancelledOrders = exports.queryExecutedOrders = exports.queryPastOrders = exports.queryOpenOrders = exports.queryOrders = exports.queryOrder = void 0;\nconst tslib_1 = require(\"tslib\");\nconst graphql_request_1 = require(\"graphql-request\");\nconst constants_1 = require(\"../../constants\");\nconst constants_2 = require(\"./constants\");\nconst stopLimitModule = (chainId) => constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId].toLowerCase();\nconst queryOrder = (orderId, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n var _a;\n try {\n const dataFromOldSubgraph = constants_1.OLD_SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.OLD_SUBGRAPH_URL[chainId], constants_2.GET_ORDER_BY_ID, {\n id: orderId.toLowerCase(),\n })\n : { orders: [] };\n const dataFromNewSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ORDER_BY_ID, {\n id: orderId.toLowerCase(),\n })\n : { orders: [] };\n const allOrders = [\n ...dataFromOldSubgraph.orders,\n ...dataFromNewSubgraph.orders,\n ];\n return (_a = _getUniqueOrdersWithExpiry(allOrders, chainId).pop()) !== null && _a !== void 0 ? _a : null;\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for all orders\");\n }\n});\nexports.queryOrder = queryOrder;\nconst queryOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataFromOldSubgraph = constants_1.OLD_SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.OLD_SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const dataFromNewSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const allOrders = [\n ...dataFromOldSubgraph.orders,\n ...dataFromNewSubgraph.orders,\n ];\n return _getUniqueOrdersWithExpiry(allOrders, chainId);\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for all orders\");\n }\n});\nexports.queryOrders = queryOrders;\nconst queryOpenOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataFromOldSubgraph = constants_1.OLD_SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.OLD_SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const dataFromNewSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const allOrders = [\n ...dataFromOldSubgraph.orders,\n ...dataFromNewSubgraph.orders,\n ];\n return _getUniqueOrdersWithExpiry(allOrders, chainId).filter((order) => order.status === \"open\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for open orders\");\n }\n});\nexports.queryOpenOrders = queryOpenOrders;\nconst queryPastOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataFromOldSubgraph = constants_1.OLD_SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.OLD_SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const dataFromNewSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const allOrders = [\n ...dataFromOldSubgraph.orders,\n ...dataFromNewSubgraph.orders,\n ];\n return _getUniqueOrdersWithExpiry(allOrders, chainId).filter((order) => order.status !== \"open\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for past orders\");\n }\n});\nexports.queryPastOrders = queryPastOrders;\nconst queryExecutedOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataFromOldSubgraph = constants_1.OLD_SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.OLD_SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const dataFromNewSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const allOrders = [\n ...dataFromOldSubgraph.orders,\n ...dataFromNewSubgraph.orders,\n ];\n return _getUniqueOrdersWithExpiry(allOrders, chainId).filter((order) => order.status === \"executed\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for executed orders\");\n }\n});\nexports.queryExecutedOrders = queryExecutedOrders;\nconst queryCancelledOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataFromOldSubgraph = constants_1.OLD_SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.OLD_SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const dataFromNewSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n })\n : { orders: [] };\n const allOrders = [\n ...dataFromOldSubgraph.orders,\n ...dataFromNewSubgraph.orders,\n ];\n return _getUniqueOrdersWithExpiry(allOrders, chainId).filter((order) => order.status === \"cancelled\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for cancelled orders\");\n }\n});\nexports.queryCancelledOrders = queryCancelledOrders;\nconst _getUniqueOrdersWithExpiry = (allOrders, chainId) => \n// create Map and asign order id to order (key:value) to avoid having duplicated orders form multiple subgraphs\n[...new Map(allOrders.map((order) => [order.id, order])).values()]\n // sort by `updatedAt` asc so that the most recent one will be used\n .sort((a, b) => parseFloat(a.updatedAt) - parseFloat(b.updatedAt))\n // filter out stop limit module\n .filter((order) => order.module !== stopLimitModule(chainId))\n // add expiry to order obj\n .map((order) => {\n const isExpired = Date.now() >\n (parseInt(order.createdAt) + constants_1.MAX_LIFETIME_IN_SECONDS) * 1000;\n return Object.assign(Object.assign({}, order), { isExpired });\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._getUniqueOrdersWithExpiry = exports.queryPastOrders = exports.queryStopLimitCancelledOrders = exports.queryStopLimitExecutedOrders = exports.queryOpenStopLimitOrders = exports.queryStopLimitOrders = void 0;\nconst tslib_1 = require(\"tslib\");\nconst graphql_request_1 = require(\"graphql-request\");\nconst constants_1 = require(\"../../constants\");\nconst constants_2 = require(\"./constants\");\nconst queryStopLimitOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataStopLimitSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n module: constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId].toLowerCase(),\n })\n : { orders: [] };\n const orders = dataStopLimitSubgraph.orders;\n return (0, exports._getUniqueOrdersWithExpiry)(orders);\n }\n catch (error) {\n console.error(error);\n throw new Error(\"Could not query subgraph for all orders\");\n }\n});\nexports.queryStopLimitOrders = queryStopLimitOrders;\nconst queryOpenStopLimitOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataStopLimitSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n module: constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId].toLowerCase(),\n })\n : { orders: [] };\n const orders = dataStopLimitSubgraph.orders;\n return (0, exports._getUniqueOrdersWithExpiry)(orders).filter((order) => order.status === \"open\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for open orders\");\n }\n});\nexports.queryOpenStopLimitOrders = queryOpenStopLimitOrders;\nconst queryStopLimitExecutedOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataStopLimitSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n module: constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId].toLowerCase(),\n })\n : { orders: [] };\n const orders = dataStopLimitSubgraph.orders;\n return (0, exports._getUniqueOrdersWithExpiry)(orders).filter((order) => order.status === \"executed\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for executed orders\");\n }\n});\nexports.queryStopLimitExecutedOrders = queryStopLimitExecutedOrders;\nconst queryStopLimitCancelledOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataStopLimitSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n module: constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId].toLowerCase(),\n })\n : { orders: [] };\n const orders = dataStopLimitSubgraph.orders;\n return (0, exports._getUniqueOrdersWithExpiry)(orders).filter((order) => order.status === \"cancelled\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for cancelled orders\");\n }\n});\nexports.queryStopLimitCancelledOrders = queryStopLimitCancelledOrders;\nconst queryPastOrders = (owner, chainId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {\n try {\n const dataStopLimitSubgraph = constants_1.SUBGRAPH_URL[chainId]\n ? yield (0, graphql_request_1.request)(constants_1.SUBGRAPH_URL[chainId], constants_2.GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER, {\n owner: owner.toLowerCase(),\n module: constants_1.GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS[chainId].toLowerCase(),\n })\n : { orders: [] };\n const orders = dataStopLimitSubgraph.orders;\n return (0, exports._getUniqueOrdersWithExpiry)(orders).filter((order) => order.status !== \"open\");\n }\n catch (error) {\n throw new Error(\"Could not query subgraph for past orders\");\n }\n});\nexports.queryPastOrders = queryPastOrders;\nconst _getUniqueOrdersWithExpiry = (allOrders) => [...new Map(allOrders.map((order) => [order.id, order])).values()]\n // sort by `updatedAt` asc so that the most recent one will be used\n .sort((a, b) => parseFloat(a.updatedAt) - parseFloat(b.updatedAt))\n // add expiry to order obj\n .map((order) => {\n const isExpired = Date.now() >\n (parseInt(order.createdAt) + constants_1.MAX_LIFETIME_IN_SECONDS) * 1000;\n return Object.assign(Object.assign({}, order), { isExpired });\n});\nexports._getUniqueOrdersWithExpiry = _getUniqueOrdersWithExpiry;\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 });\nvar extract_files_1 = require(\"extract-files\");\nvar form_data_1 = __importDefault(require(\"form-data\"));\n/**\n * Duck type if NodeJS stream\n * https://github.com/sindresorhus/is-stream/blob/3750505b0727f6df54324784fe369365ef78841e/index.js#L3\n */\nvar isExtractableFileEnhanced = function (value) {\n return extract_files_1.isExtractableFile(value) ||\n (value !== null && typeof value === 'object' && typeof value.pipe === 'function');\n};\n/**\n * Returns Multipart Form if body contains files\n * (https://github.com/jaydenseric/graphql-multipart-request-spec)\n * Otherwise returns JSON\n */\nfunction createRequestBody(query, variables, operationName) {\n var _a = extract_files_1.extractFiles({ query: query, variables: variables, operationName: operationName }, '', isExtractableFileEnhanced), clone = _a.clone, files = _a.files;\n if (files.size === 0) {\n if (!Array.isArray(query)) {\n return JSON.stringify(clone);\n }\n if (typeof variables !== 'undefined' && !Array.isArray(variables)) {\n throw new Error('Cannot create request body with given variable type, array expected');\n }\n // Batch support\n var payload = query.reduce(function (accu, currentQuery, index) {\n accu.push({ query: currentQuery, variables: variables ? variables[index] : undefined });\n return accu;\n }, []);\n return JSON.stringify(payload);\n }\n var Form = typeof FormData === 'undefined' ? form_data_1.default : FormData;\n var form = new Form();\n form.append('operations', JSON.stringify(clone));\n var map = {};\n var i = 0;\n files.forEach(function (paths) {\n map[++i] = paths;\n });\n form.append('map', JSON.stringify(map));\n i = 0;\n files.forEach(function (paths, file) {\n form.append(\"\" + ++i, file);\n });\n return form;\n}\nexports.default = createRequestBody;\n//# sourceMappingURL=createRequestBody.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.gql = exports.batchRequests = exports.request = exports.rawRequest = exports.GraphQLClient = exports.ClientError = void 0;\nvar cross_fetch_1 = __importStar(require(\"cross-fetch\")), CrossFetch = cross_fetch_1;\nvar printer_1 = require(\"graphql/language/printer\");\nvar createRequestBody_1 = __importDefault(require(\"./createRequestBody\"));\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"ClientError\", { enumerable: true, get: function () { return types_1.ClientError; } });\n/**\n * Convert the given headers configuration into a plain object.\n */\nvar resolveHeaders = function (headers) {\n var oHeaders = {};\n if (headers) {\n if ((typeof Headers !== 'undefined' && headers instanceof Headers) ||\n headers instanceof CrossFetch.Headers) {\n oHeaders = HeadersInstanceToPlainObject(headers);\n }\n else if (Array.isArray(headers)) {\n headers.forEach(function (_a) {\n var name = _a[0], value = _a[1];\n oHeaders[name] = value;\n });\n }\n else {\n oHeaders = headers;\n }\n }\n return oHeaders;\n};\n/**\n * Clean a GraphQL document to send it via a GET query\n *\n * @param {string} str GraphQL query\n * @returns {string} Cleaned query\n */\nvar queryCleanner = function (str) { return str.replace(/([\\s,]|#[^\\n\\r]+)+/g, ' ').trim(); };\n/**\n * Create query string for GraphQL request\n *\n * @param {object} param0 -\n *\n * @param {string|string[]} param0.query the GraphQL document or array of document if it's a batch request\n * @param {string|undefined} param0.operationName the GraphQL operation name\n * @param {any|any[]} param0.variables the GraphQL variables to use\n */\nvar buildGetQueryParams = function (_a) {\n var query = _a.query, variables = _a.variables, operationName = _a.operationName;\n if (!Array.isArray(query)) {\n var search = [\"query=\" + encodeURIComponent(queryCleanner(query))];\n if (variables) {\n search.push(\"variables=\" + encodeURIComponent(JSON.stringify(variables)));\n }\n if (operationName) {\n search.push(\"operationName=\" + encodeURIComponent(operationName));\n }\n return search.join('&');\n }\n if (typeof variables !== 'undefined' && !Array.isArray(variables)) {\n throw new Error('Cannot create query with given variable type, array expected');\n }\n // Batch support\n var payload = query.reduce(function (accu, currentQuery, index) {\n accu.push({\n query: queryCleanner(currentQuery),\n variables: variables ? JSON.stringify(variables[index]) : undefined,\n });\n return accu;\n }, []);\n return \"query=\" + encodeURIComponent(JSON.stringify(payload));\n};\n/**\n * Fetch data using POST method\n */\nvar post = function (_a) {\n var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions;\n return __awaiter(void 0, void 0, void 0, function () {\n var body;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n body = createRequestBody_1.default(query, variables, operationName);\n return [4 /*yield*/, fetch(url, __assign({ method: 'POST', headers: __assign(__assign({}, (typeof body === 'string' ? { 'Content-Type': 'application/json' } : {})), headers), body: body }, fetchOptions))];\n case 1: return [2 /*return*/, _b.sent()];\n }\n });\n });\n};\n/**\n * Fetch data using GET method\n */\nvar get = function (_a) {\n var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions;\n return __awaiter(void 0, void 0, void 0, function () {\n var queryParams;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryParams = buildGetQueryParams({\n query: query,\n variables: variables,\n operationName: operationName,\n });\n return [4 /*yield*/, fetch(url + \"?\" + queryParams, __assign({ method: 'GET', headers: headers }, fetchOptions))];\n case 1: return [2 /*return*/, _b.sent()];\n }\n });\n });\n};\n/**\n * todo\n */\nvar GraphQLClient = /** @class */ (function () {\n function GraphQLClient(url, options) {\n this.url = url;\n this.options = options || {};\n }\n GraphQLClient.prototype.rawRequest = function (query, variables, requestHeaders) {\n var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, fetchOptions = __rest(_a, [\"headers\", \"fetch\", \"method\"]);\n var url = this.url;\n return makeRequest({\n url: url,\n query: query,\n variables: variables,\n headers: __assign(__assign({}, resolveHeaders(headers)), resolveHeaders(requestHeaders)),\n operationName: undefined,\n fetch: fetch,\n method: method,\n fetchOptions: fetchOptions,\n });\n };\n /**\n * Send a GraphQL document to the server.\n */\n GraphQLClient.prototype.request = function (document, variables, requestHeaders) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, headers, _b, fetch, _c, method, fetchOptions, url, _d, query, operationName, data;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, fetchOptions = __rest(_a, [\"headers\", \"fetch\", \"method\"]);\n url = this.url;\n _d = resolveRequestDocument(document), query = _d.query, operationName = _d.operationName;\n return [4 /*yield*/, makeRequest({\n url: url,\n query: query,\n variables: variables,\n headers: __assign(__assign({}, resolveHeaders(headers)), resolveHeaders(requestHeaders)),\n operationName: operationName,\n fetch: fetch,\n method: method,\n fetchOptions: fetchOptions,\n })];\n case 1:\n data = (_e.sent()).data;\n return [2 /*return*/, data];\n }\n });\n });\n };\n /**\n * Send a GraphQL document to the server.\n */\n GraphQLClient.prototype.batchRequests = function (documents, requestHeaders) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, headers, _b, fetch, _c, method, fetchOptions, url, queries, variables, data;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, fetchOptions = __rest(_a, [\"headers\", \"fetch\", \"method\"]);\n url = this.url;\n queries = documents.map(function (_a) {\n var document = _a.document;\n return resolveRequestDocument(document).query;\n });\n variables = documents.map(function (_a) {\n var variables = _a.variables;\n return variables;\n });\n return [4 /*yield*/, makeRequest({\n url: url,\n query: queries,\n variables: variables,\n headers: __assign(__assign({}, resolveHeaders(headers)), resolveHeaders(requestHeaders)),\n operationName: undefined,\n fetch: fetch,\n method: method,\n fetchOptions: fetchOptions,\n })];\n case 1:\n data = (_d.sent()).data;\n return [2 /*return*/, data];\n }\n });\n });\n };\n GraphQLClient.prototype.setHeaders = function (headers) {\n this.options.headers = headers;\n return this;\n };\n /**\n * Attach a header to the client. All subsequent requests will have this header.\n */\n GraphQLClient.prototype.setHeader = function (key, value) {\n var _a;\n var headers = this.options.headers;\n if (headers) {\n // todo what if headers is in nested array form... ?\n //@ts-ignore\n headers[key] = value;\n }\n else {\n this.options.headers = (_a = {}, _a[key] = value, _a);\n }\n return this;\n };\n /**\n * Change the client endpoint. All subsequent requests will send to this endpoint.\n */\n GraphQLClient.prototype.setEndpoint = function (value) {\n this.url = value;\n return this;\n };\n return GraphQLClient;\n}());\nexports.GraphQLClient = GraphQLClient;\nfunction makeRequest(_a) {\n var url = _a.url, query = _a.query, variables = _a.variables, headers = _a.headers, operationName = _a.operationName, fetch = _a.fetch, _b = _a.method, method = _b === void 0 ? 'POST' : _b, fetchOptions = _a.fetchOptions;\n return __awaiter(this, void 0, void 0, function () {\n var fetcher, isBathchingQuery, response, result, successfullyReceivedData, headers_1, status_1, errorResult;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n fetcher = method.toUpperCase() === 'POST' ? post : get;\n isBathchingQuery = Array.isArray(query);\n return [4 /*yield*/, fetcher({\n url: url,\n query: query,\n variables: variables,\n operationName: operationName,\n headers: headers,\n fetch: fetch,\n fetchOptions: fetchOptions,\n })];\n case 1:\n response = _c.sent();\n return [4 /*yield*/, getResult(response)];\n case 2:\n result = _c.sent();\n successfullyReceivedData = isBathchingQuery && Array.isArray(result) ? !result.some(function (_a) {\n var data = _a.data;\n return !data;\n }) : !!result.data;\n if (response.ok && !result.errors && successfullyReceivedData) {\n headers_1 = response.headers, status_1 = response.status;\n return [2 /*return*/, __assign(__assign({}, (isBathchingQuery ? { data: result } : result)), { headers: headers_1, status: status_1 })];\n }\n else {\n errorResult = typeof result === 'string' ? { error: result } : result;\n throw new types_1.ClientError(__assign(__assign({}, errorResult), { status: response.status, headers: response.headers }), { query: query, variables: variables });\n }\n return [2 /*return*/];\n }\n });\n });\n}\n/**\n * todo\n */\nfunction rawRequest(url, query, variables, requestHeaders) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n client = new GraphQLClient(url);\n return [2 /*return*/, client.rawRequest(query, variables, requestHeaders)];\n });\n });\n}\nexports.rawRequest = rawRequest;\n/**\n * Send a GraphQL Document to the GraphQL server for exectuion.\n *\n * @example\n *\n * ```ts\n * // You can pass a raw string\n *\n * await request('https://foo.bar/graphql', `\n * {\n * query {\n * users\n * }\n * }\n * `)\n *\n * // You can also pass a GraphQL DocumentNode. Convenient if you\n * // are using graphql-tag package.\n *\n * import gql from 'graphql-tag'\n *\n * await request('https://foo.bar/graphql', gql`...`)\n *\n * // If you don't actually care about using DocumentNode but just\n * // want the tooling support for gql template tag like IDE syntax\n * // coloring and prettier autoformat then note you can use the\n * // passthrough gql tag shipped with graphql-request to save a bit\n * // of performance and not have to install another dep into your project.\n *\n * import { gql } from 'graphql-request'\n *\n * await request('https://foo.bar/graphql', gql`...`)\n * ```\n */\nfunction request(url, document, variables, requestHeaders) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n client = new GraphQLClient(url);\n return [2 /*return*/, client.request(document, variables, requestHeaders)];\n });\n });\n}\nexports.request = request;\n/**\n * Send a batch of GraphQL Document to the GraphQL server for exectuion.\n *\n * @example\n *\n * ```ts\n * // You can pass a raw string\n *\n * await batchRequests('https://foo.bar/graphql', [\n * {\n * query: `\n * {\n * query {\n * users\n * }\n * }`\n * },\n * {\n * query: `\n * {\n * query {\n * users\n * }\n * }`\n * }])\n *\n * // You can also pass a GraphQL DocumentNode as query. Convenient if you\n * // are using graphql-tag package.\n *\n * import gql from 'graphql-tag'\n *\n * await batchRequests('https://foo.bar/graphql', [{ query: gql`...` }])\n * ```\n */\nfunction batchRequests(url, documents, requestHeaders) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n client = new GraphQLClient(url);\n return [2 /*return*/, client.batchRequests(documents, requestHeaders)];\n });\n });\n}\nexports.batchRequests = batchRequests;\nexports.default = request;\n/**\n * todo\n */\nfunction getResult(response) {\n var contentType = response.headers.get('Content-Type');\n if (contentType && contentType.startsWith('application/json')) {\n return response.json();\n }\n else {\n return response.text();\n }\n}\n/**\n * helpers\n */\nfunction resolveRequestDocument(document) {\n var _a;\n if (typeof document === 'string')\n return { query: document };\n var operationName = undefined;\n var operationDefinitions = document.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; });\n if (operationDefinitions.length === 1) {\n operationName = (_a = operationDefinitions[0].name) === null || _a === void 0 ? void 0 : _a.value;\n }\n return { query: printer_1.print(document), operationName: operationName };\n}\n/**\n * Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package.\n *\n * @example\n *\n * import { gql } from 'graphql-request'\n *\n * await request('https://foo.bar/graphql', gql`...`)\n *\n * @remarks\n *\n * Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named \"gql\". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation.\n */\nfunction gql(chunks) {\n var variables = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n variables[_i - 1] = arguments[_i];\n }\n return chunks.reduce(function (accumulator, chunk, index) { return \"\" + accumulator + chunk + (index in variables ? variables[index] : ''); }, '');\n}\nexports.gql = gql;\n/**\n * Convert Headers instance into regular object\n */\nfunction HeadersInstanceToPlainObject(headers) {\n var o = {};\n headers.forEach(function (v, k) {\n o[k] = v;\n });\n return o;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientError = void 0;\nvar ClientError = /** @class */ (function (_super) {\n __extends(ClientError, _super);\n function ClientError(response, request) {\n var _this = this;\n var message = ClientError.extractMessage(response) + \": \" + JSON.stringify({\n response: response,\n request: request,\n });\n _this = _super.call(this, message) || this;\n Object.setPrototypeOf(_this, ClientError.prototype);\n _this.response = response;\n _this.request = request;\n // this is needed as Safari doesn't support .captureStackTrace\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(_this, ClientError);\n }\n return _this;\n }\n ClientError.extractMessage = function (response) {\n try {\n return response.errors[0].message;\n }\n catch (e) {\n return \"GraphQL Error (Code: \" + response.status + \")\";\n }\n };\n return ClientError;\n}(Error));\nexports.ClientError = ClientError;\n//# sourceMappingURL=types.js.map","\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\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(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/sha2\";\nexport function pbkdf2(password, salt, iterations, keylen, hashAlgorithm) {\n password = arrayify(password);\n salt = arrayify(salt);\n let hLen;\n let l = 1;\n const DK = new Uint8Array(keylen);\n const block1 = new Uint8Array(salt.length + 4);\n block1.set(salt);\n //salt.copy(block1, 0, 0, salt.length)\n let r;\n let T;\n for (let i = 1; i <= l; i++) {\n //block1.writeUInt32BE(i, salt.length)\n block1[salt.length] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = i & 0xff;\n //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(hashAlgorithm, password, block1));\n if (!hLen) {\n hLen = U.length;\n T = new Uint8Array(hLen);\n l = Math.ceil(keylen / hLen);\n r = keylen - (l - 1) * hLen;\n }\n //U.copy(T, 0, 0, hLen)\n T.set(U);\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++)\n T[k] ^= U[k];\n }\n const destPos = (i - 1) * hLen;\n const len = (i === l ? r : hLen);\n //T.copy(DK, destPos, 0, len)\n DK.set(arrayify(T).slice(0, len), destPos);\n }\n return hexlify(DK);\n}\n//# sourceMappingURL=pbkdf2.js.map","export const version = \"wordlists/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n// This gets overridden by rollup\nconst exportWordlist = false;\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\nexport class Wordlist {\n constructor(locale) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n static check(wordlist) {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) {\n return \"0x\";\n }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n static register(lang, name) {\n if (!name) {\n name = lang.locale;\n }\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = window;\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n }\n catch (error) { }\n }\n }\n}\n//# sourceMappingURL=wordlist.js.map","\"use strict\";\nimport { Wordlist } from \"./wordlist\";\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\nlet wordlist = null;\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\nconst langEn = new LangEn();\nWordlist.register(langEn);\nexport { langEn };\n//# sourceMappingURL=lang-en.js.map","\"use strict\";\nimport { langEn as en } from \"./lang-en\";\nexport const wordlists = {\n en: en\n};\n//# sourceMappingURL=wordlists.js.map","\"use strict\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { wordlists } from \"@ethersproject/wordlists\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\nconst HardenedBit = 0x80000000;\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits);\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return (1 << bits) - 1;\n}\nfunction bytes32(value) {\n return hexZeroPad(hexlify(value), 32);\n}\nfunction base58check(data) {\n return Base58.encode(concat([data, hexDataSlice(sha256(sha256(data)), 0, 4)]));\n}\nfunction getWordlist(wordlist) {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n if (typeof (wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n return wordlist;\n}\nconst _constructorGuard = {};\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n;\nexport class HDNode {\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard, privateKey, publicKey, parentFingerprint, chainCode, index, depth, mnemonicOrPath) {\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n }\n else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n defineReadOnly(this, \"chainCode\", chainCode);\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n }\n else if (typeof (mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n }\n else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\" : \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([\"0x00\", this.privateKey]) : this.publicKey),\n ]));\n }\n neuter() {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n _derive(index) {\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n }\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n // Hardened path\n if (path) {\n path += \"'\";\n }\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // The private key\n let ki = null;\n // The public key\n let Ki = null;\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n }\n else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n let mnemonicOrPath = path;\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n derivePath(path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result._derive(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result._derive(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n }\n static _fromSeed(seed, mnemonic) {\n const seedArray = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n static fromMnemonic(mnemonic, password, wordlist) {\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n static fromSeed(seed) {\n return HDNode._fromSeed(seed, null);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = Base58.decode(extendedKey);\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\nexport function mnemonicToSeed(mnemonic, password) {\n if (!password) {\n password = \"\";\n }\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = getWordlist(wordlist);\n logger.checkNormalize();\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) {\n throw new Error(\"invalid mnemonic\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n throw new Error(\"invalid mnemonic\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nexport function entropyToMnemonic(entropy, wordlist) {\n wordlist = getWordlist(wordlist);\n entropy = arrayify(entropy);\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nexport function isValidMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getAccountPath(index) {\n if (typeof (index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=index.js.map","export const version = \"hdnode/5.7.0\";\n//# sourceMappingURL=_version.js.map","export const version = \"random/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Debugging line for testing browser lib in node\n//const window = { crypto: { getRandomValues: () => { } } };\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n logger.warn(\"WARNING: Missing strong random number source\");\n crypto = {\n getRandomValues: function (buffer) {\n return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"crypto.getRandomValues\"\n });\n }\n };\n}\nexport function randomBytes(length) {\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return arrayify(result);\n}\n;\n//# sourceMappingURL=random.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function searchPath(object, path) {\n let currentChild = object;\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n // Now check this child...\n currentChild = matchingChild;\n }\n return currentChild;\n}\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = arrayify(randomBytes);\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","export const version = \"json-wallets/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Exported Types\nfunction hasMnemonic(value) {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\nexport class KeystoreAccount extends Description {\n isKeystoreAccount(value) {\n return !!(value && value._isKeystoreAccount);\n }\n}\nfunction _decrypt(data, key, ciphertext) {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"));\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n return null;\n}\nfunction _getAccount(data, key) {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n const mnemonicKey = key.slice(32, 64);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n const account = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n account.mnemonic = node.mnemonic;\n }\n catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n return new KeystoreAccount(account);\n}\nfunction pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc) {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\nfunction pbkdf2(passwordBytes, salt, count, dkLen, prfFunc) {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\nfunction _computeKdfKey(data, password, pbkdf2Func, scryptFunc, progressCallback) {\n const passwordBytes = getPassword(password);\n const kdf = searchPath(data, \"crypto/kdf\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n // Check for all required parameters\n if (!N || !r || !p) {\n throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n throwError(\"N\", N);\n }\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n let prfFunc = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n }\n else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n }\n else {\n throwError(\"prf\", prf);\n }\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptSync(json, password) {\n const data = JSON.parse(json);\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\nexport function decrypt(json, password, progressCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.parse(json);\n const key = yield _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n });\n}\nexport function encrypt(account, password, options, progressCallback) {\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n }\n catch (e) {\n return Promise.reject(e);\n }\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n let entropy = null;\n let path = null;\n let locale = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n let client = options.client;\n if (!client) {\n client = \"ethers.js\";\n }\n // Check/generate the salt\n let salt = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n }\n else {\n salt = randomBytes(32);\n ;\n }\n // Override initialization vector\n let iv = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) {\n throw new Error(\"invalid iv\");\n }\n }\n else {\n iv = randomBytes(16);\n }\n // Override the uuid\n let uuidRandom = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n }\n else {\n uuidRandom = randomBytes(16);\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n });\n}\n//# sourceMappingURL=keystore.js.map","\"use strict\";\nimport aes from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\nexport class CrowdsaleAccount extends Description {\n isCrowdsaleAccount(value) {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json, password) {\n const data = JSON.parse(json);\n password = getPassword(password);\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n const seedHexBytes = toUtf8Bytes(seedHex);\n const privateKey = keccak256(seedHexBytes);\n return new CrowdsaleAccount({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n//# sourceMappingURL=crowdsale.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nexport function isCrowdsaleWallet(json) {\n let data = null;\n try {\n data = JSON.parse(json);\n }\n catch (error) {\n return false;\n }\n return (data.encseed && data.ethaddr);\n}\nexport function isKeystoreWallet(json) {\n let data = null;\n try {\n data = JSON.parse(json);\n }\n catch (error) {\n return false;\n }\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\nexport function getJsonWalletAddress(json) {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n }\n catch (error) {\n return null;\n }\n }\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n }\n catch (error) {\n return null;\n }\n }\n return null;\n}\n//# sourceMappingURL=inspect.js.map","\"use strict\";\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore } from \"./keystore\";\nfunction decryptJsonWallet(json, password, progressCallback) {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) {\n progressCallback(0);\n }\n const account = decryptCrowdsale(json, password);\n if (progressCallback) {\n progressCallback(1);\n }\n return Promise.resolve(account);\n }\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\nfunction decryptJsonWalletSync(json, password) {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password);\n }\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n throw new Error(\"invalid JSON wallet\");\n}\nexport { decryptCrowdsale, decryptKeystore, decryptKeystoreSync, encryptKeystore, isCrowdsaleWallet, isKeystoreWallet, getJsonWalletAddress, decryptJsonWallet, decryptJsonWalletSync, };\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { Signer } from \"@ethersproject/abstract-signer\";\nimport { arrayify, concat, hexDataSlice, isHexString, joinSignature } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize } from \"@ethersproject/transactions\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction isAccount(value) {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\nfunction hasMnemonic(value) {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\nexport class Wallet extends Signer {\n constructor(privateKey, provider) {\n super();\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => ({\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n }\n else {\n defineReadOnly(this, \"_mnemonic\", () => null);\n }\n }\n else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => privateKey);\n }\n else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof (privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n defineReadOnly(this, \"_mnemonic\", () => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n defineReadOnly(this, \"provider\", provider || null);\n }\n get mnemonic() { return this._mnemonic(); }\n get privateKey() { return this._signingKey().privateKey; }\n get publicKey() { return this._signingKey().publicKey; }\n getAddress() {\n return Promise.resolve(this.address);\n }\n connect(provider) {\n return new Wallet(this, provider);\n }\n signTransaction(transaction) {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n });\n }\n _signTypedData(domain, types, value) {\n return __awaiter(this, void 0, void 0, function* () {\n // Populate any ENS names\n const populated = yield _TypedDataEncoder.resolveNames(domain, types, value, (name) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n });\n }\n encrypt(password, options, progressCallback) {\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (progressCallback && typeof (progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n if (!options) {\n options = {};\n }\n return encryptKeystore(this, password, options, progressCallback);\n }\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options) {\n let entropy = randomBytes(16);\n if (!options) {\n options = {};\n }\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([entropy, options.extraEntropy])), 0, 16));\n }\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n static fromEncryptedJson(json, password, progressCallback) {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n static fromEncryptedJsonSync(json, password) {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n static fromMnemonic(mnemonic, path, wordlist) {\n if (!path) {\n path = defaultPath;\n }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\nexport function verifyMessage(message, signature) {\n return recoverAddress(hashMessage(message), signature);\n}\nexport function verifyTypedData(domain, types, value, signature) {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n//# sourceMappingURL=index.js.map","export const version = \"wallet/5.7.0\";\n//# sourceMappingURL=_version.js.map","// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n//# sourceMappingURL=strings.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nlet WS = null;\ntry {\n WS = WebSocket;\n if (WS == null) {\n throw new Error(\"inject please\");\n }\n}\ncatch (error) {\n const logger = new Logger(version);\n WS = function () {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n };\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n//# sourceMappingURL=ws.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\nlet NextId = 1;\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\nexport class WebSocketProvider extends JsonRpcProvider {\n constructor(url, network) {\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n if (typeof (url) === \"string\") {\n super(url, network);\n }\n else {\n super(\"_websocket\", network);\n }\n this._pollingInterval = -1;\n this._wsReady = false;\n if (typeof (url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n }\n else {\n defineReadOnly(this, \"_websocket\", url);\n }\n defineReadOnly(this, \"_requests\", {});\n defineReadOnly(this, \"_subs\", {});\n defineReadOnly(this, \"_subIds\", {});\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n this.websocket.onmessage = (messageEvent) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n if (result.result !== undefined) {\n request.callback(null, result.result);\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n }\n else {\n let error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n }\n else {\n error = new Error(\"unknown error\");\n }\n request.callback(error, undefined);\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n }\n }\n else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result);\n }\n }\n else {\n console.warn(\"this should not happen\");\n }\n };\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) {\n fauxPoll.unref();\n }\n }\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket() { return this._websocket; }\n detectNetwork() {\n return this._detectNetwork;\n }\n get pollingInterval() {\n return 0;\n }\n resetEventsBlock(blockNumber) {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n set pollingInterval(value) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n poll() {\n return __awaiter(this, void 0, void 0, function* () {\n return null;\n });\n }\n set polling(value) {\n if (!value) {\n return;\n }\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n send(method, params) {\n const rid = NextId++;\n return new Promise((resolve, reject) => {\n function callback(error, result) {\n if (error) {\n return reject(error);\n }\n return resolve(result);\n }\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n this._requests[String(rid)] = { callback, payload };\n if (this._wsReady) {\n this.websocket.send(payload);\n }\n });\n }\n static defaultUrl() {\n return \"ws:/\\/localhost:8546\";\n }\n _subscribe(tag, param, processFunc) {\n return __awaiter(this, void 0, void 0, function* () {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = yield subIdPromise;\n this._subs[subId] = { tag, processFunc };\n });\n }\n _startEvent(event) {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [\"newHeads\"], (result) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n case \"pending\":\n this._subscribe(\"pending\", [\"newPendingTransactions\"], (result) => {\n this.emit(\"pending\", result);\n });\n break;\n case \"filter\":\n this._subscribe(event.tag, [\"logs\", this._getFilter(event.filter)], (result) => {\n if (result.removed == null) {\n result.removed = false;\n }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n case \"tx\": {\n const emitReceipt = (event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) {\n return;\n }\n this.emit(hash, receipt);\n });\n };\n // In case it is already mined\n emitReceipt(event);\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [\"newHeads\"], (result) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n _stopEvent(event) {\n let tag = event.tag;\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n }\n else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n const subId = this._subIds[tag];\n if (!subId) {\n return;\n }\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) {\n return;\n }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [subId]);\n });\n }\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n yield (new Promise((resolve) => {\n this.websocket.onopen = function () {\n resolve(true);\n };\n this.websocket.onerror = function () {\n resolve(false);\n };\n }));\n }\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n });\n }\n}\n//# sourceMappingURL=websocket-provider.js.map","\"use strict\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nexport class AlchemyWebSocketProvider extends WebSocketProvider {\n constructor(network, apiKey) {\n const provider = new AlchemyProvider(network, apiKey);\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n static getWebSocketProvider(network, apiKey) {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n static getApiKey(apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt, url) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=alchemy-provider.js.map","import { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\nexport class AnkrProvider extends UrlJsonRpcProvider {\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getApiKey(apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n return apiKey;\n }\n static getUrl(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt, url) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n }\n}\n//# sourceMappingURL=ankr-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return host;\n }\n perform(method, params) {\n const _super = Object.create(null, {\n perform: { get: () => super.perform }\n });\n return __awaiter(this, void 0, void 0, function* () {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = yield _super.perform.call(this, \"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n return _super.perform.call(this, method, params);\n });\n }\n}\n//# sourceMappingURL=cloudflare-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { fetchJson } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BaseProvider } from \"./base-provider\";\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = hexValue(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\nfunction getResult(result) {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || typeof (result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n return result.result;\n}\nfunction getJsonResult(result) {\n // This response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n}\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag) {\n if (blockTag === \"pending\") {\n throw new Error(\"pending not supported\");\n }\n if (blockTag === \"latest\") {\n return blockTag;\n }\n return parseInt(blockTag.substring(2), 16);\n}\nfunction checkError(method, error, transaction) {\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\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) {\n data = \"0x\" + data.replace(/^.*0x/i, \"\");\n }\n if (isHexString(data)) {\n return data;\n }\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof (error.error.message) === \"string\") {\n message = error.error.message;\n }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n if (message.match(/execution failed due to an exception|execution reverted/)) {\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 throw error;\n}\nexport class EtherscanProvider extends BaseProvider {\n constructor(network, apiKey) {\n super(network);\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n getBaseUrl() {\n switch (this.network ? this.network.name : \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.baseUrl}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.baseUrl}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n fetch(module, params, post) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n const procFunc = (module === \"proxy\") ? getJsonResult : getResult;\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n const connection = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt, url) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n let payloadStr = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${key}=${payload[key]}`;\n }).join(\"&\");\n }\n const result = yield fetchJson(connection, payloadStr, procFunc || getJsonResult);\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n return result;\n });\n }\n detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.network;\n });\n }\n perform(method, params) {\n const _super = Object.create(null, {\n perform: { get: () => super.perform }\n });\n return __awaiter(this, void 0, void 0, function* () {\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\" : \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return yield this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return yield this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n case \"getLogs\": {\n const args = { action: \"getLogs\" };\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof (topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n const logs = yield this.fetch(\"logs\", args);\n // Cache txHash => blockHash\n let blocks = {};\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) {\n continue;\n }\n if (blocks[log.blockNumber] == null) {\n const block = yield this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n return logs;\n }\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((yield this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n default:\n break;\n }\n return _super.perform.call(this, method, params);\n });\n }\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n getHistory(addressOrName, startBlock, endBlock) {\n return __awaiter(this, void 0, void 0, function* () {\n const params = {\n action: \"txlist\",\n address: (yield this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0 : startBlock),\n endblock: ((endBlock == null) ? 99999999 : endBlock),\n sort: \"asc\"\n };\n const result = yield this.fetch(\"account\", params);\n return result.map((tx) => {\n [\"contractAddress\", \"to\"].forEach(function (key) {\n if (tx[key] == \"\") {\n delete tx[key];\n }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) {\n item.timestamp = parseInt(tx.timeStamp);\n }\n return item;\n });\n });\n }\n isCommunityResource() {\n return (this.apiKey == null);\n }\n}\n//# sourceMappingURL=etherscan-provider.js.map","\"use strict\";\nexport function shuffled(array) {\n array = array.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n return array;\n}\n//# sourceMappingURL=shuffle.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction now() { return (new Date()).getTime(); }\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks) {\n let result = null;\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n // Null! We do not know our network; bail.\n if (network == null) {\n return null;\n }\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n }\n else {\n result = network;\n }\n }\n return result;\n}\nfunction median(values, maxDelta) {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n return (a + b) / 2;\n}\nfunction serialize(value) {\n if (value === null) {\n return \"null\";\n }\n else if (typeof (value) === \"number\" || typeof (value) === \"boolean\") {\n return JSON.stringify(value);\n }\n else if (typeof (value) === \"string\") {\n return value;\n }\n else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n }\n else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n }\n else if (typeof (value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof (v) === \"function\") {\n v = \"[function]\";\n }\n else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n throw new Error(\"unknown value type: \" + typeof (value));\n}\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n;\nfunction stall(duration) {\n let cancel = null;\n let timer = null;\n let promise = (new Promise((resolve) => {\n cancel = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n };\n timer = setTimeout(cancel, duration);\n }));\n const wait = (func) => {\n promise = promise.then(func);\n return promise;\n };\n function getPromise() {\n return promise;\n }\n return { cancel, getPromise, wait };\n}\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n;\nfunction exposeDebugConfig(config, now) {\n const result = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) {\n result.start = config.start;\n }\n if (now) {\n result.duration = (now - config.start);\n }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n }\n else {\n result.result = config.result || null;\n }\n }\n return result;\n}\nfunction normalizedTally(normalize, quorum) {\n return function (configs) {\n // Count the votes for each result\n const tally = {};\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) {\n tally[value] = { count: 0, result: c.result };\n }\n tally[value].count++;\n });\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n // No quroum\n return undefined;\n };\n}\nfunction getProcessFunc(provider, method, params) {\n let normalize = serialize;\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function (configs) {\n const values = configs.map((c) => c.result);\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) {\n return undefined;\n }\n blockNumber = Math.ceil(blockNumber);\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) {\n blockNumber++;\n }\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n return provider._highestBlockNumber;\n };\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function (configs) {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n };\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function (configs) {\n return median(configs.map((c) => c.result));\n };\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function (tx) {\n if (tx == null) {\n return null;\n }\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n };\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n }\n else {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n return serialize(block);\n };\n }\n break;\n default:\n throw new Error(\"unknown method: \" + method);\n }\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n}\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nfunction waitForSync(config, blockNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n const provider = (config.provider);\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function () {\n // We are synced\n if (provider.blockNumber >= blockNumber) {\n return resolve(provider);\n }\n // We're done; just quit\n if (config.cancelled) {\n return resolve(null);\n }\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n });\n}\nfunction getRunner(config, currentBlockNumber, method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n let provider = config.provider;\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if (provider.getEtherPrice) {\n return provider.getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\" : \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider.getLogs(filter);\n }\n }\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n });\n}\nexport class FallbackProvider extends BaseProvider {\n constructor(providers, quorum) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n const providerConfigs = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000 : 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n const config = shallowCopy(configOrProvider);\n if (config.priority == null) {\n config.priority = 1;\n }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000 : 750;\n }\n if (config.weight == null) {\n config.weight = 1;\n }\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${index}].weight`, weight);\n }\n return Object.freeze(config);\n });\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n if (quorum == null) {\n quorum = total / 2;\n }\n else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n // Are all providers' networks are known\n let networkOrReady = checkNetworks(providerConfigs.map((c) => (c.provider).network));\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n super(networkOrReady);\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n this._highestBlockNumber = -1;\n }\n detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n const networks = yield Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n });\n }\n perform(method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results = yield Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof (result) === \"string\") {\n return result;\n }\n }\n // They were all an error; pick the first error\n throw results[0];\n }\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n yield this.getBlockNumber();\n }\n const processFunc = getProcessFunc(this, method, params);\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n const currentBlockNumber = this._highestBlockNumber;\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n const rid = nextRid++;\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n }, (error) => {\n config.done = true;\n config.error = error;\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n inflightWeight += config.weight;\n }\n // Wait for anything meaningful to finish or stall out\n const waiting = [];\n configs.forEach((c) => {\n if (c.done || !c.runner) {\n return;\n }\n waiting.push(c.runner);\n if (c.staller) {\n waiting.push(c.staller.getPromise());\n }\n });\n if (waiting.length) {\n yield Promise.race(waiting);\n }\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) {\n yield stall(100).getPromise();\n }\n first = false;\n }\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) {\n return accum;\n }\n const code = (c.error).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) {\n accum[code] = { error: c.error, weight: 0 };\n }\n accum[code].weight += c.weight;\n }\n return accum;\n }, ({}));\n Object.keys(errors).forEach((errorCode) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) {\n return;\n }\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n const e = (tally.error);\n const props = {};\n ForwardProperties.forEach((name) => {\n if (e[name] == null) {\n return;\n }\n props[name] = e[name];\n });\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) {\n break;\n }\n }\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n });\n }\n}\n//# sourceMappingURL=fallback-provider.js.map","\"use strict\";\nconst IpcProvider = null;\nexport { IpcProvider };\n//# sourceMappingURL=ipc-provider.js.map","\"use strict\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nexport class InfuraWebSocketProvider extends WebSocketProvider {\n constructor(network, apiKey) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\nexport class InfuraProvider extends UrlJsonRpcProvider {\n static getWebSocketProvider(network, apiKey) {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n static getApiKey(apiKey) {\n const apiKeyObj = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n if (apiKey == null) {\n return apiKeyObj;\n }\n if (typeof (apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n }\n else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof (apiKey.projectId) === \"string\"), \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof (apiKey.projectSecret) === \"string\"), \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n }\n else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n apiKeyObj.apiKey = apiKeyObj.projectId;\n return apiKeyObj;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network ? network.name : \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n const connection = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt, url) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=infura-provider.js.map","import { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n// Experimental\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n send(method, params) {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch == null) {\n this._pendingBatch = [];\n }\n const inflightRequest = { request, resolve: null, reject: null };\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n this._pendingBatch.push(inflightRequest);\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest.reject(error);\n }\n else {\n inflightRequest.resolve(payload.result);\n }\n });\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n }, 10);\n }\n return promise;\n }\n}\n//# sourceMappingURL=json-rpc-batch-provider.js.map","/* istanbul ignore file */\n\"use strict\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n static getUrl(network, apiKey) {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n//# sourceMappingURL=nodesmith-provider.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\nexport class PocketProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n const apiKeyObj = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n }\n else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n }\n else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n }\n else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n }\n else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n return apiKeyObj;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n const url = `https:/\\/${host}/v1/lb/${apiKey.applicationId}`;\n const connection = { headers: {}, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey;\n }\n return connection;\n }\n isCommunityResource() {\n return (this.applicationId === defaultApplicationId);\n }\n}\n//# sourceMappingURL=pocket-provider.js.map","\"use strict\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { BaseProvider, Resolver } from \"./base-provider\";\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network, options) {\n if (network == null) {\n network = \"homestead\";\n }\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof (network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\":\n case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\":\n case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n return n._defaultProvider({\n FallbackProvider,\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n IpcProvider,\n }, options);\n}\n////////////////////////\n// Exports\nexport { \n// Abstract Providers (or Abstract-ish)\nProvider, BaseProvider, Resolver, UrlJsonRpcProvider, \n///////////////////////\n// Concrete Providers\nFallbackProvider, AlchemyProvider, AlchemyWebSocketProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, JsonRpcBatchProvider, NodesmithProvider, PocketProvider, StaticJsonRpcProvider, Web3Provider, WebSocketProvider, IpcProvider, \n///////////////////////\n// Signer\nJsonRpcSigner, \n///////////////////////\n// Functions\ngetDefaultProvider, getNetwork, isCommunityResource, isCommunityResourcable, showThrottleMessage, \n///////////////////////\n// Objects\nFormatter };\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"ethers/5.7.2\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport * as constants from \"@ethersproject/constants\";\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\nimport * as utils from \"./utils\";\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n////////////////////////\n// Compile-Time Constants\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n////////////////////////\n// Exports\nexport { Signer, Wallet, VoidSigner, getDefaultProvider, providers, BaseContract, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, \n////////////////////////\n// Compile-Time Constants\nversion, Wordlist };\n//# sourceMappingURL=ethers.js.map","\"use strict\";\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\nimport * as ethers from \"./ethers\";\ntry {\n const anyGlobal = window;\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n}\ncatch (error) { }\nexport { ethers };\nexport { Signer, Wallet, VoidSigner, getDefaultProvider, providers, BaseContract, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, \n////////////////////////\n// Compile-Time Constants\nversion, Wordlist } from \"./ethers\";\n//# sourceMappingURL=index.js.map","\"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","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\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; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n"],"names":["Object","defineProperty","exports","value","GELATO_STOP_LIMIT_ORDERS_MODULE_ADDRESS","GENERIC_GAS_LIMIT_ORDER_EXECUTION","NATIVE_WRAPPED_TOKEN_ADDRESS","NATIVE_TOKEN_NAME","NATIVE_WRAPPED_TOKEN_TICKER","NATIVE_TOKEN_TICKER","GELATO_LIMIT_ORDERS_ERC20_ORDER_ROUTER","GELATO_LIMIT_ORDERS_MODULE_FLASHBOTS_ADDRESS","GELATO_LIMIT_ORDERS_MODULE_ADDRESS","GELATO_LIMIT_ORDERS_ADDRESS","SUBGRAPH_URL","OLD_SUBGRAPH_URL","NETWORK_STOP_LIMIT_HANDLERS","NETWORK_HANDLERS","NETWORK_NAME","HANDLERS_ADDRESSES","LIMIT_ORDER_SLIPPAGE","STOP_LIMIT_SLIPPAGE_BPS","BPS_GELATO_FEE","CHAIN_ID","MAX_LIFETIME_IN_SECONDS","SLIPPAGE_BPS","ETH_ADDRESS","MAINNET","ROPSTEN","GOERLI","CRONOS","BSC","MATIC","FANTOM","AVAX","ERC20OrderRouter__factory","ethers_1","_abi","inputs","internalType","name","type","stateMutability","anonymous","indexed","outputs","static","utils","Interface","address","signerOrProvider","Contract","abi","ERC20__factory","constant","payable","GelatoLimitOrders__factory","Multicall__factory","components","ERC20__factory_1","enumerable","get","ERC20OrderRouter__factory_1","GelatoLimitOrders__factory_1","Multicall__factory_1","constants","isEthereumChain","GelatoStopLimitOrders","isValidChainIdAndHandler","GelatoLimitOrders","tslib_1","limit_orders_1","stoplimit_orders_1","utils_1","__exportStar","__importStar","isFlashbotsCompatibleChainId","abstract_provider_1","abstract_signer_1","constants_1","types_1","queries_1","chainId","handler","includes","constructor","isFlashbotsProtected","subgraphUrl","_a","Error","this","_chainId","_gelatoFeeBPS","_slippageBPS","_subgraphUrl","_signer","Signer","isSigner","undefined","_provider","Provider","isProvider","provider","_gelatoLimitOrders","connect","createInterface","_moduleAddress","_handler","_handlerAddress","toLowerCase","_isFlashbotsProtected","_abiEncoder","AbiCoder","_erc20OrderRouter","gelatoFeeBPS","slippageBPS","signer","url","handlerAddress","moduleAddress","contract","erc20OrderRouter","encodeLimitOrderSubmission","inputToken","outputToken","inputAmount","minReturn","owner","checkAllowance","__awaiter","payload","encodeLimitOrderSubmissionWithSecret","minReturnToBeParsed","fullSecret","hexlify","randomBytes","replace","privateKey","secret","witness","Wallet","getFeeAndSlippageAdjustedMinReturn","_encodeSubmitData","encodedData","encode","order","id","_getKey","module","data","toString","adjustedMinReturn","inputData","submitLimitOrder","overrides","getAddress","txData","sendTransaction","assign","to","BigNumber","from","encodeLimitOrderCancellation","checkIsActiveOrder","isActiveOrder","interface","encodeFunctionData","Zero","cancelLimitOrder","_order","subgraphOrder","Promise","race","getOrder","resolve","setTimeout","then","status","cancelledTxHash","executedTxHash","error","cancelOrder","gasLimit","approveTokenAmount","amount","approve","existOrder","getExchangeRate","inputValue","inputDecimals","outputValue","outputDecimals","invert","factor","pow","mul","div","outputAmount","extraSlippageBPS","Number","isInteger","gelatoFee","gte","slippage","sub","getAdjustedMinReturn","fees","add","getExecutionPrice","isInverted","orderId","queryOrder","getOrders","includeOrdersWithNullHandler","queryOrders","map","filter","getOpenOrders","queryOpenOrders","getPastOrders","queryPastOrders","getExecutedOrders","queryExecutedOrders","getCancelledOrders","queryCancelledOrders","keccak256","isNetworkGasToken","encodedEthOrder","encodeEthOrder","allowance","lt","GelatoBase","isETHOrWETH","tokenAddress","chainID","WETH_ADDRESS","_gelatoCore","abiEncoder","cancelStopLimitOrder","maxReturn","core_1","stoplimit_1","sotplossHandlers","super","submitStopLimitOrder","encodeStopLimitOrderSubmission","encodeStopLimitOrderSubmissionWithSecret","maxReturnToBeParsed","getOpenStopLimitOrders","queryStopLimitOrders","getStopLimitOrders","getExecutedStopLimitOrders","queryStopLimitExecutedOrders","getCancelledStopLimitOrders","queryStopLimitCancelledOrders","getPastStopLimitOrders","isTransactionCostDependentChain","queries","token","GET_ALL_STOP_LIMIT_ORDERS_BY_OWNER","GET_ALL_CANCELLED_ORDERS_BY_OWNER","GET_ALL_EXECUTED_ORDERS_BY_OWNER","GET_ALL_PAST_ORDERS_BY_OWNER","GET_ALL_OPEN_ORDERS_BY_OWNER","GET_ALL_ORDERS_BY_OWNER","GET_ORDER_BY_ID","graphql_request_1","gql","constants_2","dataFromOldSubgraph","request","orders","dataFromNewSubgraph","allOrders","_getUniqueOrdersWithExpiry","pop","Map","values","sort","a","b","parseFloat","updatedAt","stopLimitModule","isExpired","Date","now","parseInt","createdAt","queryOpenStopLimitOrders","console","__importDefault","mod","__esModule","extract_files_1","form_data_1","isExtractableFileEnhanced","isExtractableFile","pipe","query","variables","operationName","extractFiles","clone","files","size","Array","isArray","JSON","stringify","reduce","accu","currentQuery","index","push","form","FormData","default","append","i","forEach","paths","file","__assign","t","s","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__createBinding","create","o","m","k","k2","__setModuleDefault","v","result","thisArg","_arguments","P","generator","reject","fulfilled","step","next","e","rejected","done","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","op","TypeError","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","batchRequests","rawRequest","GraphQLClient","ClientError","cross_fetch_1","CrossFetch","printer_1","createRequestBody_1","resolveHeaders","headers","oHeaders","Headers","HeadersInstanceToPlainObject","queryCleanner","str","trim","post","fetch","fetchOptions","_b","method","queryParams","search","encodeURIComponent","join","buildGetQueryParams","options","requestHeaders","_c","makeRequest","document","_d","_e","resolveRequestDocument","documents","setHeaders","setHeader","key","setEndpoint","fetcher","isBathchingQuery","response","successfullyReceivedData","headers_1","status_1","errorResult","toUpperCase","getResult","some","ok","errors","contentType","startsWith","json","text","operationDefinitions","definitions","definition","kind","print","chunks","_i","accumulator","chunk","__extends","extendStatics","d","setPrototypeOf","__proto__","String","__","_super","_this","message","extractMessage","captureStackTrace","root","checkInt","checkInts","arrayish","coerceArray","arg","copy","buffer","ArrayBuffer","isView","slice","Uint8Array","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","convertUtf8","toBytes","encodeURI","c","charCodeAt","substr","fromBytes","bytes","fromCharCode","convertHex","Hex","numberOfRounds","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","tt","rconpointer","r","encrypt","plaintext","decrypt","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","j","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","hex","utf8","padding","pkcs7","pad","padder","strip","_arrayTest","hashMessage","pbkdf2","password","salt","iterations","keylen","hashAlgorithm","hLen","l","DK","block1","T","U","Math","ceil","destPos","len","logger","Wordlist","locale","checkAbstract","split","mnemonic","words","wordlist","word","getWord","getWordIndex","lang","loadWords","substring","check","langEn","register","wordlists","en","N","MasterSecret","HardenedBit","getUpperMask","bits","bytes32","base58check","sha2","getWordlist","throwArgumentError","_constructorGuard","defaultPath","HDNode","constructorGuard","publicKey","parentFingerprint","chainCode","depth","mnemonicOrPath","signingKey","compressedPublicKey","path","extendedKey","neuter","_derive","I","IL","IR","ki","Ki","_addPoint","srcMnemonic","freeze","phrase","fingerprint","derivePath","shift","component","match","seed","seedArray","entropyToMnemonic","mnemonicToEntropy","_fromSeed","mnemonicToSeed","checkNormalize","entropy","offset","normalize","bit","entropyBits","checksumMask","indices","remainingBits","checksumBits","checksum","isValidMnemonic","getAccountPath","anyGlobal","self","window","getGlobal","crypto","msCrypto","getRandomValues","warn","throwError","operation","looseArrayify","hexString","zpad","getPassword","searchPath","object","currentChild","comps","matchingChild","uuidV4","hasMnemonic","KeystoreAccount","isKeystoreAccount","_isKeystoreAccount","_getAccount","aesCtr","_decrypt","mnemonicKey","account","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","node","fromMnemonic","code","argument","pbkdf2Sync","passwordBytes","count","dkLen","prfFunc","_computeKdfKey","pbkdf2Func","scryptFunc","progressCallback","kdf","prf","CrowdsaleAccount","isCrowdsaleAccount","_isCrowdsaleAccount","parse","ethaddr","encseed","encryptedSeed","aesCbc","seedHex","seedHexBytes","isCrowdsaleWallet","isKeystoreWallet","version","getJsonWalletAddress","decryptJsonWallet","scrypt","decryptJsonWalletSync","curve","_mnemonic","_signingKey","signTransaction","transaction","tx","signature","signDigest","signMessage","_signTypedData","domain","types","populated","resolveName","client","uuidRandom","uuid","derivedKey","macPrefix","mac","cipher","cipherparams","kdfparams","dklen","timestamp","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","extraEntropy","verifyMessage","verifyTypedData","EtherSymbol","WS","WebSocket","NextId","WebSocketProvider","network","_pollingInterval","_wsReady","connection","detectNetwork","websocket","onopen","keys","_requests","send","onmessage","messageEvent","callback","emit","action","_subs","params","subscription","processFunc","fauxPoll","setInterval","unref","_websocket","_detectNetwork","pollingInterval","resetEventsBlock","blockNumber","poll","polling","rid","jsonrpc","_subscribe","tag","param","subIdPromise","_subIds","all","subId","_startEvent","event","number","toNumber","_emitted","_getFilter","removed","formatter","filterLog","emitReceipt","hash","getTransactionReceipt","receipt","_events","log","_stopEvent","listenerCount","destroy","readyState","onerror","close","defaultApiKey","AlchemyWebSocketProvider","apiKey","AlchemyProvider","isCommunityResource","host","allowGzip","throttleCallback","attempt","getHost","AnkrProvider","projectSecret","user","CloudflareProvider","perform","blockTag","getTransactionPostData","gasPrice","maxFeePerGs","maxPriorityFeePerGas","nonce","storageKeys","throttleRetry","getJsonResult","checkLogTag","checkError","responseText","EtherscanProvider","getBaseUrl","getUrl","accum","baseUrl","getPostUrl","getPostData","apikey","procFunc","throttleSlotInterval","payloadStr","position","signedTransaction","catch","boolean","includeTransactions","txhash","transactionHash","postData","args","fromBlock","toBlock","topics","topic0","logs","blocks","blockHash","getBlock","ethusd","getHistory","addressOrName","startBlock","endBlock","startblock","endblock","creates","contractAddress","item","transactionResponse","timeStamp","shuffled","array","floor","random","tmp","getTime","checkNetworks","networks","ensAddress","median","maxDelta","middle","abs","serialize","nextRid","stall","duration","cancel","timer","promise","clearTimeout","getPromise","wait","func","ForwardErrors","ForwardProperties","exposeDebugConfig","config","weight","start","getProcessFunc","configs","_highestBlockNumber","confirmations","transactions","quorum","tally","normalizedTally","waitForSync","cancelled","oncePoll","getRunner","currentBlockNumber","getEtherPrice","getStorageAt","getLogs","FallbackProvider","providers","providerConfigs","configOrProvider","stallTimeout","priority","total","networkOrReady","getNetwork","results","getBlockNumber","first","t0","inflightWeight","runner","staller","backend","waiting","errorCode","props","reason","IpcProvider","defaultProjectId","InfuraWebSocketProvider","InfuraProvider","projectId","apiKeyObj","assertArgument","JsonRpcBatchProvider","_nextId","_pendingBatch","inflightRequest","_pendingBatchAggregator","batch","inflight","NodesmithProvider","defaultApplicationId","PocketProvider","applicationId","loadBalancer","applicationSecretKey","getDefaultProvider","_defaultProvider","JsonRpcProvider","Web3Provider","createTable","lo","pair","createRangeTable","hi","h","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","nameprep","codes","codesTableB2","codepoint","_nameprepTableB2","_ethers","MAX_VALUE","SHA256","K","Uint32Array","h0","h1","h2","h3","h4","h5","h6","h7","w","off","u","t1","t2","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","innerLen","inner","outerKey","dk","incrementCounter","concat","blockmix_salsa8","BY","Yi","x","_X","arraycopy","blockxor","salsa20_8","R","B","D","src","srcPos","dest","checkBufferish","ensureInteger","_scrypt","XY","V","totalOps","i1","Bi","currentOp","lastPercent10","stop","state","i0","limit","nextTick","setImmediate","incrementalSMix","steps","percent10","lib","lastProgress","progress","syncScrypt","for","_typeof","obj","inspect","formatValue","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","min","remaining","items","formatArray","getObjectTag","properties","formatObject","formatObjectValue","defineInspect","classObject","fn","toJSON","condition","Boolean","invariant","isNode","maybeNode","Location","startToken","endToken","source","end","Token","line","column","prev","QueryDocumentKeys","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","ast","visitorKeys","stack","inArray","edits","parent","ancestors","newRoot","isEdited","_i2","_Object$keys2","editOffset","ii","editKey","editValue","splice","_visitorKeys$node$kin","visitFn","visit","printDocASTReducer","varDefs","wrap","variableDefinitions","directives","selectionSet","_ref","variable","defaultValue","_ref2","selections","_ref3","alias","prefix","argsLine","indent","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","hasTrailingSlash","printAsMultipleLines","printBlockString","_ref11","_ref12","_ref13","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","addDescription","_ref20","operationTypes","_ref21","_ref22","_ref23","interfaces","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","repeatable","locations","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","maybeArray","_maybeArray$filter$jo","separator","maybeString","isMultiline","__decorate","decorators","target","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","descriptor","context","access","addInitializer","init","unshift","__runInitializers","useValue","__propKey","__setFunctionName","configurable","__metadata","metadataKey","metadataValue","metadata","writable","__values","__read","ar","__spread","__spreadArrays","il","jl","__spreadArray","pack","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__classPrivateFieldGet","receiver","has","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","env","async","dispose","asyncDispose","_SuppressedError","SuppressedError","suppressed","__disposeResources","fail","hasError","rec"],"sourceRoot":""}