{"abi":[{"type":"constructor","inputs":[{"name":"_endpoint","type":"address","internalType":"address"},{"name":"_oft","type":"address","internalType":"address"},{"name":"_coreIndexId","type":"uint64","internalType":"uint64"},{"name":"_assetDecimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"CORE_WRITER_VERSION","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE_CHAIN_ID_MAINNET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HYPE_CHAIN_ID_TESTNET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HYPE_INDEX_MAINNET","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HYPE_INDEX_TESTNET","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"SPOT_SEND_ACTION_ID","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"SPOT_SEND_HEADER","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"balanceOfHyperCore","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"endpoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"fundAddressOnHyperCore","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_executor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getErrorPayload","inputs":[{"name":"_err","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"getHypeAsset","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IHyperAsset","components":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}]}],"stateMutability":"view"},{"type":"function","name":"getOFTAsset","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IHyperAsset","components":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}]}],"stateMutability":"view"},{"type":"function","name":"hypeAsset","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"hypeIndexByChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"lzCompose","inputs":[{"name":"_oft","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_executor","type":"address","internalType":"address"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IOFT"}],"stateMutability":"view"},{"type":"function","name":"oftAsset","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"quoteHyperCoreAmount","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_isOFT","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IHyperAssetAmount","components":[{"name":"evm","type":"uint256","internalType":"uint256"},{"name":"dust","type":"uint256","internalType":"uint256"},{"name":"core","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"refundERC20","inputs":[{"name":"_refundAddress","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"refundNativeTokens","inputs":[{"name":"_refundAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendAssetToHyperCore","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_amountLD","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"validate_addresses_or_refund","inputs":[{"name":"_maybeReceiver","type":"bytes","internalType":"bytes"},{"name":"_senderBytes32","type":"bytes32","internalType":"bytes32"},{"name":"_amountLD","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"validate_message","inputs":[{"name":"_composeMessage","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"event","name":"ErrorERC20_Refund","inputs":[{"name":"refundTo","type":"address","indexed":false,"internalType":"address"},{"name":"refundAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ErrorHYPE_Refund","inputs":[{"name":"refundTo","type":"address","indexed":false,"internalType":"address"},{"name":"refundAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ErrorMessage","inputs":[{"name":"reason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ErrorSpot_FailedToSend","inputs":[{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"tokenId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"errorMessage","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ExcessHYPE_Refund","inputs":[{"name":"refundTo","type":"address","indexed":false,"internalType":"address"},{"name":"refundAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ErrorMsg","inputs":[{"name":"errorMessage","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"HyperLiquidComposerCore_SpotBalanceRead_Failed","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"tokenId","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HyperLiquidComposer_FailedToRefund_HYPE","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HyperLiquidComposer_FailedToSend_HYPE","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HyperLiquidComposer_InvalidArgument_EndpointShouldNotBeZeroAddress","inputs":[{"name":"receivedEndpointAddress","type":"address","internalType":"address"}]},{"type":"error","name":"HyperLiquidComposer_InvalidCall_NotComposer","inputs":[{"name":"notComposerAddress","type":"address","internalType":"address"}]},{"type":"error","name":"HyperLiquidComposer_InvalidCall_NotEndpoint","inputs":[{"name":"notEndpointAddress","type":"address","internalType":"address"},{"name":"expectedEndpointAddress","type":"address","internalType":"address"}]},{"type":"error","name":"HyperLiquidComposer_InvalidCall_NotOFT","inputs":[{"name":"internalOFTAddress","type":"address","internalType":"address"},{"name":"receivedOFTAddress","type":"address","internalType":"address"}]},{"type":"error","name":"HyperLiquidComposer_InvalidComposeMessage","inputs":[{"name":"errorMessage","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60e060405234801562000010575f80fd5b506040516200310d3803806200310d83398101604081905262000033916200028a565b83836001600160a01b0382166200006c5760405163fb82c1f160e01b81526001600160a01b038316600482015260240160405180910390fd5b6001600160a01b03808316608052811660a081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015620000bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000e19190620002f9565b6001600160a01b031660c05250505f60208190527f2802b8ca0a4d9948ac89ce9ba15f4015f0f68c52469c4df23bbaf374f1d4604080546001600160401b0319908116610451179091556103e79091527f332eac5de6beffe8ee7761a0342c75594c3acb5fdde0a2555227e56aa65d4141805490911660961790556040805160608101909152806200017c6001600160401b03851662000257565b6001600160a01b0390811682526001600160401b0394851660208084019190915260079490940b604092830152825160018054858701519284166001600160e01b031991821617600160a01b93891684021790915593830151600280546001600160401b031990811692891692909217905583516060810185527322222222222222222222222222222222222222228152465f90815280885285902054909716958701869052600a938701849052955160038054919093169416939093179390920292909217905560048054909216179055506200033c9050565b5f62000268826001609d1b6200031c565b92915050565b80516001600160a01b038116811462000285575f80fd5b919050565b5f805f80608085870312156200029e575f80fd5b620002a9856200026e565b9350620002b9602086016200026e565b60408601519093506001600160401b0381168114620002d6575f80fd5b8092505060608501518060070b8114620002ee575f80fd5b939692955090935050565b5f602082840312156200030a575f80fd5b62000315826200026e565b9392505050565b808201808211156200026857634e487b7160e01b5f52601160045260245ffd5b60805160a05160c051612d75620003985f395f8181610791015281816111b30152818161139701526118e401525f818161058401528181610b8e0152610c0501525f818161043201528181610aca0152610b420152612d755ff3fe6080604052600436106101a7575f3560e01c80638483bc00116100e7578063d0a1026011610087578063ebaeefd611610062578063ebaeefd6146106be578063f6e6b240146106dd578063f9716faf14610735578063fc0c546a14610780575f80fd5b8063d0a102601461066d578063d9acf0ec14610680578063da001a291461069f575f80fd5b8063aae12e46116100c2578063aae12e46146105a6578063ba8726791461062f578063bc963bc714610644578063d00b1ad514610659575f80fd5b80638483bc00146105305780639180b744146105455780639b5215f614610573575f80fd5b80634bd162df116101525780635e280f111161012d5780635e280f1114610421578063765008a1146104545780637ecd9ac3146104ea57806381e8dcb414610511575f80fd5b80634bd162df1461037a5780635241b496146103c85780635b9a23731461040c575f80fd5b806320d9af9a1161018257806320d9af9a1461024157806322dbe29c146102645780632d0e315c146102ac575f80fd5b806303be2050146101b25780630d1995e0146101e75780631f8164d91461022d575f80fd5b366101ae57005b5f80fd5b3480156101bd575f80fd5b506101d16101cc36600461236f565b6107b3565b6040516101de91906123fb565b60405180910390f35b3480156101f2575f80fd5b506101d16040518060400160405280600381526020017d06000000000000000000000000000000000000000000000000000000000081525081565b348015610238575f80fd5b506101d16107c8565b34801561024c575f80fd5b506102566103e681565b6040519081526020016101de565b34801561026f575f80fd5b506101d16040518060400160405280600181526020017f010000000000000000000000000000000000000000000000000000000000000081525081565b3480156102b7575f80fd5b50610335604080516060810182525f8082526020820181905291810191909152506040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260025460070b9181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015160070b908201526060016101de565b348015610385575f80fd5b506103af61039436600461240d565b5f6020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101de565b3480156103d3575f80fd5b506103e76103e23660046124d2565b61084c565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b348015610417575f80fd5b506102566103e781565b34801561042c575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b34801561045f575f80fd5b506001546002546104ac9173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845267ffffffffffffffff909216602084015260070b908201526060016101de565b3480156104f5575f80fd5b506103e773333333333333333333333333333333333333333381565b34801561051c575f80fd5b506103af61052b366004612594565b610968565b61054361053e3660046125cb565b610973565b005b348015610550575f80fd5b5061056461055f36600461236f565b610a90565b6040516101de939291906125ed565b34801561057e575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b1575f80fd5b50610335604080516060810182525f8082526020820181905291810191909152506040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260045460070b9181019190915290565b34801561063a575f80fd5b506103e761080181565b34801561064f575f80fd5b506103af61045181565b348015610664575f80fd5b506103af609681565b61054361067b36600461260b565b610ac8565b34801561068b575f80fd5b5061054361069a3660046126a5565b611142565b3480156106aa575f80fd5b506105436106b93660046126cf565b6113c4565b3480156106c9575f80fd5b506105436106d83660046126a5565b611866565b3480156106e8575f80fd5b506003546004546104ac9173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b348015610740575f80fd5b5061075461074f36600461270e565b61190b565b6040805182518152602080840151908201529181015167ffffffffffffffff16908201526060016101de565b34801561078b575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b60606107bf8383611a41565b90505b92915050565b604080518082018252600181527f010000000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600381527d06000000000000000000000000000000000000000000000000000000000081830152925161083a939101612735565b60405160208183030381529060405281565b5f8061085784611a8b565b90505f61086386611ab6565b905073ffffffffffffffffffffffffffffffffffffffff811661095f5785516040515f917f09b3473100000000000000000000000000000000000000000000000000000000916108b7918a91602401612763565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050610923818487611b19565b6040517f4f95203300000000000000000000000000000000000000000000000000000000815260040161095691906123fb565b60405180910390fd5b95945050505050565b5f6107bf8383611b74565b3330146109ae576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f341180156109d2575073ffffffffffffffffffffffffffffffffffffffff811615155b15610a8d575f8173ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610a2d576040519150601f19603f3d011682016040523d82523d5f602084013e610a32565b606091505b5050905080610a8b576040517fc8ee485e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152346024820152604401610956565b505b50565b5f8060605f610a9f8686611c88565b90505f610aac8787611ca0565b90505f610ab98888611caf565b92989197509195509350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610b75576040517fefa9309d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152336024820152604401610956565b8673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f86fee0c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015288166024820152604401610956565b5f805f60603073ffffffffffffffffffffffffffffffffffffffff16639180b7448a8a6040518363ffffffff1660e01b8152600401610c7a929190612784565b5f60405180830381865afa925050508015610cb657506040513d5f823e601f3d908101601f19168201604052610cb391908101906127f4565b60015b610d1c573d808015610ce3576040519150601f19603f3d011682016040523d82523d5f602084013e610ce8565b606091505b50806040517ed4895a00000000000000000000000000000000000000000000000000000000815260040161095691906123fb565b919450925090506040517f5241b4960000000000000000000000000000000000000000000000000000000081523090635241b49690610d6390849086908890600401612840565b602060405180830381865afa925050508015610d9c575060408051601f3d908101601f19168201909252610d9991810190612864565b60015b610e1e573d808015610dc9576040519150601f19603f3d011682016040523d82523d5f602084013e610dce565b606091505b505f610dda828a611cbe565b90507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b981604051610e0b91906123fb565b60405180910390a1505050505050611139565b93503415610fa0576040517fda001a2900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015234602483015288166044820152309063da001a29906064015f604051808303815f87803b158015610e98575f80fd5b505af1925050508015610ea9575060015b610fa0573d808015610ed6576040519150601f19603f3d011682016040523d82523d5f602084013e610edb565b606091505b506040517f8483bc0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201523090638483bc009034906024015f604051808303818588803b158015610f42575f80fd5b505af1158015610f54573d5f803e3d5ffd5b50505050505f610f64828a611cbe565b90507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b981604051610f9591906123fb565b60405180910390a150505b6040517fd9acf0ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052309063d9acf0ec906044015f604051808303815f87803b15801561100b575f80fd5b505af192505050801561101c575060015b611134573d808015611049576040519150601f19603f3d011682016040523d82523d5f602084013e61104e565b606091505b506040517febaeefd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101859052309063ebaeefd6906044015f604051808303815f87803b1580156110ba575f80fd5b505af11580156110cc573d5f803e3d5ffd5b50506001546040517f775ce5b47736b2186798494ee89239e4c0341b516c05bf613205d83ffbfffdc6935061112a9250889174010000000000000000000000000000000000000000900467ffffffffffffffff16908890869061287f565b60405180910390a1505b505050505b50505050505050565b33301461117d576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f61118982600161190b565b80519091501561136d5760015481516111dd9173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811692911690612024565b600154604082810151815173ffffffffffffffffffffffffffffffffffffffff871660208201527401000000000000000000000000000000000000000090930467ffffffffffffffff908116928401929092521660608201525f9060800160408051601f198184030181528282018252600183527f010000000000000000000000000000000000000000000000000000000000000060208481019190915282518084018452600381527d0600000000000000000000000000000000000000000000000000000000008183015292519194505f936112be939092909101612735565b60408051601f19818403018152908290526112dd918490602001612735565b60408051601f19818403018152908290527f17938e130000000000000000000000000000000000000000000000000000000082529150733333333333333333333333333333333333333333906317938e139061133d9084906004016123fb565b5f604051808303815f87803b158015611354575f80fd5b505af1158015611366573d5f803e3d5ffd5b5050505050505b6020810151156113bf5760208101516113bf9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908590612024565b505050565b3330146113ff576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f61140a835f61190b565b60035481516040519293505f9273ffffffffffffffffffffffffffffffffffffffff909216918381818185875af1925050503d805f8114611466576040519150601f19603f3d011682016040523d82523d5f602084013e61146b565b606091505b50509050806114a9576040517fb7e54a0700000000000000000000000000000000000000000000000000000000815260048101859052602401610956565b600354604083810151815173ffffffffffffffffffffffffffffffffffffffff891660208201527401000000000000000000000000000000000000000090930467ffffffffffffffff908116928401929092521660608201525f9060800160408051601f198184030181528282018252600183527f010000000000000000000000000000000000000000000000000000000000000060208481019190915282518084018452600381527d0600000000000000000000000000000000000000000000000000000000008183015292519194505f9361158a939092909101612735565b60408051601f19818403018152908290526115a9918490602001612735565b60408051601f19818403018152908290527f17938e130000000000000000000000000000000000000000000000000000000082529150733333333333333333333333333333333333333333906317938e13906116099084906004016123fb565b5f604051808303815f87803b158015611620575f80fd5b505af1158015611632573d5f803e3d5ffd5b505050506020840151156111395760208401516040517f8483bc0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891660048201523091638483bc00916024015f604051808303818588803b1580156116a9575f80fd5b505af1935050505080156116bb575060015b61180857602084015160405173ffffffffffffffffffffffffffffffffffffffff871691905f81818185875af1925050503d805f8114611716576040519150601f19603f3d011682016040523d82523d5f602084013e61171b565b606091505b50909350508215611781576020808501516040805173ffffffffffffffffffffffffffffffffffffffff89168152928301919091527fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa1791015b60405180910390a1611139565b60208401516040513291905f81818185875af1925050503d805f81146117c2576040519150601f19603f3d011682016040523d82523d5f602084013e6117c7565b606091505b505060208581015160408051328152928301919091529194507fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa179101611774565b6020808501516040805173ffffffffffffffffffffffffffffffffffffffff8b168152928301919091527fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa17910160405180910390a150505050505050565b3330146118a1576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f811180156118c5575073ffffffffffffffffffffffffffffffffffffffff821615155b15610a8b57610a8b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383612024565b61193660405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b604080516060810182525f808252602082018190529181018290529083156119c9576040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260025460070b938301939093529093506119c291611b74565b9050611a36565b6040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260045460070b93830193909352909350611a3391611b74565b90505b61095f8582846120b1565b6060611a5082604481866128cd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b5f8173ffffffffffffffffffffffffffffffffffffffff8111611aae5792915050565b505f92915050565b80515f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec8101611af457611aea836128f4565b60601c9392505050565b60208103611aae575f611b0684612943565b9050611b1181611a8b565b949350505050565b606060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200185815250604051602001611b5c9190612985565b60405160208183030381529060405290509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015267ffffffffffffffff8316818301528151808203830181526060918201928390525f9283929161080191611bc891906129c9565b5f60405180830381855afa9150503d805f8114611c00576040519150601f19603f3d011682016040523d82523d5f602084013e611c05565b606091505b50909250905081611c6a576040517fa91ed72100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015267ffffffffffffffff85166024820152604401610956565b80806020019051810190611c7e91906129e4565b5195945050505050565b5f611c97602c600c84866128cd565b6107bf91612a36565b5f611c97604c602c84866128cd565b6060611a5082604c81866128cd565b6040517f03be20500000000000000000000000000000000000000000000000000000000081526060905f9030906303be205090611cff9087906004016123fb565b5f60405180830381865afa158015611d19573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d409190810190612a72565b90505f81806020019051810190611d579190612aa4565b805160208201516040517febaeefd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152909150309063ebaeefd6906044015f604051808303815f87803b158015611dcb575f80fd5b505af1925050508015611ddc575060015b611e365780516020808301516040805173ffffffffffffffffffffffffffffffffffffffff9094168452918301527feb907f6e0de6862ca2ced78e890a55c5e8352dc4051697356bc835abf7cedcac910160405180910390a15b80515f9073ffffffffffffffffffffffffffffffffffffffff1615611e5c578151611e5e565b845b6040517f8483bc0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091503090638483bc009034906024015f604051808303818588803b158015611ec7575f80fd5b505af193505050508015611ed9575060015b612017575f8573ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114611f33576040519150601f19603f3d011682016040523d82523d5f602084013e611f38565b606091505b505090508015611f95576040805173ffffffffffffffffffffffffffffffffffffffff881681523460208201527fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa17910160405180910390a1612015565b604051329034905f81818185875af1925050503d805f8114611fd2576040519150601f19603f3d011682016040523d82523d5f602084013e611fd7565b606091505b5050604080513281523460208201529192507fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa17910160405180910390a15b505b5060400151949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113bf90849061218c565b6120dc60405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b5f805f806120f28767ffffffffffffffff612231565b90505f866040015160070b131561211e5761211288828860400151612259565b91955093509150612160565b612158888288604001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6121539190612b56565b6122d2565b919550935091505b5060408051606081018252938452602084019290925267ffffffffffffffff1690820152949350505050565b5f8060205f8451602086015f885af1806121ab576040513d5f823e3d81fd5b50505f513d915081156121c25780600114156121dc565b73ffffffffffffffffffffffffffffffffffffffff84163b155b1561222b576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610956565b50505050565b5f8167ffffffffffffffff168367ffffffffffffffff161161225357826107bf565b50919050565b5f80808061226885600a612c9a565b90505f61227f8267ffffffffffffffff8916612caf565b905061228b8289612cf3565b93506122978489612d06565b97506122a3888261231c565b94506122af8589612d06565b6122b99085612d19565b93506122c58286612d2c565b9250505093509350939050565b5f8080806122e185600a612c9a565b90505f6122f88267ffffffffffffffff8916612d2c565b9050612304888261231c565b94506123108589612d06565b93506122c58286612caf565b5f81831161225357826107bf565b5f8083601f84011261233a575f80fd5b50813567ffffffffffffffff811115612351575f80fd5b602083019150836020828501011115612368575f80fd5b9250929050565b5f8060208385031215612380575f80fd5b823567ffffffffffffffff811115612396575f80fd5b6123a28582860161232a565b90969095509350505050565b5f5b838110156123c85781810151838201526020016123b0565b50505f910152565b5f81518084526123e78160208601602086016123ae565b601f01601f19169290920160200192915050565b602081525f6107bf60208301846123d0565b5f6020828403121561241d575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561247457612474612424565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156124a3576124a3612424565b604052919050565b5f67ffffffffffffffff8211156124c4576124c4612424565b50601f01601f191660200190565b5f805f606084860312156124e4575f80fd5b833567ffffffffffffffff8111156124fa575f80fd5b8401601f8101861361250a575f80fd5b803561251d612518826124ab565b61247a565b818152876020838501011115612531575f80fd5b816020840160208301375f6020838301015280955050505060208401359150604084013590509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114610a8d575f80fd5b67ffffffffffffffff81168114610a8d575f80fd5b5f80604083850312156125a5575f80fd5b82356125b08161255e565b915060208301356125c08161257f565b809150509250929050565b5f602082840312156125db575f80fd5b81356125e68161255e565b9392505050565b838152826020820152606060408201525f61095f60608301846123d0565b5f805f805f805f60a0888a031215612621575f80fd5b873561262c8161255e565b965060208801359550604088013567ffffffffffffffff8082111561264f575f80fd5b61265b8b838c0161232a565b909750955060608a013591506126708261255e565b90935060808901359080821115612685575f80fd5b506126928a828b0161232a565b989b979a50959850939692959293505050565b5f80604083850312156126b6575f80fd5b82356126c18161255e565b946020939093013593505050565b5f805f606084860312156126e1575f80fd5b83356126ec8161255e565b92506020840135915060408401356127038161255e565b809150509250925092565b5f806040838503121561271f575f80fd5b82359150602083013580151581146125c0575f80fd5b5f83516127468184602088016123ae565b83519083019061275a8183602088016123ae565b01949350505050565b604081525f61277560408301856123d0565b90508260208301529392505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f82601f8301126127c1575f80fd5b81516127cf612518826124ab565b8181528460208386010111156127e3575f80fd5b611b118260208301602087016123ae565b5f805f60608486031215612806575f80fd5b8351925060208401519150604084015167ffffffffffffffff81111561282a575f80fd5b612836868287016127b2565b9150509250925092565b606081525f61285260608301866123d0565b60208301949094525060400152919050565b5f60208284031215612874575f80fd5b81516125e68161255e565b73ffffffffffffffffffffffffffffffffffffffff8516815267ffffffffffffffff84166020820152826040820152608060608201525f6128c360808301846123d0565b9695505050505050565b5f80858511156128db575f80fd5b838611156128e7575f80fd5b5050820193919092039150565b5f815160208301517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008082169350601483101561293b5780818460140360031b1b83161693505b505050919050565b80516020808301519190811015612253577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152611b1160808401826123d0565b5f82516129da8184602087016123ae565b9190910192915050565b5f606082840312156129f4575f80fd5b6129fc612451565b8251612a078161257f565b81526020830151612a178161257f565b60208201526040830151612a2a8161257f565b60408201529392505050565b803560208310156107c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f60208284031215612a82575f80fd5b815167ffffffffffffffff811115612a98575f80fd5b611b11848285016127b2565b5f60208284031215612ab4575f80fd5b815167ffffffffffffffff80821115612acb575f80fd5b9083019060608286031215612ade575f80fd5b612ae6612451565b8251612af18161255e565b815260208381015190820152604083015182811115612b0e575f80fd5b612b1a878286016127b2565b60408301525095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8260070b8260070b028060070b9150808214612b7557612b75612b29565b5092915050565b600181815b80851115612bd557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612bbb57612bbb612b29565b80851615612bc857918102915b93841c9390800290612b81565b509250929050565b5f82612beb575060016107c2565b81612bf757505f6107c2565b8160018114612c0d5760028114612c1757612c33565b60019150506107c2565b60ff841115612c2857612c28612b29565b50506001821b6107c2565b5060208310610133831016604e8410600b8410161715612c56575081810a6107c2565b612c608383612b7c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612c9257612c92612b29565b029392505050565b5f6107bf67ffffffffffffffff841683612bdd565b80820281158282048414176107c2576107c2612b29565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82612d0157612d01612cc6565b500690565b818103818111156107c2576107c2612b29565b808201808211156107c2576107c2612b29565b5f82612d3a57612d3a612cc6565b50049056fea2646970667358221220a769ac7bb53580e18dcf9f1ed968ffebc1f5ebc309ab8b6b7ff21d29138c1a6164736f6c63430008160033","sourceMap":"769:11973:0:-:0;;;1645:1673;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1798:9;1809:4;-1:-1:-1;;;;;2395:23:1;;2391:195;;2441:134;;-1:-1:-1;;;2441:134:1;;-1:-1:-1;;;;;986:32:84;;2441:134:1;;;968:51:84;941:18;;2441:134:1;;;;;;;2391:195;-1:-1:-1;;;;;2595:20:1;;;;;2687:16;;;;;;2728:11;;;-1:-1:-1;;;2728:11:1;;;;:9;;:11;;;;;;;;;;;;;;;2687:16;2728:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2713:27:1;;;-1:-1:-1;;2751:18:1;:41;;;;;:62;;-1:-1:-1;;;;;;2751:62:1;;;1953:4;2751:62;;;;1806:3;2823:41;;;;:62;;;;;2092:3;2823:62;;;2751:41;2244:178:0;;::::1;::::0;::::1;::::0;;;;2290:38:::1;-1:-1:-1::0;;;;;2290:36:0;::::1;;:38::i;:::-;-1:-1:-1::0;;;;;2244:178:0;;::::1;::::0;;-1:-1:-1;;;;;2244:178:0;;::::1;;::::0;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;;;2233:189;;:8:::1;:189:::0;;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;2233:189:0;;;;-1:-1:-1;;;2233:189:0;;::::1;::::0;::::1;;::::0;;;;;::::1;::::0;;;;-1:-1:-1;;;;;;2233:189:0;;::::1;::::0;;;;;;::::1;::::0;;2950:361;;::::1;::::0;::::1;::::0;;2996:42:::1;2950:361:::0;;3084:13:::1;-1:-1:-1::0;3065:33:0;;;;;;;;;;;;::::1;2950:361:::0;;::::1;::::0;;;3294:6:::1;2950:361:::0;;;;;;2938:373;;:9:::1;:373:::0;;;;;::::1;::::0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;::::1;;::::0;;-1:-1:-1;769:11973:0;;-1:-1:-1;769:11973:0;1873:177:7;1951:7;1993:48;2029:12;-1:-1:-1;;;1993:48:7;:::i;:::-;1970:73;1873:177;-1:-1:-1;;1873:177:7:o;14::84:-;93:13;;-1:-1:-1;;;;;135:31:84;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:621::-;290:6;298;306;314;367:3;355:9;346:7;342:23;338:33;335:53;;;384:1;381;374:12;335:53;407:40;437:9;407:40;:::i;:::-;397:50;;466:49;511:2;500:9;496:18;466:49;:::i;:::-;558:2;543:18;;537:25;456:59;;-1:-1:-1;;;;;;591:30:84;;581:41;;571:69;;636:1;633;626:12;571:69;659:5;649:15;;;709:2;698:9;694:18;688:25;758:7;755:1;744:22;735:7;732:35;722:63;;781:1;778;771:12;722:63;196:621;;;;-1:-1:-1;196:621:84;;-1:-1:-1;;196:621:84:o;1030:208::-;1100:6;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1192:40;1222:9;1192:40;:::i;:::-;1182:50;1030:208;-1:-1:-1;;;1030:208:84:o;1243:222::-;1308:9;;;1329:10;;;1326:133;;;1381:10;1376:3;1372:20;1369:1;1362:31;1416:4;1413:1;1406:15;1444:4;1441:1;1434:15;1243:222;769:11973:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101a7575f3560e01c80638483bc00116100e7578063d0a1026011610087578063ebaeefd611610062578063ebaeefd6146106be578063f6e6b240146106dd578063f9716faf14610735578063fc0c546a14610780575f80fd5b8063d0a102601461066d578063d9acf0ec14610680578063da001a291461069f575f80fd5b8063aae12e46116100c2578063aae12e46146105a6578063ba8726791461062f578063bc963bc714610644578063d00b1ad514610659575f80fd5b80638483bc00146105305780639180b744146105455780639b5215f614610573575f80fd5b80634bd162df116101525780635e280f111161012d5780635e280f1114610421578063765008a1146104545780637ecd9ac3146104ea57806381e8dcb414610511575f80fd5b80634bd162df1461037a5780635241b496146103c85780635b9a23731461040c575f80fd5b806320d9af9a1161018257806320d9af9a1461024157806322dbe29c146102645780632d0e315c146102ac575f80fd5b806303be2050146101b25780630d1995e0146101e75780631f8164d91461022d575f80fd5b366101ae57005b5f80fd5b3480156101bd575f80fd5b506101d16101cc36600461236f565b6107b3565b6040516101de91906123fb565b60405180910390f35b3480156101f2575f80fd5b506101d16040518060400160405280600381526020017d06000000000000000000000000000000000000000000000000000000000081525081565b348015610238575f80fd5b506101d16107c8565b34801561024c575f80fd5b506102566103e681565b6040519081526020016101de565b34801561026f575f80fd5b506101d16040518060400160405280600181526020017f010000000000000000000000000000000000000000000000000000000000000081525081565b3480156102b7575f80fd5b50610335604080516060810182525f8082526020820181905291810191909152506040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260025460070b9181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015160070b908201526060016101de565b348015610385575f80fd5b506103af61039436600461240d565b5f6020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101de565b3480156103d3575f80fd5b506103e76103e23660046124d2565b61084c565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b348015610417575f80fd5b506102566103e781565b34801561042c575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b34801561045f575f80fd5b506001546002546104ac9173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845267ffffffffffffffff909216602084015260070b908201526060016101de565b3480156104f5575f80fd5b506103e773333333333333333333333333333333333333333381565b34801561051c575f80fd5b506103af61052b366004612594565b610968565b61054361053e3660046125cb565b610973565b005b348015610550575f80fd5b5061056461055f36600461236f565b610a90565b6040516101de939291906125ed565b34801561057e575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b1575f80fd5b50610335604080516060810182525f8082526020820181905291810191909152506040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260045460070b9181019190915290565b34801561063a575f80fd5b506103e761080181565b34801561064f575f80fd5b506103af61045181565b348015610664575f80fd5b506103af609681565b61054361067b36600461260b565b610ac8565b34801561068b575f80fd5b5061054361069a3660046126a5565b611142565b3480156106aa575f80fd5b506105436106b93660046126cf565b6113c4565b3480156106c9575f80fd5b506105436106d83660046126a5565b611866565b3480156106e8575f80fd5b506003546004546104ac9173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b348015610740575f80fd5b5061075461074f36600461270e565b61190b565b6040805182518152602080840151908201529181015167ffffffffffffffff16908201526060016101de565b34801561078b575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b60606107bf8383611a41565b90505b92915050565b604080518082018252600181527f010000000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600381527d06000000000000000000000000000000000000000000000000000000000081830152925161083a939101612735565b60405160208183030381529060405281565b5f8061085784611a8b565b90505f61086386611ab6565b905073ffffffffffffffffffffffffffffffffffffffff811661095f5785516040515f917f09b3473100000000000000000000000000000000000000000000000000000000916108b7918a91602401612763565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050610923818487611b19565b6040517f4f95203300000000000000000000000000000000000000000000000000000000815260040161095691906123fb565b60405180910390fd5b95945050505050565b5f6107bf8383611b74565b3330146109ae576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f341180156109d2575073ffffffffffffffffffffffffffffffffffffffff811615155b15610a8d575f8173ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610a2d576040519150601f19603f3d011682016040523d82523d5f602084013e610a32565b606091505b5050905080610a8b576040517fc8ee485e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152346024820152604401610956565b505b50565b5f8060605f610a9f8686611c88565b90505f610aac8787611ca0565b90505f610ab98888611caf565b92989197509195509350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610b75576040517fefa9309d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152336024820152604401610956565b8673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f86fee0c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015288166024820152604401610956565b5f805f60603073ffffffffffffffffffffffffffffffffffffffff16639180b7448a8a6040518363ffffffff1660e01b8152600401610c7a929190612784565b5f60405180830381865afa925050508015610cb657506040513d5f823e601f3d908101601f19168201604052610cb391908101906127f4565b60015b610d1c573d808015610ce3576040519150601f19603f3d011682016040523d82523d5f602084013e610ce8565b606091505b50806040517ed4895a00000000000000000000000000000000000000000000000000000000815260040161095691906123fb565b919450925090506040517f5241b4960000000000000000000000000000000000000000000000000000000081523090635241b49690610d6390849086908890600401612840565b602060405180830381865afa925050508015610d9c575060408051601f3d908101601f19168201909252610d9991810190612864565b60015b610e1e573d808015610dc9576040519150601f19603f3d011682016040523d82523d5f602084013e610dce565b606091505b505f610dda828a611cbe565b90507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b981604051610e0b91906123fb565b60405180910390a1505050505050611139565b93503415610fa0576040517fda001a2900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015234602483015288166044820152309063da001a29906064015f604051808303815f87803b158015610e98575f80fd5b505af1925050508015610ea9575060015b610fa0573d808015610ed6576040519150601f19603f3d011682016040523d82523d5f602084013e610edb565b606091505b506040517f8483bc0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201523090638483bc009034906024015f604051808303818588803b158015610f42575f80fd5b505af1158015610f54573d5f803e3d5ffd5b50505050505f610f64828a611cbe565b90507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b981604051610f9591906123fb565b60405180910390a150505b6040517fd9acf0ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052309063d9acf0ec906044015f604051808303815f87803b15801561100b575f80fd5b505af192505050801561101c575060015b611134573d808015611049576040519150601f19603f3d011682016040523d82523d5f602084013e61104e565b606091505b506040517febaeefd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101859052309063ebaeefd6906044015f604051808303815f87803b1580156110ba575f80fd5b505af11580156110cc573d5f803e3d5ffd5b50506001546040517f775ce5b47736b2186798494ee89239e4c0341b516c05bf613205d83ffbfffdc6935061112a9250889174010000000000000000000000000000000000000000900467ffffffffffffffff16908890869061287f565b60405180910390a1505b505050505b50505050505050565b33301461117d576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f61118982600161190b565b80519091501561136d5760015481516111dd9173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811692911690612024565b600154604082810151815173ffffffffffffffffffffffffffffffffffffffff871660208201527401000000000000000000000000000000000000000090930467ffffffffffffffff908116928401929092521660608201525f9060800160408051601f198184030181528282018252600183527f010000000000000000000000000000000000000000000000000000000000000060208481019190915282518084018452600381527d0600000000000000000000000000000000000000000000000000000000008183015292519194505f936112be939092909101612735565b60408051601f19818403018152908290526112dd918490602001612735565b60408051601f19818403018152908290527f17938e130000000000000000000000000000000000000000000000000000000082529150733333333333333333333333333333333333333333906317938e139061133d9084906004016123fb565b5f604051808303815f87803b158015611354575f80fd5b505af1158015611366573d5f803e3d5ffd5b5050505050505b6020810151156113bf5760208101516113bf9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908590612024565b505050565b3330146113ff576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f61140a835f61190b565b60035481516040519293505f9273ffffffffffffffffffffffffffffffffffffffff909216918381818185875af1925050503d805f8114611466576040519150601f19603f3d011682016040523d82523d5f602084013e61146b565b606091505b50509050806114a9576040517fb7e54a0700000000000000000000000000000000000000000000000000000000815260048101859052602401610956565b600354604083810151815173ffffffffffffffffffffffffffffffffffffffff891660208201527401000000000000000000000000000000000000000090930467ffffffffffffffff908116928401929092521660608201525f9060800160408051601f198184030181528282018252600183527f010000000000000000000000000000000000000000000000000000000000000060208481019190915282518084018452600381527d0600000000000000000000000000000000000000000000000000000000008183015292519194505f9361158a939092909101612735565b60408051601f19818403018152908290526115a9918490602001612735565b60408051601f19818403018152908290527f17938e130000000000000000000000000000000000000000000000000000000082529150733333333333333333333333333333333333333333906317938e13906116099084906004016123fb565b5f604051808303815f87803b158015611620575f80fd5b505af1158015611632573d5f803e3d5ffd5b505050506020840151156111395760208401516040517f8483bc0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891660048201523091638483bc00916024015f604051808303818588803b1580156116a9575f80fd5b505af1935050505080156116bb575060015b61180857602084015160405173ffffffffffffffffffffffffffffffffffffffff871691905f81818185875af1925050503d805f8114611716576040519150601f19603f3d011682016040523d82523d5f602084013e61171b565b606091505b50909350508215611781576020808501516040805173ffffffffffffffffffffffffffffffffffffffff89168152928301919091527fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa1791015b60405180910390a1611139565b60208401516040513291905f81818185875af1925050503d805f81146117c2576040519150601f19603f3d011682016040523d82523d5f602084013e6117c7565b606091505b505060208581015160408051328152928301919091529194507fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa179101611774565b6020808501516040805173ffffffffffffffffffffffffffffffffffffffff8b168152928301919091527fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa17910160405180910390a150505050505050565b3330146118a1576040517f5950c85e000000000000000000000000000000000000000000000000000000008152336004820152602401610956565b5f811180156118c5575073ffffffffffffffffffffffffffffffffffffffff821615155b15610a8b57610a8b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383612024565b61193660405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b604080516060810182525f808252602082018190529181018290529083156119c9576040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260025460070b938301939093529093506119c291611b74565b9050611a36565b6040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260045460070b93830193909352909350611a3391611b74565b90505b61095f8582846120b1565b6060611a5082604481866128cd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b5f8173ffffffffffffffffffffffffffffffffffffffff8111611aae5792915050565b505f92915050565b80515f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec8101611af457611aea836128f4565b60601c9392505050565b60208103611aae575f611b0684612943565b9050611b1181611a8b565b949350505050565b606060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200185815250604051602001611b5c9190612985565b60405160208183030381529060405290509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015267ffffffffffffffff8316818301528151808203830181526060918201928390525f9283929161080191611bc891906129c9565b5f60405180830381855afa9150503d805f8114611c00576040519150601f19603f3d011682016040523d82523d5f602084013e611c05565b606091505b50909250905081611c6a576040517fa91ed72100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015267ffffffffffffffff85166024820152604401610956565b80806020019051810190611c7e91906129e4565b5195945050505050565b5f611c97602c600c84866128cd565b6107bf91612a36565b5f611c97604c602c84866128cd565b6060611a5082604c81866128cd565b6040517f03be20500000000000000000000000000000000000000000000000000000000081526060905f9030906303be205090611cff9087906004016123fb565b5f60405180830381865afa158015611d19573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d409190810190612a72565b90505f81806020019051810190611d579190612aa4565b805160208201516040517febaeefd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152909150309063ebaeefd6906044015f604051808303815f87803b158015611dcb575f80fd5b505af1925050508015611ddc575060015b611e365780516020808301516040805173ffffffffffffffffffffffffffffffffffffffff9094168452918301527feb907f6e0de6862ca2ced78e890a55c5e8352dc4051697356bc835abf7cedcac910160405180910390a15b80515f9073ffffffffffffffffffffffffffffffffffffffff1615611e5c578151611e5e565b845b6040517f8483bc0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091503090638483bc009034906024015f604051808303818588803b158015611ec7575f80fd5b505af193505050508015611ed9575060015b612017575f8573ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114611f33576040519150601f19603f3d011682016040523d82523d5f602084013e611f38565b606091505b505090508015611f95576040805173ffffffffffffffffffffffffffffffffffffffff881681523460208201527fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa17910160405180910390a1612015565b604051329034905f81818185875af1925050503d805f8114611fd2576040519150601f19603f3d011682016040523d82523d5f602084013e611fd7565b606091505b5050604080513281523460208201529192507fbb643711c959f203f346d453edf6f91a40b637a95c46c992089c63726b8eaa17910160405180910390a15b505b5060400151949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113bf90849061218c565b6120dc60405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b5f805f806120f28767ffffffffffffffff612231565b90505f866040015160070b131561211e5761211288828860400151612259565b91955093509150612160565b612158888288604001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6121539190612b56565b6122d2565b919550935091505b5060408051606081018252938452602084019290925267ffffffffffffffff1690820152949350505050565b5f8060205f8451602086015f885af1806121ab576040513d5f823e3d81fd5b50505f513d915081156121c25780600114156121dc565b73ffffffffffffffffffffffffffffffffffffffff84163b155b1561222b576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610956565b50505050565b5f8167ffffffffffffffff168367ffffffffffffffff161161225357826107bf565b50919050565b5f80808061226885600a612c9a565b90505f61227f8267ffffffffffffffff8916612caf565b905061228b8289612cf3565b93506122978489612d06565b97506122a3888261231c565b94506122af8589612d06565b6122b99085612d19565b93506122c58286612d2c565b9250505093509350939050565b5f8080806122e185600a612c9a565b90505f6122f88267ffffffffffffffff8916612d2c565b9050612304888261231c565b94506123108589612d06565b93506122c58286612caf565b5f81831161225357826107bf565b5f8083601f84011261233a575f80fd5b50813567ffffffffffffffff811115612351575f80fd5b602083019150836020828501011115612368575f80fd5b9250929050565b5f8060208385031215612380575f80fd5b823567ffffffffffffffff811115612396575f80fd5b6123a28582860161232a565b90969095509350505050565b5f5b838110156123c85781810151838201526020016123b0565b50505f910152565b5f81518084526123e78160208601602086016123ae565b601f01601f19169290920160200192915050565b602081525f6107bf60208301846123d0565b5f6020828403121561241d575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561247457612474612424565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156124a3576124a3612424565b604052919050565b5f67ffffffffffffffff8211156124c4576124c4612424565b50601f01601f191660200190565b5f805f606084860312156124e4575f80fd5b833567ffffffffffffffff8111156124fa575f80fd5b8401601f8101861361250a575f80fd5b803561251d612518826124ab565b61247a565b818152876020838501011115612531575f80fd5b816020840160208301375f6020838301015280955050505060208401359150604084013590509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114610a8d575f80fd5b67ffffffffffffffff81168114610a8d575f80fd5b5f80604083850312156125a5575f80fd5b82356125b08161255e565b915060208301356125c08161257f565b809150509250929050565b5f602082840312156125db575f80fd5b81356125e68161255e565b9392505050565b838152826020820152606060408201525f61095f60608301846123d0565b5f805f805f805f60a0888a031215612621575f80fd5b873561262c8161255e565b965060208801359550604088013567ffffffffffffffff8082111561264f575f80fd5b61265b8b838c0161232a565b909750955060608a013591506126708261255e565b90935060808901359080821115612685575f80fd5b506126928a828b0161232a565b989b979a50959850939692959293505050565b5f80604083850312156126b6575f80fd5b82356126c18161255e565b946020939093013593505050565b5f805f606084860312156126e1575f80fd5b83356126ec8161255e565b92506020840135915060408401356127038161255e565b809150509250925092565b5f806040838503121561271f575f80fd5b82359150602083013580151581146125c0575f80fd5b5f83516127468184602088016123ae565b83519083019061275a8183602088016123ae565b01949350505050565b604081525f61277560408301856123d0565b90508260208301529392505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f82601f8301126127c1575f80fd5b81516127cf612518826124ab565b8181528460208386010111156127e3575f80fd5b611b118260208301602087016123ae565b5f805f60608486031215612806575f80fd5b8351925060208401519150604084015167ffffffffffffffff81111561282a575f80fd5b612836868287016127b2565b9150509250925092565b606081525f61285260608301866123d0565b60208301949094525060400152919050565b5f60208284031215612874575f80fd5b81516125e68161255e565b73ffffffffffffffffffffffffffffffffffffffff8516815267ffffffffffffffff84166020820152826040820152608060608201525f6128c360808301846123d0565b9695505050505050565b5f80858511156128db575f80fd5b838611156128e7575f80fd5b5050820193919092039150565b5f815160208301517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008082169350601483101561293b5780818460140360031b1b83161693505b505050919050565b80516020808301519190811015612253577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152611b1160808401826123d0565b5f82516129da8184602087016123ae565b9190910192915050565b5f606082840312156129f4575f80fd5b6129fc612451565b8251612a078161257f565b81526020830151612a178161257f565b60208201526040830151612a2a8161257f565b60408201529392505050565b803560208310156107c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f60208284031215612a82575f80fd5b815167ffffffffffffffff811115612a98575f80fd5b611b11848285016127b2565b5f60208284031215612ab4575f80fd5b815167ffffffffffffffff80821115612acb575f80fd5b9083019060608286031215612ade575f80fd5b612ae6612451565b8251612af18161255e565b815260208381015190820152604083015182811115612b0e575f80fd5b612b1a878286016127b2565b60408301525095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8260070b8260070b028060070b9150808214612b7557612b75612b29565b5092915050565b600181815b80851115612bd557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612bbb57612bbb612b29565b80851615612bc857918102915b93841c9390800290612b81565b509250929050565b5f82612beb575060016107c2565b81612bf757505f6107c2565b8160018114612c0d5760028114612c1757612c33565b60019150506107c2565b60ff841115612c2857612c28612b29565b50506001821b6107c2565b5060208310610133831016604e8410600b8410161715612c56575081810a6107c2565b612c608383612b7c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612c9257612c92612b29565b029392505050565b5f6107bf67ffffffffffffffff841683612bdd565b80820281158282048414176107c2576107c2612b29565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82612d0157612d01612cc6565b500690565b818103818111156107c2576107c2612b29565b808201808211156107c2576107c2612b29565b5f82612d3a57612d3a612cc6565b50049056fea2646970667358221220a769ac7bb53580e18dcf9f1ed968ffebc1f5ebc309ab8b6b7ff21d29138c1a6164736f6c63430008160033","sourceMap":"769:11973:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:133:1;;;;;;;;;;-1:-1:-1;11504:133:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1235:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:99;;;;;;;;;;;;;:::i;1701:51::-;;;;;;;;;;;;1749:3;1701:51;;;;;1737:25:84;;;1725:2;1710:18;1701:51:1;1591:177:84;1178:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10906:98;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;10982:15:1;;;;;;;;10989:8;10982:15;;;;;;;;;;;;;;;;;;;;;;;;;;;10906:98;;;;;1999:13:84;;2014:42;1995:62;1977:81;;2118:4;2106:17;;;2100:24;2126:18;2096:49;2074:20;;;2067:79;2204:17;;;2198:24;2195:1;2184:39;2162:20;;;2155:69;1965:2;1950:18;10906:98:1;1773:457:84;2102:52:1;;;;;;;;;;-1:-1:-1;2102:52:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;2594:18:84;2582:31;;;2564:50;;2552:2;2537:18;2102:52:1;2420:200:84;3636:1090:1;;;;;;;;;;-1:-1:-1;3636:1090:1;;;;;:::i;:::-;;:::i;:::-;;;4657:42:84;4645:55;;;4627:74;;4615:2;4600:18;3636:1090:1;4481:226:84;1758:51:1;;;;;;;;;;;;1806:3;1758:51;;2161:33;;;;;;;;;;;;;;;2268:27;;;;;;;;;;-1:-1:-1;2268:27:1;;;;;;;;;;;;;;;;;;;;;;;;;4938:42:84;4926:55;;;4908:74;;5030:18;5018:31;;;5013:2;4998:18;;4991:59;5097:1;5086:21;5066:18;;;5059:49;4896:2;4881:18;2268:27:1;4712:402:84;1416:84:1;;;;;;;;;;;;1458:42;1416:84;;6006:151;;;;;;;;;;-1:-1:-1;6006:151:1;;;;;:::i;:::-;;:::i;10504:396::-;;;;;;:::i;:::-;;:::i;:::-;;2898:732;;;;;;;;;;-1:-1:-1;2898:732:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2201:25::-;;;;;;;;;;;;;;;11010:100;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;11087:16:1;;;;;;;;11094:9;11087:16;;;;;;;;;;;;;;;;;;;;;;;;;;;11010:100;1506:101;;;;;;;;;;;;1565:42;1506:101;;1909:48;;;;;;;;;;;;1953:4;1909:48;;2048:47;;;;;;;;;;;;2092:3;2048:47;;3826:3188:0;;;;;;:::i;:::-;;:::i;7994:1512::-;;;;;;;;;;-1:-1:-1;7994:1512:0;;;;;:::i;:::-;;:::i;10216:2489::-;;;;;;;;;;-1:-1:-1;10216:2489:0;;;;;:::i;:::-;;:::i;9450:217:1:-;;;;;;;;;;-1:-1:-1;9450:217:1;;;;;:::i;:::-;;:::i;2301:28::-;;;;;;;;;;-1:-1:-1;2301:28:1;;;;;;;;;;;;;;;;;;;;;5141:604;;;;;;;;;;-1:-1:-1;5141:604:1;;;;;:::i;:::-;;:::i;:::-;;;;9092:13:84;;9074:32;;9162:4;9150:17;;;9144:24;9122:20;;;9115:54;9217:17;;;9211:24;9237:18;9207:49;9185:20;;;9178:79;9062:2;9047:18;5141:604:1;8858:405:84;2232:29:1;;;;;;;;;;;;;;;11504:133;11573:12;11604:26;:4;;:24;:26::i;:::-;11597:33;;11504:133;;;;;:::o;1296:99::-;1354:19;;;;;;;;;;;;;;;;;;;;1375;;;;;;;;;;;;;;;1337:58;;;;1375:19;1337:58;;:::i;:::-;;;;;;;;;;;;;1296:99;:::o;3636:1090::-;3799:7;3997:14;4014:40;:14;:38;:40::i;:::-;3997:57;;4064:16;4083:40;:14;:38;:40::i;:::-;4064:59;-1:-1:-1;4303:22:1;;;4299:395;;4546:21;;4363:218;;4341:19;;4403:93;;4363:218;;4514:14;;4363:218;;;:::i;:::-;;;;-1:-1:-1;;4363:218:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4638:44:1;4363:218;4664:6;4672:9;4638:25;:44::i;:::-;4602:81;;;;;;;;;;;:::i;:::-;;;;;;;;4299:395;4711:8;3636:1090;-1:-1:-1;;;;;3636:1090:1:o;6006:151::-;6089:6;6114:36;6134:5;6141:8;6114:19;:36::i;10504:396::-;1012:10;1034:4;1012:27;1008:147;;1062:82;;;;;1133:10;1062:82;;;4627:74:84;4600:18;;1062:82:1;4481:226:84;1008:147:1;10612:1:::1;10600:9;:13;:45;;;;-1:-1:-1::0;10617:28:1::1;::::0;::::1;::::0;::::1;10600:45;10596:298;;;10662:12;10680:14;:19;;10708:9;10680:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10661:62;;;10742:7;10737:147;;10776:93;::::0;::::1;::::0;;10719:42:84;10707:55;;10776:93:1::1;::::0;::::1;10689:74:84::0;10859:9:1::1;10779:18:84::0;;;10772:34;10662:18;;10776:93:1::1;10515:297:84::0;10737:147:1::1;10647:247;10596:298;10504:396:::0;:::o;2898:732::-;2979:7;2988;2997:12;3210:16;3229:44;3257:15;;3229:27;:44::i;:::-;3210:63;;3283:26;3312:47;3343:15;;3312:30;:47::i;:::-;3283:76;;3485:26;3514:46;3544:15;;3514:29;:46::i;:::-;3579:8;;3589:18;;-1:-1:-1;3579:8:1;;-1:-1:-1;2898:732:1;-1:-1:-1;;;;2898:732:1:o;3826:3188:0:-;4360:8;4352:31;;4373:10;4352:31;4348:216;;4406:147;;;;;11001:42:84;4502:8:0;11070:15:84;4406:147:0;;;11052:34:84;4529:10:0;11102:18:84;;;11095:43;10964:18;;4406:147:0;10817:327:84;4348:216:0;4594:4;4578:20;;4586:3;4578:20;;;4574:143;;4621:85;;;;;11001:42:84;4695:3:0;11070:15:84;;4621:85:0;;;11052:34:84;11122:15;;11102:18;;;11095:43;10964:18;;4621:85:0;10817:327:84;4574:143:0;4727:16;4753;4779:22;4811:29;5193:4;:21;;;5215:8;;5193:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5193:31:0;;;;;;;;;;;;:::i;:::-;;;5189:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5622:4;5553:74;;;;;;;;;;;:::i;5189:449::-;5385:9;;-1:-1:-1;5425:19:0;-1:-1:-1;5477:17:0;-1:-1:-1;5964:77:0;;;;;:4;;:33;;:77;;5998:16;;6016:14;;6032:8;;5964:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;5964:77:0;;;;;;;;-1:-1:-1;;5964:77:0;;;;;;;;;;;;:::i;:::-;;;5960:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6156:19;6178:31;6193:4;6199:9;6178:14;:31::i;:::-;6156:53;;6228:20;6241:6;6228:20;;;;;;:::i;:::-;;;;;;;;6313:7;;;;;;;;5960:370;6095:9;-1:-1:-1;6437:9:0;:13;6433:336;;6470:59;;;;;13341:42:84;13410:15;;;6470:59:0;;;13392:34:84;6508:9:0;13442:18:84;;;13435:34;13505:15;;13485:18;;;13478:43;6470:4:0;;:27;;13304:18:84;;6470:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6466:293;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6577:53:0;;;;;4657:42:84;4645:55;;6577:53:0;;;4627:74:84;6577:4:0;;:23;;6609:9;;4600:18:84;;6577:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6648:19;6670:31;6685:4;6691:9;6670:14;:31::i;:::-;6648:53;;6724:20;6737:6;6724:20;;;;;;:::i;:::-;;;;;;;;6559:200;6533:226;6466:293;6783:45;;;;;10719:42:84;10707:55;;6783:45:0;;;10689:74:84;10779:18;;;10772:34;;;6783:4:0;;:25;;10662:18:84;;6783:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6779:229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6872:36:0;;;;;10719:42:84;10707:55;;6872:36:0;;;10689:74:84;10779:18;;;10772:34;;;6872:4:0;;:16;;10662:18:84;;6872:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6960:8:0;:20;6927:70;;;;-1:-1:-1;6927:70:0;;-1:-1:-1;6950:8:0;;6960:20;;;;;;6982:8;;6992:4;;6927:70;:::i;:::-;;;;;;;;6832:176;6779:229;4033:2981;;;;3826:3188;;;;;;;;:::o;7994:1512::-;1012:10:1;1034:4;1012:27;1008:147;;1062:82;;;;;1133:10;1062:82;;;4627:74:84;4600:18;;1062:82:1;4481:226:84;1008:147:1;8564:32:0::1;8599:37;8620:9;8631:4;8599:20;:37::i;:::-;8829:11:::0;;8564:72;;-1:-1:-1;8829:15:0;8825:507:::1;;8953:8;:27:::0;8982:11;;8934:60:::1;::::0;8953:27:::1;8934:5;:18:::0;::::1;::::0;8953:27;::::1;::::0;8934:18:::1;:60::i;:::-;9053:8;:20:::0;9075:12:::1;::::0;;::::1;::::0;9031:57;;14269:42:84;14257:55;;9031:57:0::1;::::0;::::1;14239:74:84::0;9053:20:0;;;::::1;;::::0;;::::1;14366:18:84::0;;;14359:43;;;;14438:15;14418:18;;;14411:43;9009:19:0::1;::::0;14212:18:84;;9031:57:0::1;::::0;;-1:-1:-1;;9031:57:0;;::::1;::::0;;;1354:19:1;;::::1;::::0;;::::1;::::0;;::::1;9031:57:0;1354:19:1::0;;::::1;::::0;;;;1375;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;1337:58;;9031:57:0;;-1:-1:-1;9102:20:0::1;::::0;1337:58:1::1;::::0;9031:57:0;;1375:19:1;;1337:58:::1;;:::i;:::-;;::::0;;-1:-1:-1;;1337:58:1;;::::1;::::0;;;;;;;9125:42:0::1;::::0;9160:6;;1337:58:1::1;9125:42:0;;:::i;:::-;;::::0;;-1:-1:-1;;9125:42:0;;::::1;::::0;;;;;;;9270:51;;;9125:42;-1:-1:-1;1458:42:1::1;::::0;9270::0::1;::::0;:51:::1;::::0;9125:42;;9270:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8846:486;;8825:507;9414:12;::::0;::::1;::::0;:16;9410:90:::1;;9476:12;::::0;::::1;::::0;9446:43:::1;::::0;:18:::1;:5;:18;::::0;9465:9;;9446:18:::1;:43::i;:::-;8092:1414;7994:1512:::0;;:::o;10216:2489::-;1012:10:1;1034:4;1012:27;1008:147;;1062:82;;;;;1133:10;1062:82;;;4627:74:84;4600:18;;1062:82:1;4481:226:84;1008:147:1;10835:32:0::1;10870:36;10891:7;10900:5;10870:20;:36::i;:::-;11019:9;:28:::0;11062:11;;11011:68:::1;::::0;11062:11;;-1:-1:-1;10993:12:0::1;::::0;11019:28:::1;::::0;;::::1;::::0;10993:12;11011:68;10993:12;11011:68;11062:11;11019:28;11011:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10992:87;;;11094:7;11089:119;;11124:73;::::0;::::1;::::0;;::::1;::::0;::::1;1737:25:84::0;;;1710:18;;11124:73:0::1;1591:177:84::0;11089:119:0::1;11262:9;:21:::0;11285:12:::1;::::0;;::::1;::::0;11240:58;;14269:42:84;14257:55;;11240:58:0::1;::::0;::::1;14239:74:84::0;11262:21:0;;;::::1;;::::0;;::::1;14366:18:84::0;;;14359:43;;;;14438:15;14418:18;;;14411:43;11218:19:0::1;::::0;14212:18:84;;11240:58:0::1;::::0;;-1:-1:-1;;11240:58:0;;::::1;::::0;;;1354:19:1;;::::1;::::0;;::::1;::::0;;::::1;11240:58:0;1354:19:1::0;;::::1;::::0;;;;1375;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;1337:58;;11240::0;;-1:-1:-1;11308:20:0::1;::::0;1337:58:1::1;::::0;11240::0;;1375:19:1;;1337:58:::1;;:::i;:::-;;::::0;;-1:-1:-1;;1337:58:1;;::::1;::::0;;;;;;;11331:42:0::1;::::0;11366:6;;1337:58:1::1;11331:42:0;;:::i;:::-;;::::0;;-1:-1:-1;;11331:42:0;;::::1;::::0;;;;;;;11501:51;;;11331:42;-1:-1:-1;1458:42:1::1;::::0;11501::0::1;::::0;:51:::1;::::0;11331:42;;11501:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;11820:12:0::1;::::0;::::1;::::0;:16;11816:883:::1;;12005:12;::::0;::::1;::::0;11973:57:::1;::::0;;;;4657:42:84;4645:55;;11973:57:0::1;::::0;::::1;4627:74:84::0;11973:4:0::1;::::0;:23:::1;::::0;4600:18:84;;11973:57:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;11969:720;;12259:12;::::0;::::1;::::0;12236:41:::1;::::0;:14:::1;::::0;::::1;::::0;12259:12;12236:41:::1;::::0;;;12259:12;12236:14;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;12222:55:0;;-1:-1:-1;;12295:380:0;::::1;;;12364:12;::::0;;::::1;::::0;12335:42:::1;::::0;;10719::84;10707:55;;10689:74;;10779:18;;;10772:34;;;;12335:42:0::1;::::0;10662:18:84;12335:42:0::1;;;;;;;;11969:720;;12295:380;12569:12;::::0;::::1;::::0;12546:41:::1;::::0;:9:::1;::::0;12569:12;12546:41:::1;::::0;;;12569:12;12546:9;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;12643:12:0::1;::::0;;::::1;::::0;12614:42:::1;::::0;;12632:9:::1;10689:74:84::0;;10779:18;;;10772:34;;;;12532:55:0;;-1:-1:-1;12614:42:0::1;::::0;10662:18:84;12614:42:0::1;10515:297:84::0;11969:720:0::1;12083:12;::::0;;::::1;::::0;12054:42:::1;::::0;;10719::84;10707:55;;10689:74;;10779:18;;;10772:34;;;;12054:42:0::1;::::0;10662:18:84;12054:42:0::1;;;;;;;10363:2342;;;;10216:2489:::0;;;:::o;9450:217:1:-;1012:10;1034:4;1012:27;1008:147;;1062:82;;;;;1133:10;1062:82;;;4627:74:84;4600:18;;1062:82:1;4481:226:84;1008:147:1;9558:1:::1;9548:7;:11;:43;;;;-1:-1:-1::0;9563:28:1::1;::::0;::::1;::::0;::::1;9548:43;9544:117;;;9607:43;:18;:5;:18;9626:14:::0;9642:7;9607:18:::1;:43::i;5141:604::-:0;5222:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;5222:24:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;5334:325:1;;;;5360:16;;;;;;;;5368:8;5360:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5417:70:1;;:19;:70::i;:::-;5390:97;;5334:325;;;5518:17;;;;;;;;5526:9;5518:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5576:72:1;;:19;:72::i;:::-;5549:99;;5334:325;5676:62;:7;5706:24;5732:5;5676:29;:62::i;9725:124:7:-;9798:12;9829:13;:4;9834:6;9829:4;;:13;:::i;:::-;9822:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9822:20:7;;9725:124;-1:-1:-1;;;;;;9725:124:7:o;8217:302::-;8299:7;8352:16;8402:17;8383:36;;8379:107;;8458:15;8217:302;-1:-1:-1;;8217:302:7:o;8379:107::-;-1:-1:-1;8510:1:7;;8217:302;-1:-1:-1;;8217:302:7:o;8825:492::-;8946:21;;8910:7;;8981:45;;;8977:307;;9057:23;9065:14;9057:23;:::i;:::-;9049:32;;;8825:492;-1:-1:-1;;;8825:492:7:o;8977:307::-;1004:2;9102:6;:45;9098:186;;9163:23;9189;9197:14;9189:23;:::i;:::-;9163:49;;9233:40;9257:15;9233:23;:40::i;:::-;9226:47;8825:492;-1:-1:-1;;;;8825:492:7:o;10228:333::-;10373:12;10444:96;;;;;;;;10476:7;10444:96;;;;;;10499:9;10444:96;;;;10524:13;10444:96;;;10416:138;;;;;;;;:::i;:::-;;;;;;;;;;;;;10397:157;;10228:333;;;;;:::o;6418:480:1:-;6635:27;;;6591:43;16305:55:84;;6635:27:1;;;16287:74:84;16409:18;16397:31;;16377:18;;;16370:59;6635:27:1;;;;;;;;;6542:19;16260:18:84;;;6635:27:1;;;;-1:-1:-1;;;;6542:19:1;1565:42;;6591:72;;6635:27;6591:72;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6571:92:1;;-1:-1:-1;6571:92:1;-1:-1:-1;6571:92:1;6673:136;;6708:90;;;;;16317:42:84;16305:55;;6708:90:1;;;16287:74:84;16409:18;16397:31;;16377:18;;;16370:59;16260:18;;6708:90:1;16115:320:84;6673:136:1;6836:6;6825:60;;;;;;;;;;;;:::i;:::-;:66;;6418:480;-1:-1:-1;;;;;6418:480:1:o;1676:150:36:-;1738:7;1780:37;282:2;232;1780:4;;:37;:::i;:::-;1772:46;;;:::i;1989:149::-;2054:7;2088:42;335:2;282;2088:4;;:42;:::i;2273:128::-;2337:12;2368:26;:4;335:2;2368:4;;:26;:::i;7490:1461:1:-;7767:26;;;;;7570:12;;7732:32;;7767:4;;:20;;:26;;7788:4;;7767:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7767:26:1;;;;;;;;;;;;:::i;:::-;7732:61;;7803:33;7850:19;7839:54;;;;;;;;;;;;:::i;:::-;7988:15;;8005:19;;;;7971:54;;;;;10719:42:84;10707:55;;;7971:54:1;;;10689:74:84;10779:18;;;10772:34;7988:15:1;;-1:-1:-1;7971:4:1;;:16;;10662:18:84;;7971:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7967:153;;8072:15;;8089:19;;;;;8054:55;;;10719:42:84;10707:55;;;10689:74;;10779:18;;;10772:34;8054:55:1;;10662:18:84;8054:55:1;;;;;;;7967:153;8153:15;;8130:20;;8153:29;;;:59;;8197:15;;8153:59;;;8185:9;8153:59;8318:57;;;;;4657:42:84;4645:55;;8318:57:1;;;4627:74:84;8130:82:1;;-1:-1:-1;8318:4:1;;:23;;8350:9;;4600:18:84;;8318:57:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8314:595;;8482:12;8500:9;:14;;8523:9;8500:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8481:57;;;8556:7;8552:347;;;8588:39;;;10719:42:84;10707:55;;10689:74;;8617:9:1;10794:2:84;10779:18;;10772:34;8588:39:1;;10662:18:84;8588:39:1;;;;;;;8552:347;;;8784:38;;:9;;8807;;8784:38;;;;8807:9;8784;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8845:39:1;;;8863:9;10689:74:84;;8874:9:1;10794:2:84;10779:18;;10772:34;8770:52:1;;-1:-1:-1;8845:39:1;;10662:18:84;8845:39:1;;;;;;;8552:347;8385:524;8314:595;-1:-1:-1;8925:19:1;;;;7490:1461;-1:-1:-1;;;;7490:1461:1:o;1271:160:69:-;1380:43;;;1395:14;10707:55:84;;1380:43:69;;;10689:74:84;10779:18;;;;10772:34;;;1380:43:69;;;;;;;;;;10662:18:84;;;;1380:43:69;;;;;;;;;;;;;;1353:71;;1373:5;;1353:19;:71::i;3017:1788:7:-;3172:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;3172:24:7;3208:17;3235:12;3257:17;3285:32;3320:66;3328:18;533:16;3320:7;:66::i;:::-;3285:101;;4237:1;4216:6;:18;;;:22;;;4212:502;;;4286:174;4352:7;4377:25;4427:6;:18;;;4286:48;:174::i;:::-;4254:206;;-1:-1:-1;4254:206:7;-1:-1:-1;4254:206:7;-1:-1:-1;4212:502:7;;;4523:180;4590:7;4615:25;4670:6;:18;;;4665:2;:23;;;;:::i;:::-;4523:49;:180::i;:::-;4491:212;;-1:-1:-1;4491:212:7;-1:-1:-1;4491:212:7;-1:-1:-1;4212:502:7;-1:-1:-1;4731:67:7;;;;;;;;;;;;;;;;;;;;;;;;;3017:1788;-1:-1:-1;;;;3017:1788:7:o;7738:720:69:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:69;8278:8;8234:16;;-1:-1:-1;8310:15:69;;:68;;8362:11;8377:1;8362:16;;8310:68;;;8328:26;;;;:31;8310:68;8306:146;;;8401:40;;;;;4657:42:84;4645:55;;8401:40:69;;;4627:74:84;4600:18;;8401:40:69;4481:226:84;8306:146:69;7808:650;;7738:720;;:::o;10684:107:7:-;10744:6;10774:1;10770:5;;:1;:5;;;:13;;10782:1;10770:13;;;-1:-1:-1;10778:1:7;10684:107;-1:-1:-1;10684:107:7:o;5356:1098::-;5545:17;;;;5623:23;5629:17;5623:2;:23;:::i;:::-;5607:39;-1:-1:-1;5656:31:7;5690:34;5607:39;5690:34;;;;:::i;:::-;5656:68;-1:-1:-1;5883:15:7;5893:5;5883:7;:15;:::i;:::-;5876:22;-1:-1:-1;5918:14:7;5876:22;5918:7;:14;:::i;:::-;5908:24;;6183:42;6192:7;6201:23;6183:8;:42::i;:::-;6171:54;-1:-1:-1;6250:19:7;6171:54;6250:7;:19;:::i;:::-;6242:28;;:4;:28;:::i;:::-;6235:35;-1:-1:-1;6429:17:7;6441:5;6429:9;:17;:::i;:::-;6409:38;;5597:857;;5356:1098;;;;;;;:::o;6989:915::-;7179:17;;;;7257:23;7263:17;7257:2;:23;:::i;:::-;7241:39;-1:-1:-1;7290:31:7;7324:34;7241:39;7324:34;;;;:::i;:::-;7290:68;;7642:42;7651:7;7660:23;7642:8;:42::i;:::-;7630:54;-1:-1:-1;7701:19:7;7630:54;7701:7;:19;:::i;:::-;7694:26;-1:-1:-1;7879:17:7;7891:5;7879:9;:17;:::i;10567:111::-;10630:7;10661:1;10657;:5;:13;;10669:1;10657:13;;14:347:84;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:84;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:409::-;436:6;444;497:2;485:9;476:7;472:23;468:32;465:52;;;513:1;510;503:12;465:52;553:9;540:23;586:18;578:6;575:30;572:50;;;618:1;615;608:12;572:50;657:58;707:7;698:6;687:9;683:22;657:58;:::i;:::-;734:8;;631:84;;-1:-1:-1;366:409:84;-1:-1:-1;;;;366:409:84:o;780:250::-;865:1;875:113;889:6;886:1;883:13;875:113;;;965:11;;;959:18;946:11;;;939:39;911:2;904:10;875:113;;;-1:-1:-1;;1022:1:84;1004:16;;997:27;780:250::o;1035:329::-;1076:3;1114:5;1108:12;1141:6;1136:3;1129:19;1157:76;1226:6;1219:4;1214:3;1210:14;1203:4;1196:5;1192:16;1157:76;:::i;:::-;1278:2;1266:15;-1:-1:-1;;1262:88:84;1253:98;;;;1353:4;1249:109;;1035:329;-1:-1:-1;;1035:329:84:o;1369:217::-;1516:2;1505:9;1498:21;1479:4;1536:44;1576:2;1565:9;1561:18;1553:6;1536:44;:::i;2235:180::-;2294:6;2347:2;2335:9;2326:7;2322:23;2318:32;2315:52;;;2363:1;2360;2353:12;2315:52;-1:-1:-1;2386:23:84;;2235:180;-1:-1:-1;2235:180:84:o;2625:184::-;2677:77;2674:1;2667:88;2774:4;2771:1;2764:15;2798:4;2795:1;2788:15;2814:251;2886:2;2880:9;2928:2;2916:15;;2961:18;2946:34;;2982:22;;;2943:62;2940:88;;;3008:18;;:::i;:::-;3044:2;3037:22;2814:251;:::o;3070:334::-;3141:2;3135:9;3197:2;3187:13;;-1:-1:-1;;3183:86:84;3171:99;;3300:18;3285:34;;3321:22;;;3282:62;3279:88;;;3347:18;;:::i;:::-;3383:2;3376:22;3070:334;;-1:-1:-1;3070:334:84:o;3409:245::-;3457:4;3490:18;3482:6;3479:30;3476:56;;;3512:18;;:::i;:::-;-1:-1:-1;3569:2:84;3557:15;-1:-1:-1;;3553:88:84;3643:4;3549:99;;3409:245::o;3659:817::-;3745:6;3753;3761;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3870:9;3857:23;3903:18;3895:6;3892:30;3889:50;;;3935:1;3932;3925:12;3889:50;3958:22;;4011:4;4003:13;;3999:27;-1:-1:-1;3989:55:84;;4040:1;4037;4030:12;3989:55;4076:2;4063:16;4101:48;4117:31;4145:2;4117:31;:::i;:::-;4101:48;:::i;:::-;4172:2;4165:5;4158:17;4214:7;4207:4;4202:2;4198;4194:11;4190:22;4187:35;4184:55;;;4235:1;4232;4225:12;4184:55;4294:2;4287:4;4283:2;4279:13;4272:4;4265:5;4261:16;4248:49;4340:1;4333:4;4328:2;4321:5;4317:14;4313:25;4306:36;4361:5;4351:15;;;;;4413:4;4402:9;4398:20;4385:34;4375:44;;4466:2;4455:9;4451:18;4438:32;4428:42;;3659:817;;;;;:::o;5119:154::-;5205:42;5198:5;5194:54;5187:5;5184:65;5174:93;;5263:1;5260;5253:12;5278:129;5363:18;5356:5;5352:30;5345:5;5342:41;5332:69;;5397:1;5394;5387:12;5412:386;5479:6;5487;5540:2;5528:9;5519:7;5515:23;5511:32;5508:52;;;5556:1;5553;5546:12;5508:52;5595:9;5582:23;5614:31;5639:5;5614:31;:::i;:::-;5664:5;-1:-1:-1;5721:2:84;5706:18;;5693:32;5734;5693;5734;:::i;:::-;5785:7;5775:17;;;5412:386;;;;;:::o;5803:247::-;5862:6;5915:2;5903:9;5894:7;5890:23;5886:32;5883:52;;;5931:1;5928;5921:12;5883:52;5970:9;5957:23;5989:31;6014:5;5989:31;:::i;:::-;6039:5;5803:247;-1:-1:-1;;;5803:247:84:o;6055:359::-;6258:6;6247:9;6240:25;6301:6;6296:2;6285:9;6281:18;6274:34;6344:2;6339;6328:9;6324:18;6317:30;6221:4;6364:44;6404:2;6393:9;6389:18;6381:6;6364:44;:::i;6663:1063::-;6780:6;6788;6796;6804;6812;6820;6828;6881:3;6869:9;6860:7;6856:23;6852:33;6849:53;;;6898:1;6895;6888:12;6849:53;6937:9;6924:23;6956:31;6981:5;6956:31;:::i;:::-;7006:5;-1:-1:-1;7058:2:84;7043:18;;7030:32;;-1:-1:-1;7113:2:84;7098:18;;7085:32;7136:18;7166:14;;;7163:34;;;7193:1;7190;7183:12;7163:34;7232:58;7282:7;7273:6;7262:9;7258:22;7232:58;:::i;:::-;7309:8;;-1:-1:-1;7206:84:84;-1:-1:-1;7396:2:84;7381:18;;7368:32;;-1:-1:-1;7409:33:84;7368:32;7409:33;:::i;:::-;7461:7;;-1:-1:-1;7521:3:84;7506:19;;7493:33;;7538:16;;;7535:36;;;7567:1;7564;7557:12;7535:36;;7606:60;7658:7;7647:8;7636:9;7632:24;7606:60;:::i;:::-;6663:1063;;;;-1:-1:-1;6663:1063:84;;-1:-1:-1;6663:1063:84;;;;7580:86;;-1:-1:-1;;;6663:1063:84:o;7731:315::-;7799:6;7807;7860:2;7848:9;7839:7;7835:23;7831:32;7828:52;;;7876:1;7873;7866:12;7828:52;7915:9;7902:23;7934:31;7959:5;7934:31;:::i;:::-;7984:5;8036:2;8021:18;;;;8008:32;;-1:-1:-1;;;7731:315:84:o;8051:456::-;8128:6;8136;8144;8197:2;8185:9;8176:7;8172:23;8168:32;8165:52;;;8213:1;8210;8203:12;8165:52;8252:9;8239:23;8271:31;8296:5;8271:31;:::i;:::-;8321:5;-1:-1:-1;8373:2:84;8358:18;;8345:32;;-1:-1:-1;8429:2:84;8414:18;;8401:32;8442:33;8401:32;8442:33;:::i;:::-;8494:7;8484:17;;;8051:456;;;;;:::o;8512:341::-;8577:6;8585;8638:2;8626:9;8617:7;8613:23;8609:32;8606:52;;;8654:1;8651;8644:12;8606:52;8690:9;8677:23;8667:33;;8750:2;8739:9;8735:18;8722:32;8797:5;8790:13;8783:21;8776:5;8773:32;8763:60;;8819:1;8816;8809:12;9515:492;9690:3;9728:6;9722:13;9744:66;9803:6;9798:3;9791:4;9783:6;9779:17;9744:66;:::i;:::-;9873:13;;9832:16;;;;9895:70;9873:13;9832:16;9942:4;9930:17;;9895:70;:::i;:::-;9981:20;;9515:492;-1:-1:-1;;;;9515:492:84:o;10012:288::-;10187:2;10176:9;10169:21;10150:4;10207:44;10247:2;10236:9;10232:18;10224:6;10207:44;:::i;:::-;10199:52;;10287:6;10282:2;10271:9;10267:18;10260:34;10012:288;;;;;:::o;11149:447::-;11306:2;11295:9;11288:21;11345:6;11340:2;11329:9;11325:18;11318:34;11402:6;11394;11389:2;11378:9;11374:18;11361:48;11458:1;11429:22;;;11453:2;11425:31;;;11418:42;;;;11512:2;11500:15;;;-1:-1:-1;;11496:88:84;11481:104;11477:113;;11149:447;-1:-1:-1;11149:447:84:o;11601:441::-;11654:5;11707:3;11700:4;11692:6;11688:17;11684:27;11674:55;;11725:1;11722;11715:12;11674:55;11754:6;11748:13;11785:48;11801:31;11829:2;11801:31;:::i;11785:48::-;11858:2;11849:7;11842:19;11904:3;11897:4;11892:2;11884:6;11880:15;11876:26;11873:35;11870:55;;;11921:1;11918;11911:12;11870:55;11934:77;12008:2;12001:4;11992:7;11988:18;11981:4;11973:6;11969:17;11934:77;:::i;12047:457::-;12144:6;12152;12160;12213:2;12201:9;12192:7;12188:23;12184:32;12181:52;;;12229:1;12226;12219:12;12181:52;12258:9;12252:16;12242:26;;12308:2;12297:9;12293:18;12287:25;12277:35;;12356:2;12345:9;12341:18;12335:25;12383:18;12375:6;12372:30;12369:50;;;12415:1;12412;12405:12;12369:50;12438:60;12490:7;12481:6;12470:9;12466:22;12438:60;:::i;:::-;12428:70;;;12047:457;;;;;:::o;12509:359::-;12712:2;12701:9;12694:21;12675:4;12732:44;12772:2;12761:9;12757:18;12749:6;12732:44;:::i;:::-;12807:2;12792:18;;12785:34;;;;-1:-1:-1;12850:2:84;12835:18;12828:34;12724:52;12509:359;-1:-1:-1;12509:359:84:o;12873:251::-;12943:6;12996:2;12984:9;12975:7;12971:23;12967:32;12964:52;;;13012:1;13009;13002:12;12964:52;13044:9;13038:16;13063:31;13088:5;13063:31;:::i;13532:504::-;13773:42;13765:6;13761:55;13750:9;13743:74;13865:18;13857:6;13853:31;13848:2;13837:9;13833:18;13826:59;13921:6;13916:2;13905:9;13901:18;13894:34;13964:3;13959:2;13948:9;13944:18;13937:31;13724:4;13985:45;14025:3;14014:9;14010:19;14002:6;13985:45;:::i;:::-;13977:53;13532:504;-1:-1:-1;;;;;;13532:504:84:o;14465:331::-;14570:9;14581;14623:8;14611:10;14608:24;14605:44;;;14645:1;14642;14635:12;14605:44;14674:6;14664:8;14661:20;14658:40;;;14694:1;14691;14684:12;14658:40;-1:-1:-1;;14720:23:84;;;14765:25;;;;;-1:-1:-1;14465:331:84:o;14801:410::-;14885:5;14925;14919:12;14967:4;14960:5;14956:16;14950:23;14992:66;15084:2;15080;15076:11;15067:20;;15110:2;15102:6;15099:14;15096:109;;;15192:2;15186;15176:6;15172:2;15168:15;15165:1;15161:23;15157:32;15153:2;15149:41;15145:50;15136:59;;15096:109;;;;14801:410;;;:::o;15216:357::-;15334:12;;15381:4;15370:16;;;15364:23;;15334:12;15399:16;;15396:171;;;15489:66;15473:4;15469:17;;;;15466:1;15462:25;15458:98;15447:110;;15216:357;-1:-1:-1;15216:357:84:o;15578:532::-;15781:2;15770:9;15763:21;15839:42;15830:6;15824:13;15820:62;15815:2;15804:9;15800:18;15793:90;15937:2;15929:6;15925:15;15919:22;15914:2;15903:9;15899:18;15892:50;15744:4;15989:2;15981:6;15977:15;15971:22;16031:4;16024;16013:9;16009:20;16002:34;16053:51;16099:3;16088:9;16084:19;16070:12;16053:51;:::i;16440:287::-;16569:3;16607:6;16601:13;16623:66;16682:6;16677:3;16670:4;16662:6;16658:17;16623:66;:::i;:::-;16705:16;;;;;16440:287;-1:-1:-1;;16440:287:84:o;16732:618::-;16831:6;16884:2;16872:9;16863:7;16859:23;16855:32;16852:52;;;16900:1;16897;16890:12;16852:52;16926:22;;:::i;:::-;16978:9;16972:16;16997:32;17021:7;16997:32;:::i;:::-;17038:22;;17105:2;17090:18;;17084:25;17118:32;17084:25;17118:32;:::i;:::-;17177:2;17166:14;;17159:31;17235:2;17220:18;;17214:25;17248:32;17214:25;17248:32;:::i;:::-;17307:2;17296:14;;17289:31;17300:5;16732:618;-1:-1:-1;;;16732:618:84:o;17355:315::-;17475:19;;17514:2;17506:11;;17503:161;;;17586:66;17575:2;17571:12;;;17568:1;17564:20;17560:93;17549:105;17355:315;;;;:::o;17675:335::-;17754:6;17807:2;17795:9;17786:7;17782:23;17778:32;17775:52;;;17823:1;17820;17813:12;17775:52;17856:9;17850:16;17889:18;17881:6;17878:30;17875:50;;;17921:1;17918;17911:12;17875:50;17944:60;17996:7;17987:6;17976:9;17972:22;17944:60;:::i;18015:803::-;18122:6;18175:2;18163:9;18154:7;18150:23;18146:32;18143:52;;;18191:1;18188;18181:12;18143:52;18224:9;18218:16;18253:18;18294:2;18286:6;18283:14;18280:34;;;18310:1;18307;18300:12;18280:34;18333:22;;;;18389:4;18371:16;;;18367:27;18364:47;;;18407:1;18404;18397:12;18364:47;18433:22;;:::i;:::-;18485:2;18479:9;18497:33;18522:7;18497:33;:::i;:::-;18539:22;;18607:2;18599:11;;;18593:18;18577:14;;;18570:42;18651:2;18643:11;;18637:18;18667:16;;;18664:36;;;18696:1;18693;18686:12;18664:36;18732:55;18779:7;18768:8;18764:2;18760:17;18732:55;:::i;:::-;18727:2;18716:14;;18709:79;-1:-1:-1;18720:5:84;18015:803;-1:-1:-1;;;;;18015:803:84:o;18823:184::-;18875:77;18872:1;18865:88;18972:4;18969:1;18962:15;18996:4;18993:1;18986:15;19012:237;19050:7;19127:1;19124;19113:16;19109:1;19106;19095:16;19091:39;19164:11;19161:1;19150:26;19139:37;;19207:11;19198:7;19195:24;19185:58;;19223:18;;:::i;:::-;19185:58;19012:237;;;;:::o;19254:476::-;19343:1;19380:5;19343:1;19394:330;19415:7;19405:8;19402:21;19394:330;;;19534:4;19466:66;19462:77;19456:4;19453:87;19450:113;;;19543:18;;:::i;:::-;19593:7;19583:8;19579:22;19576:55;;;19613:16;;;;19576:55;19692:22;;;;19652:15;;;;19394:330;;;19398:3;19254:476;;;;;:::o;19735:866::-;19784:5;19814:8;19804:80;;-1:-1:-1;19855:1:84;19869:5;;19804:80;19903:4;19893:76;;-1:-1:-1;19940:1:84;19954:5;;19893:76;19985:4;20003:1;19998:59;;;;20071:1;20066:130;;;;19978:218;;19998:59;20028:1;20019:10;;20042:5;;;20066:130;20103:3;20093:8;20090:17;20087:43;;;20110:18;;:::i;:::-;-1:-1:-1;;20166:1:84;20152:16;;20181:5;;19978:218;;20280:2;20270:8;20267:16;20261:3;20255:4;20252:13;20248:36;20242:2;20232:8;20229:16;20224:2;20218:4;20215:12;20211:35;20208:77;20205:159;;;-1:-1:-1;20317:19:84;;;20349:5;;20205:159;20396:34;20421:8;20415:4;20396:34;:::i;:::-;20526:6;20458:66;20454:79;20445:7;20442:92;20439:118;;;20537:18;;:::i;:::-;20575:20;;19735:866;-1:-1:-1;;;19735:866:84:o;20606:155::-;20665:5;20694:61;20735:18;20725:8;20721:33;20715:4;20694:61;:::i;20766:168::-;20839:9;;;20870;;20887:15;;;20881:22;;20867:37;20857:71;;20908:18;;:::i;20939:184::-;20991:77;20988:1;20981:88;21088:4;21085:1;21078:15;21112:4;21109:1;21102:15;21128:112;21160:1;21186;21176:35;;21191:18;;:::i;:::-;-1:-1:-1;21225:9:84;;21128:112::o;21245:128::-;21312:9;;;21333:11;;;21330:37;;;21347:18;;:::i;21378:125::-;21443:9;;;21464:10;;;21461:36;;;21477:18;;:::i;21508:120::-;21548:1;21574;21564:35;;21579:18;;:::i;:::-;-1:-1:-1;21613:9:84;;21508:120::o","linkReferences":{},"immutableReferences":{"584":[{"start":1074,"length":32},{"start":2762,"length":32},{"start":2882,"length":32}],"587":[{"start":1412,"length":32},{"start":2958,"length":32},{"start":3077,"length":32}],"590":[{"start":1937,"length":32},{"start":4531,"length":32},{"start":5015,"length":32},{"start":6372,"length":32}]}},"methodIdentifiers":{"CORE_WRITER_VERSION()":"22dbe29c","HLP_CORE_WRITER()":"7ecd9ac3","HLP_PRECOMPILE_READ_SPOT_BALANCE()":"ba872679","HYPE_CHAIN_ID_MAINNET()":"5b9a2373","HYPE_CHAIN_ID_TESTNET()":"20d9af9a","HYPE_INDEX_MAINNET()":"d00b1ad5","HYPE_INDEX_TESTNET()":"bc963bc7","SPOT_SEND_ACTION_ID()":"0d1995e0","SPOT_SEND_HEADER()":"1f8164d9","balanceOfHyperCore(address,uint64)":"81e8dcb4","endpoint()":"5e280f11","fundAddressOnHyperCore(address,uint256,address)":"da001a29","getErrorPayload(bytes)":"03be2050","getHypeAsset()":"aae12e46","getOFTAsset()":"2d0e315c","hypeAsset()":"f6e6b240","hypeIndexByChainId(uint256)":"4bd162df","lzCompose(address,bytes32,bytes,address,bytes)":"d0a10260","oft()":"9b5215f6","oftAsset()":"765008a1","quoteHyperCoreAmount(uint256,bool)":"f9716faf","refundERC20(address,uint256)":"ebaeefd6","refundNativeTokens(address)":"8483bc00","sendAssetToHyperCore(address,uint256)":"d9acf0ec","token()":"fc0c546a","validate_addresses_or_refund(bytes,bytes32,uint256)":"5241b496","validate_message(bytes)":"9180b744"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_endpoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oft\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"_assetDecimalDiff\",\"type\":\"int64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"errorMessage\",\"type\":\"bytes\"}],\"name\":\"ErrorMsg\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"tokenId\",\"type\":\"uint64\"}],\"name\":\"HyperLiquidComposerCore_SpotBalanceRead_Failed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"HyperLiquidComposer_FailedToRefund_HYPE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"HyperLiquidComposer_FailedToSend_HYPE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receivedEndpointAddress\",\"type\":\"address\"}],\"name\":\"HyperLiquidComposer_InvalidArgument_EndpointShouldNotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"notComposerAddress\",\"type\":\"address\"}],\"name\":\"HyperLiquidComposer_InvalidCall_NotComposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"notEndpointAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedEndpointAddress\",\"type\":\"address\"}],\"name\":\"HyperLiquidComposer_InvalidCall_NotEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"internalOFTAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receivedOFTAddress\",\"type\":\"address\"}],\"name\":\"HyperLiquidComposer_InvalidCall_NotOFT\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"errorMessage\",\"type\":\"bytes\"}],\"name\":\"HyperLiquidComposer_InvalidComposeMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"ErrorERC20_Refund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"ErrorHYPE_Refund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"ErrorMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"tokenId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"errorMessage\",\"type\":\"bytes\"}],\"name\":\"ErrorSpot_FailedToSend\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"ExcessHYPE_Refund\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CORE_WRITER_VERSION\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HLP_CORE_WRITER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HLP_PRECOMPILE_READ_SPOT_BALANCE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_CHAIN_ID_MAINNET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_CHAIN_ID_TESTNET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_INDEX_MAINNET\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_INDEX_TESTNET\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SPOT_SEND_ACTION_ID\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SPOT_SEND_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_tokenId\",\"type\":\"uint64\"}],\"name\":\"balanceOfHyperCore\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"}],\"name\":\"fundAddressOnHyperCore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_err\",\"type\":\"bytes\"}],\"name\":\"getErrorPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHypeAsset\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"internalType\":\"struct IHyperAsset\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOFTAsset\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"internalType\":\"struct IHyperAsset\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hypeAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"hypeIndexByChainId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oft\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oft\",\"outputs\":[{\"internalType\":\"contract IOFT\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isOFT\",\"type\":\"bool\"}],\"name\":\"quoteHyperCoreAmount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"evm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dust\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"core\",\"type\":\"uint64\"}],\"internalType\":\"struct IHyperAssetAmount\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"refundERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"refundNativeTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountLD\",\"type\":\"uint256\"}],\"name\":\"sendAssetToHyperCore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_maybeReceiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_senderBytes32\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amountLD\",\"type\":\"uint256\"}],\"name\":\"validate_addresses_or_refund\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_composeMessage\",\"type\":\"bytes\"}],\"name\":\"validate_message\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"balanceOfHyperCore(address,uint64)\":{\"params\":{\"_tokenId\":\"The token id of the hypercore\",\"_user\":\"The address of the user\"},\"returns\":{\"_0\":\"The balance of the user in the hypercore\"}},\"constructor\":{\"details\":\"This constructor is called by the `HyperLiquidOFT` contractPost deployment, this address needs to be approved (via approveCaller) by the `owner` of the `HyperLiquidOFT` contract to call the `transferToHyperLiquidL1` function\",\"params\":{\"_assetDecimalDiff\":\"The difference in decimals between the HyperEVM OFT deployment and HyperLiquid L1 HIP-1 listing\",\"_coreIndexId\":\"The core index id of the HyperLiquid L1 contract\",\"_endpoint\":\"The LayerZero endpoint address\",\"_oft\":\"The OFT contract address associated with this composer\"}},\"fundAddressOnHyperCore(address,uint256,address)\":{\"details\":\"The composer transfers HYPE that is received from the lzCompose call to it's address on HyperCoreThe composer then transfers the HYPE from it's address on HyperCore to the _receiver via the SpotSend precompileThe SpotSend precompile is a precompile on HyperEVM that allows for token transfers on HyperCore\",\"params\":{\"_amount\":\"The amount of HYPE tokens to send\",\"_receiver\":\"The address of the receiver\"}},\"getErrorPayload(bytes)\":{\"details\":\"Strips out the revert message to extract the payload ErrorMsg(bytes errorMessage) - ('0x' + 32 bytes) * 2 = 64 bytes\",\"params\":{\"_err\":\"The bytes array to extract the error payload from\"},\"returns\":{\"_0\":\"The error payload\"}},\"lzCompose(address,bytes32,bytes,address,bytes)\":{\"details\":\"This function is called by the OFTCore contract when a message is sent\",\"params\":{\"_executor\":\"The address that called EndpointV2::lzCompose()\",\"_message\":\"The encoded message content, expected to contain a composeMsg that decodes to type: (address receiver).\",\"_oft\":\"The address of the OFT contract.\"}},\"quoteHyperCoreAmount(uint256,bool)\":{\"params\":{\"_amount\":\"The amount of tokens to send\",\"_isOFT\":\"Whether the amount is an OFT amount or a HYPE amount\"},\"returns\":{\"_0\":\"IHyperAssetAmount - The amount of tokens to send to HyperCore (scaled on evm), dust (to be refunded), and the swap amount (of the tokens scaled on hypercore)\"}},\"refundERC20(address,uint256)\":{\"details\":\"If the refund address is set to the zero address - it means that the transaction sender is a non-evm address and the receiver is malformed.In this case, the tokens are locked in the composer.\",\"params\":{\"_amount\":\"The amount of tokens to refund\",\"_refundAddress\":\"The address to refund the ERC20 tokens to\"}},\"refundNativeTokens(address)\":{\"details\":\"It is possible that the refund address is a contract without fallback or receive functions - in that case the transfer fails and tokens will be locked in the contract.Since this is an external function - the msg.value can be different to the msg.value sent to the lzCompose function by tx.originIt is different in the case of a partial refund where the call is:`this.refundNativeTokens{ value: amounts.dust }(_receiver)`In this case, the msg.value is the amount of the dust and not the msg.value sent to the lzCompose function by tx.origin\",\"params\":{\"_refundAddress\":\"The address to refund the native tokens to\"}},\"sendAssetToHyperCore(address,uint256)\":{\"details\":\"The composer transfers the tokens to it's address on HyperCoreThe composer then transfers the tokens from it's address on HyperCore to the _receiver via the SpotSend precompileThe SpotSend precompile is a precompile on HyperEVM that allows for token transfers on HyperCoreThe transfer to HyperCore via the assetBridgeAddress and the SpotSend precompile is done in the same transactionHyperliquid guarantees sequential transactions but not atomicity of the transfer.Transfers are primitive transactions and are always expected to pass.\",\"params\":{\"_amountLD\":\"The amount of tokens to send\",\"_receiver\":\"The address of the receiver\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOfHyperCore(address,uint64)\":{\"notice\":\"External function to read the balance of the user in the hypercore\"},\"constructor\":{\"notice\":\"Constructor for the HyperLiquidComposer contractThis only supports ERC20 tokens\"},\"fundAddressOnHyperCore(address,uint256,address)\":{\"notice\":\"Funds the address on HyperCore with the amount of HYPE tokensThis function is called by the lzCompose functionThis is a precompile which makes it different to _sendAssetToHyperCore\"},\"getErrorPayload(bytes)\":{\"notice\":\"Extracts the error payload from a bytes arrayThis function is called by the HyperLiquidComposer contract\"},\"lzCompose(address,bytes32,bytes,address,bytes)\":{\"notice\":\"Composes a message to be sent to the HyperLiquidComposerThis function is the only new addition to the OFT standard\"},\"quoteHyperCoreAmount(uint256,bool)\":{\"notice\":\"External function to quote the conversion of evm tokens to hypercore tokens\"},\"refundERC20(address,uint256)\":{\"notice\":\"Refunds the ERC20 tokens to the refund addressThis function is called by the refundTokens function\"},\"refundNativeTokens(address)\":{\"notice\":\"Refunds the native tokens to the refund addressThis function is called by the refundTokens function\"},\"sendAssetToHyperCore(address,uint256)\":{\"notice\":\"Transfers the asset to the _receiver on HyperCore through the SpotSend precompileTransfers any leftover dust to the _receiverThis function is called by the lzCompose function\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/HyperLiquidComposer.sol\":\"HyperLiquidComposer\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":hardhat/=node_modules/hardhat/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/HyperLiquidComposer.sol\":{\"keccak256\":\"0x0db89c595d740c0cdaa4f47fbc55440ea3185026c5da67bb8c68792eae25cd86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f27a7be7c345f95a8ee074eceb0c65724e608c09a9b59c35ed21d065fe75c5b2\",\"dweb:/ipfs/QmSJDhyeU2GkDPj7iBkkJE9pJCVAiEtQLgH5EmPqegJYzL\"]},\"contracts/HyperLiquidComposerCore.sol\":{\"keccak256\":\"0xb4f46777d68405b375325b28dc5beff5c682fa03476b576101b474cd8aea761e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61ee6c72bd4120d066ed5cb7b80b784a56e5980eaf086bec009408f89dc1228a\",\"dweb:/ipfs/QmZuHbHVDFHk2wSubAouxjNGEMrZNNfPT1Pew3UVPMqk9Q\"]},\"contracts/interfaces/ICoreWriter.sol\":{\"keccak256\":\"0x8faa15935746558808a46034a124ae465b941a68a5a723d2ba474400bb412eb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://417cfcca8b2324b7894f809a3347fe367afe8a12f32b271bb63d39e4d577f76c\",\"dweb:/ipfs/QmTQpC2KUJfk1Gdt5Y6tNLCdJSBpjGLcswoNGrcHVgEm7k\"]},\"contracts/interfaces/IHyperLiquidComposerCore.sol\":{\"keccak256\":\"0x33755a174cead02c8cb31ff8fa5ed9c72594c41538e7a4c84ee50e93fa0900d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a20aa9d707e340b63d7aadb47354cd70d11b958113f10b0042dab4a29dd4640\",\"dweb:/ipfs/QmWnyLZrAQVSBsFBsePQakpRs9VJ5yVCSrV1gF8QQpH3TC\"]},\"contracts/interfaces/IHyperLiquidComposerErrors.sol\":{\"keccak256\":\"0x49a19161f2daf10880cd130bc098222d48774973b3a3df3cb4fbc30ba4015c10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265f8eaab7ba5c2aac6d4b71dd416b4b59f06f743e97fa3d4a6d6ffd69be23ec\",\"dweb:/ipfs/QmQKJRdAPvexsNtASwJozZNmV365kNP1ZVqknF1w8KprAJ\"]},\"contracts/interfaces/IHyperLiquidReadPrecompile.sol\":{\"keccak256\":\"0x3a6df8d89dca4f7547bbdc912c92315020f88b50c648c55f04fcb3ecb47d9ae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://836bc90fe0705ca588329e218253e375bc76752d762b76e31c5f568be1b9409f\",\"dweb:/ipfs/QmYMRCYqsKho9fHZcC8f4JBPSxx9p6a4zLL7nX8CDoZsXc\"]},\"contracts/library/HyperLiquidComposerCodec.sol\":{\"keccak256\":\"0x8bc30169039c218cb4a47098bc607b41d7630ae36f27cb29481befb32fc47366\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f18928ec2d8b30f233fd0828edc3fbce337ed36a6a4c12c40276d9547062be52\",\"dweb:/ipfs/QmcjKkLEpQUVw7YTzVdq8HJjEYkE5CkaBEBRguV18cjSjW\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol\":{\"keccak256\":\"0xe5014c411acb2b59dd74ae74a1bab02cf32d94a41a548a5ab553d64aeeb55dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dfb7bc121002fc7e7931c34eb17af0ae0f0127dcc3199511c83a58a917160d\",\"dweb:/ipfs/QmPdq1wcRRBdUP169LHCLoLuPRunN9eR71TQN42FjGpowx\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4\",\"dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs\"]},\"node_modules/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.22+commit.4fc1097e"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_endpoint","type":"address"},{"internalType":"address","name":"_oft","type":"address"},{"internalType":"uint64","name":"_coreIndexId","type":"uint64"},{"internalType":"int64","name":"_assetDecimalDiff","type":"int64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"errorMessage","type":"bytes"}],"type":"error","name":"ErrorMsg"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint64","name":"tokenId","type":"uint64"}],"type":"error","name":"HyperLiquidComposerCore_SpotBalanceRead_Failed"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"HyperLiquidComposer_FailedToRefund_HYPE"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"HyperLiquidComposer_FailedToSend_HYPE"},{"inputs":[{"internalType":"address","name":"receivedEndpointAddress","type":"address"}],"type":"error","name":"HyperLiquidComposer_InvalidArgument_EndpointShouldNotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"notComposerAddress","type":"address"}],"type":"error","name":"HyperLiquidComposer_InvalidCall_NotComposer"},{"inputs":[{"internalType":"address","name":"notEndpointAddress","type":"address"},{"internalType":"address","name":"expectedEndpointAddress","type":"address"}],"type":"error","name":"HyperLiquidComposer_InvalidCall_NotEndpoint"},{"inputs":[{"internalType":"address","name":"internalOFTAddress","type":"address"},{"internalType":"address","name":"receivedOFTAddress","type":"address"}],"type":"error","name":"HyperLiquidComposer_InvalidCall_NotOFT"},{"inputs":[{"internalType":"bytes","name":"errorMessage","type":"bytes"}],"type":"error","name":"HyperLiquidComposer_InvalidComposeMessage"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"refundTo","type":"address","indexed":false},{"internalType":"uint256","name":"refundAmount","type":"uint256","indexed":false}],"type":"event","name":"ErrorERC20_Refund","anonymous":false},{"inputs":[{"internalType":"address","name":"refundTo","type":"address","indexed":false},{"internalType":"uint256","name":"refundAmount","type":"uint256","indexed":false}],"type":"event","name":"ErrorHYPE_Refund","anonymous":false},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes","indexed":false}],"type":"event","name":"ErrorMessage","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint64","name":"tokenId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"errorMessage","type":"bytes","indexed":false}],"type":"event","name":"ErrorSpot_FailedToSend","anonymous":false},{"inputs":[{"internalType":"address","name":"refundTo","type":"address","indexed":false},{"internalType":"uint256","name":"refundAmount","type":"uint256","indexed":false}],"type":"event","name":"ExcessHYPE_Refund","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"CORE_WRITER_VERSION","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HLP_CORE_WRITER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_CHAIN_ID_MAINNET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_CHAIN_ID_TESTNET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_INDEX_MAINNET","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_INDEX_TESTNET","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SPOT_SEND_ACTION_ID","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SPOT_SEND_HEADER","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint64","name":"_tokenId","type":"uint64"}],"stateMutability":"view","type":"function","name":"balanceOfHyperCore","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"endpoint","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_executor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fundAddressOnHyperCore"},{"inputs":[{"internalType":"bytes","name":"_err","type":"bytes"}],"stateMutability":"pure","type":"function","name":"getErrorPayload","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getHypeAsset","outputs":[{"internalType":"struct IHyperAsset","name":"","type":"tuple","components":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOFTAsset","outputs":[{"internalType":"struct IHyperAsset","name":"","type":"tuple","components":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hypeAsset","outputs":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"hypeIndexByChainId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"_oft","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function","name":"lzCompose"},{"inputs":[],"stateMutability":"view","type":"function","name":"oft","outputs":[{"internalType":"contract IOFT","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oftAsset","outputs":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_isOFT","type":"bool"}],"stateMutability":"view","type":"function","name":"quoteHyperCoreAmount","outputs":[{"internalType":"struct IHyperAssetAmount","name":"","type":"tuple","components":[{"internalType":"uint256","name":"evm","type":"uint256"},{"internalType":"uint256","name":"dust","type":"uint256"},{"internalType":"uint64","name":"core","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"refundERC20"},{"inputs":[{"internalType":"address","name":"_refundAddress","type":"address"}],"stateMutability":"payable","type":"function","name":"refundNativeTokens"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amountLD","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sendAssetToHyperCore"},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_maybeReceiver","type":"bytes"},{"internalType":"bytes32","name":"_senderBytes32","type":"bytes32"},{"internalType":"uint256","name":"_amountLD","type":"uint256"}],"stateMutability":"pure","type":"function","name":"validate_addresses_or_refund","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_composeMessage","type":"bytes"}],"stateMutability":"pure","type":"function","name":"validate_message","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"balanceOfHyperCore(address,uint64)":{"params":{"_tokenId":"The token id of the hypercore","_user":"The address of the user"},"returns":{"_0":"The balance of the user in the hypercore"}},"constructor":{"details":"This constructor is called by the `HyperLiquidOFT` contractPost deployment, this address needs to be approved (via approveCaller) by the `owner` of the `HyperLiquidOFT` contract to call the `transferToHyperLiquidL1` function","params":{"_assetDecimalDiff":"The difference in decimals between the HyperEVM OFT deployment and HyperLiquid L1 HIP-1 listing","_coreIndexId":"The core index id of the HyperLiquid L1 contract","_endpoint":"The LayerZero endpoint address","_oft":"The OFT contract address associated with this composer"}},"fundAddressOnHyperCore(address,uint256,address)":{"details":"The composer transfers HYPE that is received from the lzCompose call to it's address on HyperCoreThe composer then transfers the HYPE from it's address on HyperCore to the _receiver via the SpotSend precompileThe SpotSend precompile is a precompile on HyperEVM that allows for token transfers on HyperCore","params":{"_amount":"The amount of HYPE tokens to send","_receiver":"The address of the receiver"}},"getErrorPayload(bytes)":{"details":"Strips out the revert message to extract the payload ErrorMsg(bytes errorMessage) - ('0x' + 32 bytes) * 2 = 64 bytes","params":{"_err":"The bytes array to extract the error payload from"},"returns":{"_0":"The error payload"}},"lzCompose(address,bytes32,bytes,address,bytes)":{"details":"This function is called by the OFTCore contract when a message is sent","params":{"_executor":"The address that called EndpointV2::lzCompose()","_message":"The encoded message content, expected to contain a composeMsg that decodes to type: (address receiver).","_oft":"The address of the OFT contract."}},"quoteHyperCoreAmount(uint256,bool)":{"params":{"_amount":"The amount of tokens to send","_isOFT":"Whether the amount is an OFT amount or a HYPE amount"},"returns":{"_0":"IHyperAssetAmount - The amount of tokens to send to HyperCore (scaled on evm), dust (to be refunded), and the swap amount (of the tokens scaled on hypercore)"}},"refundERC20(address,uint256)":{"details":"If the refund address is set to the zero address - it means that the transaction sender is a non-evm address and the receiver is malformed.In this case, the tokens are locked in the composer.","params":{"_amount":"The amount of tokens to refund","_refundAddress":"The address to refund the ERC20 tokens to"}},"refundNativeTokens(address)":{"details":"It is possible that the refund address is a contract without fallback or receive functions - in that case the transfer fails and tokens will be locked in the contract.Since this is an external function - the msg.value can be different to the msg.value sent to the lzCompose function by tx.originIt is different in the case of a partial refund where the call is:`this.refundNativeTokens{ value: amounts.dust }(_receiver)`In this case, the msg.value is the amount of the dust and not the msg.value sent to the lzCompose function by tx.origin","params":{"_refundAddress":"The address to refund the native tokens to"}},"sendAssetToHyperCore(address,uint256)":{"details":"The composer transfers the tokens to it's address on HyperCoreThe composer then transfers the tokens from it's address on HyperCore to the _receiver via the SpotSend precompileThe SpotSend precompile is a precompile on HyperEVM that allows for token transfers on HyperCoreThe transfer to HyperCore via the assetBridgeAddress and the SpotSend precompile is done in the same transactionHyperliquid guarantees sequential transactions but not atomicity of the transfer.Transfers are primitive transactions and are always expected to pass.","params":{"_amountLD":"The amount of tokens to send","_receiver":"The address of the receiver"}}},"version":1},"userdoc":{"kind":"user","methods":{"balanceOfHyperCore(address,uint64)":{"notice":"External function to read the balance of the user in the hypercore"},"constructor":{"notice":"Constructor for the HyperLiquidComposer contractThis only supports ERC20 tokens"},"fundAddressOnHyperCore(address,uint256,address)":{"notice":"Funds the address on HyperCore with the amount of HYPE tokensThis function is called by the lzCompose functionThis is a precompile which makes it different to _sendAssetToHyperCore"},"getErrorPayload(bytes)":{"notice":"Extracts the error payload from a bytes arrayThis function is called by the HyperLiquidComposer contract"},"lzCompose(address,bytes32,bytes,address,bytes)":{"notice":"Composes a message to be sent to the HyperLiquidComposerThis function is the only new addition to the OFT standard"},"quoteHyperCoreAmount(uint256,bool)":{"notice":"External function to quote the conversion of evm tokens to hypercore tokens"},"refundERC20(address,uint256)":{"notice":"Refunds the ERC20 tokens to the refund addressThis function is called by the refundTokens function"},"refundNativeTokens(address)":{"notice":"Refunds the native tokens to the refund addressThis function is called by the refundTokens function"},"sendAssetToHyperCore(address,uint256)":{"notice":"Transfers the asset to the _receiver on HyperCore through the SpotSend precompileTransfers any leftover dust to the _receiverThis function is called by the lzCompose function"}},"version":1}},"settings":{"remappings":["@layerzerolabs/=node_modules/@layerzerolabs/","@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/","forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/","hardhat/=node_modules/hardhat/","solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/HyperLiquidComposer.sol":"HyperLiquidComposer"},"evmVersion":"shanghai","libraries":{}},"sources":{"contracts/HyperLiquidComposer.sol":{"keccak256":"0x0db89c595d740c0cdaa4f47fbc55440ea3185026c5da67bb8c68792eae25cd86","urls":["bzz-raw://f27a7be7c345f95a8ee074eceb0c65724e608c09a9b59c35ed21d065fe75c5b2","dweb:/ipfs/QmSJDhyeU2GkDPj7iBkkJE9pJCVAiEtQLgH5EmPqegJYzL"],"license":"MIT"},"contracts/HyperLiquidComposerCore.sol":{"keccak256":"0xb4f46777d68405b375325b28dc5beff5c682fa03476b576101b474cd8aea761e","urls":["bzz-raw://61ee6c72bd4120d066ed5cb7b80b784a56e5980eaf086bec009408f89dc1228a","dweb:/ipfs/QmZuHbHVDFHk2wSubAouxjNGEMrZNNfPT1Pew3UVPMqk9Q"],"license":"MIT"},"contracts/interfaces/ICoreWriter.sol":{"keccak256":"0x8faa15935746558808a46034a124ae465b941a68a5a723d2ba474400bb412eb3","urls":["bzz-raw://417cfcca8b2324b7894f809a3347fe367afe8a12f32b271bb63d39e4d577f76c","dweb:/ipfs/QmTQpC2KUJfk1Gdt5Y6tNLCdJSBpjGLcswoNGrcHVgEm7k"],"license":"MIT"},"contracts/interfaces/IHyperLiquidComposerCore.sol":{"keccak256":"0x33755a174cead02c8cb31ff8fa5ed9c72594c41538e7a4c84ee50e93fa0900d9","urls":["bzz-raw://0a20aa9d707e340b63d7aadb47354cd70d11b958113f10b0042dab4a29dd4640","dweb:/ipfs/QmWnyLZrAQVSBsFBsePQakpRs9VJ5yVCSrV1gF8QQpH3TC"],"license":"MIT"},"contracts/interfaces/IHyperLiquidComposerErrors.sol":{"keccak256":"0x49a19161f2daf10880cd130bc098222d48774973b3a3df3cb4fbc30ba4015c10","urls":["bzz-raw://265f8eaab7ba5c2aac6d4b71dd416b4b59f06f743e97fa3d4a6d6ffd69be23ec","dweb:/ipfs/QmQKJRdAPvexsNtASwJozZNmV365kNP1ZVqknF1w8KprAJ"],"license":"MIT"},"contracts/interfaces/IHyperLiquidReadPrecompile.sol":{"keccak256":"0x3a6df8d89dca4f7547bbdc912c92315020f88b50c648c55f04fcb3ecb47d9ae0","urls":["bzz-raw://836bc90fe0705ca588329e218253e375bc76752d762b76e31c5f568be1b9409f","dweb:/ipfs/QmYMRCYqsKho9fHZcC8f4JBPSxx9p6a4zLL7nX8CDoZsXc"],"license":"MIT"},"contracts/library/HyperLiquidComposerCodec.sol":{"keccak256":"0x8bc30169039c218cb4a47098bc607b41d7630ae36f27cb29481befb32fc47366","urls":["bzz-raw://f18928ec2d8b30f233fd0828edc3fbce337ed36a6a4c12c40276d9547062be52","dweb:/ipfs/QmcjKkLEpQUVw7YTzVdq8HJjEYkE5CkaBEBRguV18cjSjW"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol":{"keccak256":"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49","urls":["bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf","dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"keccak256":"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3","urls":["bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083","dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"keccak256":"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc","urls":["bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b","dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"keccak256":"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972","urls":["bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927","dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"keccak256":"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901","urls":["bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d","dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"keccak256":"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e","urls":["bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6","dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"keccak256":"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc","urls":["bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0","dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"keccak256":"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20","urls":["bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2","dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol":{"keccak256":"0xe5014c411acb2b59dd74ae74a1bab02cf32d94a41a548a5ab553d64aeeb55dae","urls":["bzz-raw://29dfb7bc121002fc7e7931c34eb17af0ae0f0127dcc3199511c83a58a917160d","dweb:/ipfs/QmPdq1wcRRBdUP169LHCLoLuPRunN9eR71TQN42FjGpowx"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"keccak256":"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58","urls":["bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd","dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv"],"license":"MIT"},"node_modules/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"keccak256":"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8","urls":["bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4","dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs"],"license":"MIT"},"node_modules/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"keccak256":"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5","urls":["bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e","dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"}},"version":1},"id":0}