0 txs
21 calls
constructor
constructor()
functions
BASIS_POINTS
viewfunction BASIS_POINTS() view returns (uint16)
BNB
viewfunction BNB() view returns (address)
BTCB
viewfunction BTCB() view returns (address)
currentToken
viewfunction currentToken() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositAmount
viewfunction depositAmount() view returns (uint256)
depositToken
viewfunction depositToken() view returns (address)
ETH
viewfunction ETH() view returns (address)
EXECUTOR_ROLE
viewfunction EXECUTOR_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
OWNER_ROLE
viewfunction OWNER_ROLE() view returns (bytes32)
POOL_FEE
viewfunction POOL_FEE() view returns (uint24)
profitFee
viewfunction profitFee() view returns (uint16)
profitFeeRecipient
viewfunction profitFeeRecipient() view returns (address)
QUOTER_V2
viewfunction QUOTER_V2() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
SWAP_ROUTER
viewfunction SWAP_ROUTER() view returns (address)
swapFee
viewfunction swapFee() view returns (uint16)
swapFeeRecipient
viewfunction swapFeeRecipient() view returns (address)
tradingPoolFactory
viewfunction tradingPoolFactory() view returns (address)
tradingTime
viewfunction tradingTime() view returns (uint256)
WBNB
viewfunction WBNB() view returns (address)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address defaultAdmin_, address[] executors_, address operator_, address owner_, address tradingPoolFactory_, uint16 swapFee_, address swapFeeRecipient_, uint16 profitFee_, address profitFeeRecipient_, address depositToken_, uint256 depositAmount_, uint256 tradingTime_)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
restart
nonpayablefunction restart(uint256 minAmountOut_)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setProfitFee
nonpayablefunction setProfitFee(uint16 profitFee_, address profitFeeRecipient_)
setSwapFee
nonpayablefunction setSwapFee(uint16 swapFee_, address swapFeeRecipient_)
swap
nonpayablefunction swap(bytes32 swapId_, address tokenOut_, uint256 minAmountOut_)
withdraw
nonpayablefunction withdraw(bool isWithdrawCurrentToken_, bool isTakeProfit_, uint256 minAmountOut_)
events
Initialized
event Initialized(uint64 version)
ProfitFeeSet
event ProfitFeeSet(uint16 profitFee, address profitFeeRecipient)
Restarted
event Restarted(address currentToken, address depositToken, uint256 withdrawAmount, uint256 profitFeeAmount, uint256 swapFeeAmount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SwapFeeSet
event SwapFeeSet(uint16 swapFee, address swapFeeRecipient)
Swapped
event Swapped(bytes32 swapId, address tokenIn, address tokenOut, uint256 tokenInAmount, uint256 tokenOutAmount, uint256 swapFeeAmount)
Withdrawn
event Withdrawn(bool isWithdrawCurrentToken, bool isTakeProfit, address currentToken, address depositToken, uint256 withdrawAmount, uint256 profitFeeAmount, uint256 swapFeeAmount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ExistedSwapId
error ExistedSwapId()
ExistedTradingPoolOwner
error ExistedTradingPoolOwner()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
InvalidTokenOut
error InvalidTokenOut()
InvalidWithdrawProfit
error InvalidWithdrawProfit()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080806040523460aa575f5160206133a65f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b6040516132f790816100af8239f35b6001600160401b0319166001600160401b039081175f5160206133a65f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a714611eb75750806307bd026514611e5f57806312b3e09614611c095780631801f38e1461194c578063248a9ca3146118db5780632f2ff15d1461185f57806336568abe146117d6578063419759f51461179a5780634a1f600e1461166d57806354cf2aeb1461162b57806357801570146110ed578063579d0c46146110a057806358f7f6d21461067d5780635e5ada351461104e57806360478b8f14610a4d5780638322fff214610a00578063836c081d146109ae5780638dd95002146109615780638e32903a146109105780639010d07c1461088157806391d14854146107ec57806393d1e49d146106b7578063a217fddf1461067d578063a3246ad314610583578063b8158d6014610547578063c6005893146104fa578063c89039c5146104a8578063ca15c87314610441578063cf8074be146103ef578063d547741f1461036a578063dd1b9c4a1461032f578063e1f1c4a7146102f4578063e58378bb1461029b578063e9c9f44f1461024e578063f5b541a6146101f55763f90766a60361000f57346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602061ffff60015460a01c16604051908152f35b80fd5b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576020604051737130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c8152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760206040517fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e8152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760206040516127108152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760206040516101f48152f35b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576103eb6004356103a8611fa6565b906103e66103e1825f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052600160405f20015490565b612192565b612bd0565b5080f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b50346101f25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257604060209160043581527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200083522054604051908152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576020604051731b81d678ffb9c0263b24a97847620c99d213eb148152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576020600554604051908152f35b50346101f25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760043581527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205260408120604051908160208254918281520190819285526020852090855b8181106106675750505082610610910383612014565b604051928392602084019060208552518091526040840192915b818110610638575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff1684528594506020938401939092019160010161062a565b82548452602090930192600192830192016105fa565b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602090604051908152f35b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2577fcb9df602920903df0c7e06908e5dd6d8071de094b4a7c351399f8ed4bac8417c61ffff610713611fc9565b6107e673ffffffffffffffffffffffffffffffffffffffff610733611fa6565b9261073c61210a565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff00000000000000000000000000000000000000006001549260a01b16911617928360015516807fffffffffffffffffffffffff0000000000000000000000000000000000000000600254161760025560405193849360a01c168390929173ffffffffffffffffffffffffffffffffffffffff60209161ffff604085019616845216910152565b0390a180f35b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25773ffffffffffffffffffffffffffffffffffffffff604061083b611fa6565b9260043581527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020522091165f52602052602060ff60405f2054166040519015158152f35b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25773ffffffffffffffffffffffffffffffffffffffff61090060209260043581527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000845260406024359120612d9c565b90549060031b1c16604051908152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602060405173bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c8152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602073ffffffffffffffffffffffffffffffffffffffff60065416604051908152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576020604051732170ed0880ac9a755fd29b2688956bd959f933f88152f35b50346101f25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760043580151580820361104a57602435918215928315808203610c8a57610aa2612082565b73ffffffffffffffffffffffffffffffffffffffff60065416610ac481612218565b908790889573ffffffffffffffffffffffffffffffffffffffff60035416908183145f14610cdd57505050600454908183115f14610cad5750610b219073ffffffffffffffffffffffffffffffffffffffff600654169083612748565b909181945f14610c9d5750610b3591611fda565b945b610b5b8673ffffffffffffffffffffffffffffffffffffffff600654163390612c30565b610be3575b907f01c7db56b041d36da32acc38f929192b356bfd516c974c8bcdd3ec65f2df1d209460e094939273ffffffffffffffffffffffffffffffffffffffff6006541673ffffffffffffffffffffffffffffffffffffffff6003541691604051968752602087015260408601526060850152608084015260a083015260c0820152a180f35b8573ffffffffffffffffffffffffffffffffffffffff81541660055473ffffffffffffffffffffffffffffffffffffffff60035416823b15610c9957604484928360405195869485937fec1302e3000000000000000000000000000000000000000000000000000000008552600485015260248401525af18015610c8e57610c6d575b5050610b60565b81610c7c919695949396612014565b610c8a57909192855f610c66565b8580fd5b6040513d84823e3d90fd5b8380fd5b610ca79250611fda565b94610b37565b93159050610ca7576004877fec457670000000000000000000000000000000000000000000000000000000008152fd5b15610f8957505060035473ffffffffffffffffffffffffffffffffffffffff1680610f83575073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c905b60065473ffffffffffffffffffffffffffffffffffffffff1680610f7e575073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c5b6004546040519360a0850185811067ffffffffffffffff821117610f5157928c9273ffffffffffffffffffffffffffffffffffffffff62ffffff938196604052168752846020880192168252604087019081528460608801926101f484526080890195865281604051997fc6a5026a000000000000000000000000000000000000000000000000000000008b52511660048a015251166024880152516044870152511660648501525116608483015260808260a4818c73b048bbc1ee6b733fffcfb9e9cef7375518e259975af1918215610f46578992610ed7575b5082821115610ea75750610e58908273ffffffffffffffffffffffffffffffffffffffff6006541691612748565b909181945f14610e975750610e6c91611fda565b945b610e928673ffffffffffffffffffffffffffffffffffffffff600654163390612c30565b610b5b565b610ea19250611fda565b94610e6e565b93159050610ea1576004877fec457670000000000000000000000000000000000000000000000000000000008152fd5b9091506080813d608011610f3e575b81610ef360809383612014565b81010312610f3657805190602081015173ffffffffffffffffffffffffffffffffffffffff811603610f3a576040015163ffffffff811603610f3657905f610e2a565b8880fd5b8980fd5b3d9150610ee6565b6040513d8b823e3d90fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610d4f565b90610d1a565b610f9a939192965060443592612318565b90915093600454908183115f1461101a5750610fd09073ffffffffffffffffffffffffffffffffffffffff600354169083612748565b909181945f1461100a5750610fe491611fda565b945b610e928673ffffffffffffffffffffffffffffffffffffffff600354163390612c30565b6110149250611fda565b94610fe6565b93159050611014576004877fec457670000000000000000000000000000000000000000000000000000000008152fd5b8280fd5b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f257602060405173b048bbc1ee6b733fffcfb9e9cef7375518e259978152f35b50346101f2576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760043573ffffffffffffffffffffffffffffffffffffffff811681036116275760243567ffffffffffffffff811161104a573660238201121561104a5780600401359167ffffffffffffffff8311610c99573660248460051b84010111610c995760443573ffffffffffffffffffffffffffffffffffffffff811681036116235760643573ffffffffffffffffffffffffffffffffffffffff81168103610c8a5760843573ffffffffffffffffffffffffffffffffffffffff811680910361161f5760a43561ffff8116810361161b5760c4359073ffffffffffffffffffffffffffffffffffffffff8216809203610f365760e4359261ffff84168403610f3a57610104359473ffffffffffffffffffffffffffffffffffffffff861680960361161757610124359673ffffffffffffffffffffffffffffffffffffffff8816809803611613577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549860ff8a60401c16159967ffffffffffffffff81168015908161160b575b6001149081611601575b1590816115f8575b506115d0578a60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005561157b575b5060ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156115535761134190612790565b508b5b8b81101561138a5760248160051b8c0101359073ffffffffffffffffffffffffffffffffffffffff821682036113865761137f60019261280f565b5001611344565b8d80fd5b508b99509061139b6113a1926128ca565b50612985565b507fffffffffffffffffffff0000000000000000000000000000000000000000000075ffff000000000000000000000000000000000000000089549360a01b169216171786557fffffffffffffffffffff0000000000000000000000000000000000000000000075ffff00000000000000000000000000000000000000006001549360a01b16921617176001557fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255807fffffffffffffffffffffffff0000000000000000000000000000000000000000600354161760035561014435600455610164356005557fffffffffffffffffffffffff000000000000000000000000000000000000000060065416176006556114bf5780f35b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60048d7fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00555f61130a565b60048e7ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f6112b7565b303b1591506112af565b8c91506112a5565b8b80fd5b8a80fd5b8780fd5b8680fd5b8480fd5b5080fd5b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25761ffff6020915460a01c16604051908152f35b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2577fa7787b06f33ff203e3bda45dc5eaffa2800abddae170774f240f088fe6b14bb961ffff6116c9611fc9565b6107e673ffffffffffffffffffffffffffffffffffffffff6116e9611fa6565b926116f261210a565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000088549260a01b169116179283875516807fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015560405193849360a01c168390929173ffffffffffffffffffffffffffffffffffffffff60209161ffff604085019616845216910152565b50346101f257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576020600454604051908152f35b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25761180e611fa6565b3373ffffffffffffffffffffffffffffffffffffffff821603611837576103eb90600435612bd0565b6004827f6697b232000000000000000000000000000000000000000000000000000000008152fd5b50346101f25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f2576103eb60043561189d611fa6565b906118d66103e1825f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052600160405f20015490565b612ad3565b50346101f25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f25760206119446004355f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052600160405f20015490565b604051908152f35b5034611b5c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611b5c57611984612082565b73ffffffffffffffffffffffffffffffffffffffff600654166119a681612218565b905f5f9173ffffffffffffffffffffffffffffffffffffffff600354168082145f14611b69575050600454831115611b605750611a0b611a0260045473ffffffffffffffffffffffffffffffffffffffff600654169085612748565b80915093611fda565b6004555b73ffffffffffffffffffffffffffffffffffffffff5f541660055473ffffffffffffffffffffffffffffffffffffffff6003541660045492803b15611b5c575f928360649260405196879586947f49d0b8460000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af18015611b5157611b16575b507f1a4217abcf39833692062dc63904ca866867384604ca0bcee8cb956171e0da6d9160a09173ffffffffffffffffffffffffffffffffffffffff600654169173ffffffffffffffffffffffffffffffffffffffff60035416600454906040519485526020850152604084015260608301526080820152a180f35b60a091935091611b475f7f1a4217abcf39833692062dc63904ca866867384604ca0bcee8cb956171e0da6d94612014565b5f93915091611a9b565b6040513d5f823e3d90fd5b5f80fd5b91600455611a0f565b611b7b93506004949192943592612318565b909291509060045483115f14611c005750611bb5611a0260045473ffffffffffffffffffffffffffffffffffffffff600354169085612748565b6004555b73ffffffffffffffffffffffffffffffffffffffff600354167fffffffffffffffffffffffff00000000000000000000000000000000000000006006541617600655611a0f565b91600455611bb9565b34611b5c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611b5c57600435611c43611fa6565b335f9081527f52fce5e8a5d0d9e8d1ea29f4525e512e9c27bf92cae50374d497f918ab48f382602052604090205460ff1615611e0f57815f52600860205260405f2054611de757611c9382612dde565b5073ffffffffffffffffffffffffffffffffffffffff600654169173ffffffffffffffffffffffffffffffffffffffff821692808414611d9857737130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c84141580611dc9575b80611dc0575b611d985760c0611d517fffffffffffffffffffffffff0000000000000000000000000000000000000000947faab9496d7fe46c6c6fc094bb71bd83b866f9a3991a23f622829192c84951ac229360443591611d4b82612218565b91612318565b906006959295549560405193845273ffffffffffffffffffffffffffffffffffffffff871660208501528860408501526060840152608083015260a0820152a11617600655005b7f1b6d1fa0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50831515611cf1565b50732170ed0880ac9a755fd29b2688956bd959f933f8841415611ceb565b7f0900b837000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6360245260445ffd5b34611b5c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611b5c5760206040517fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638152f35b34611b5c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611b5c57600435907fffffffff000000000000000000000000000000000000000000000000000000008216809203611b5c57817f5a05180f0000000000000000000000000000000000000000000000000000000060209314908115611f49575b5015158152f35b7f7965db0b00000000000000000000000000000000000000000000000000000000811491508115611f7c575b5083611f42565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611f75565b6024359073ffffffffffffffffffffffffffffffffffffffff82168203611b5c57565b6004359061ffff82168203611b5c57565b91908203918211611fe757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761205557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16156120ba57565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e60245260445ffd5b335f9081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561214257565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260445ffd5b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416156121e95750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b73ffffffffffffffffffffffffffffffffffffffff16806122bd57506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c5afa908115611b51575f9161228e575090565b90506020813d6020116122b5575b816122a960209383612014565b81010312611b5c575190565b3d915061229c565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611b51575f9161228e575090565b81810292918115918404141715611fe757565b9190939273ffffffffffffffffffffffffffffffffffffffff61239d61271061234961ffff5f5460a01c1686612305565b04809561235b82856001541683612c30565b808416612742575073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c975b80841661273c575073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c94611fda565b9516906040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152731b81d678ffb9c0263b24a97847620c99d213eb146024820152602081604481865afa908115611b51575f9161270a575b50868101809111611fe7576040517f095ea7b3000000000000000000000000000000000000000000000000000000005f52731b81d678ffb9c0263b24a97847620c99d213eb146004528160245260205f60448180885af19060015f51148216156126fb575b604052156125a0575b5060405190610100820182811067ffffffffffffffff821117612055577f414bf389000000000000000000000000000000000000000000000000000000009473ffffffffffffffffffffffffffffffffffffffff948992604052845284602085019116815284604085016101f4815262ffffff606087019130835283608089019542875260a08a0197885260c08a019889528160e08b019a5f8c526040519d8e52511660048d0152511660248b015251166044890152511660648701525160848601525160a48501525160c4840152511660e4820152602081610104815f731b81d678ffb9c0263b24a97847620c99d213eb145af1908115611b51575f91612571575091565b90506020813d602011612598575b8161258c60209383612014565b81010312611b5c575191565b3d915061257f565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000005f52731b81d678ffb9c0263b24a97847620c99d213eb146004525f60245260205f60448180885af19060015f51148216156126e3575b604052156126b757604051907f095ea7b3000000000000000000000000000000000000000000000000000000005f52731b81d678ffb9c0263b24a97847620c99d213eb1460045260245260205f60448180875af19060015f5114821615612696575b6040521561266a575f61246b565b507f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166126ae57833b15153d1516169061265c565b503d5f823e3d90fd5b827f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166126ae57843b15153d151616906125fa565b90843b15153d15161690612462565b90506020813d602011612734575b8161272560209383612014565b81010312611b5c57515f6123fd565b3d9150612718565b94611fda565b9761237a565b9061275291611fda565b9161278e61271061276c61ffff60015460a01c1686612305565b04809373ffffffffffffffffffffffffffffffffffffffff6002541690612c30565b565b61279a815f613085565b90816127a4575090565b5f80527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205261280b9073ffffffffffffffffffffffffffffffffffffffff167f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44612e6d565b5090565b612839817fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63613085565b9081612843575090565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e635f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205261280b9073ffffffffffffffffffffffffffffffffffffffff167fc16f7dca966b506c79c429ac151fd069a717a8ba6ffaecff126ad12f4e7be605612e6d565b6128f4817f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929613085565b90816128fe575090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205261280b9073ffffffffffffffffffffffffffffffffffffffff167f7359f21550028cf936ad73cd9e71366316d347a092c8f618b5c5a3efa6bec1ef612e6d565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e5f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020527e8963063c520970ed64c693e920074e4588acd3631097247bb3559890ad6a6754612aab57612a1b817fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e613085565b9081612a25575090565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e5f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205261280b9073ffffffffffffffffffffffffffffffffffffffff167e8963063c520970ed64c693e920074e4588acd3631097247bb3559890ad6a67612e6d565b7fe86316df000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e811480612b60575b612aab57612b0a8282613085565b9182612b1557505090565b61280b915f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205273ffffffffffffffffffffffffffffffffffffffff60405f20911690612e6d565b507fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e5f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020527e8963063c520970ed64c693e920074e4588acd3631097247bb3559890ad6a67541515612afc565b612bda8282612ec5565b9182612be557505090565b61280b915f527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060205273ffffffffffffffffffffffffffffffffffffffff60405f20911690613191565b90919073ffffffffffffffffffffffffffffffffffffffff1680612cf1575073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c3b15611b5c57604051917f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528160048401525f836024818373bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c5af1908115611b515761278e9373ffffffffffffffffffffffffffffffffffffffff92612ce1575b5016612fcd565b5f612ceb91612014565b5f612cda565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615612d84575b60405215612d595750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166126ae57823b15153d15161690612d4e565b8054821015612db1575f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805f52600860205260405f2054155f14612e68576007546801000000000000000081101561205557612e51612e1c8260018594016007556007612d9c565b81939154907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060031b92831b921b19161790565b9055600754905f52600860205260405f2055600190565b505f90565b5f828152600182016020526040902054612ebf57805490680100000000000000008210156120555782612eaa612e1c846001809601855584612d9c565b90558054925f520160205260405f2055600190565b50505f90565b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f14612ebf57805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b81471061305557604051906020820182811067ffffffffffffffff821117612055575f9373ffffffffffffffffffffffffffffffffffffffff859493858095819560405252165af11561301c57565b3d1561302d576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f14612ebf57805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b906001820191815f528260205260405f20548015155f146132e2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818111611fe7578254907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211611fe7578181036132ad575b50505080548015613280577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906132438282612d9c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055555f526020525f6040812055600190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b6132cd6132bd612e1c9386612d9c565b90549060031b1c92839286612d9c565b90555f528360205260405f20555f808061320b565b505050505f9056fea164736f6c634300081e000af0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00