0 txs
81 calls
constructor
constructor((address factory, address events, address configs, address usdAsset, address automate, address taskCreator, address gainsTrading, address pyth) _params)
functions
automate
viewfunction automate() view returns (address)
availableFund
viewfunction availableFund() view returns (uint256)
availableFundD18
viewfunction availableFundD18() view returns (uint256)
dedicatedMsgSender
viewfunction dedicatedMsgSender() view returns (address)
delegates
viewfunction delegates(address delegate) view returns (bool)
ethToUsd
viewfunction ethToUsd(uint256 _amount) view returns (uint256)
executor
viewfunction executor() view returns (address)
getKeyIndex
viewfunction getKeyIndex(address _source, uint32 _sourceIndex) view returns (uint32 index)
getTraderPosition
viewfunction getTraderPosition(uint32 _index) view returns (tuple traderPosition)
isAuth
viewfunction isAuth(address msgSender) view returns (bool)
isOwner
viewfunction isOwner(address msgSender) view returns (bool)
lockedFund
viewfunction lockedFund() view returns (uint256)
lockedFundD18
viewfunction lockedFundD18() view returns (uint256)
owner
viewfunction owner() view returns (address)
positions
viewfunction positions(uint256 _key) view returns (tuple)
taskId
viewfunction taskId() view returns (uint256)
VERSION
viewfunction VERSION() view returns (bytes32)
addDelegate
nonpayablefunction addDelegate(address _delegate)
closePosition
nonpayablefunction closePosition(uint32 _index)
execute
payablefunction execute(uint8[] _commands, bytes[] _inputs) payable
init
nonpayablefunction init(address _owner, address _executor)
removeDelegate
nonpayablefunction removeDelegate(address _delegate)
setExecutor
nonpayablefunction setExecutor(address _executor)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
events
DelegatedCopyWalletAdded
event DelegatedCopyWalletAdded(address indexed caller, address indexed delegate)
DelegatedCopyWalletRemoved
event DelegatedCopyWalletRemoved(address indexed caller, address indexed delegate)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
errors
CannotExecuteTask
error CannotExecuteTask(uint256 taskId, address executor)
EthWithdrawalFailed
error EthWithdrawalFailed()
ExecutionFeeNotEnough
error ExecutionFeeNotEnough()
InsufficientAvailableFund
error InsufficientAvailableFund(uint256 available, uint256 required)
InvalidCollateralDelta
error InvalidCollateralDelta()
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidDelegateAddress
error InvalidDelegateAddress(address delegateAddress)
InvalidLeverage
error InvalidLeverage()
LengthMismatch
error LengthMismatch()
NoOpenPosition
error NoOpenPosition()
NoOrderFound
error NoOrderFound()
NoTaskFound
error NoTaskFound()
PositionExist
error PositionExist()
SourceMismatch
error SourceMismatch()
TradeMismatch
error TradeMismatch()
Unauthorized
error Unauthorized()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101c0604081815234620005e357819062003c3f8038038091620000248286620005e8565b843961010093849181010312620005e35780516001600160401b039284820184811183821017620005cd5783526200005c816200060c565b9384835260206200006f8184016200060c565b8082860152620000818685016200060c565b90818787015262000095606086016200060c565b97886060880152620000aa608087016200060c565b93846080890152620000bf60a088016200060c565b8060a08a015260e0620000e981620000da60c08c016200060c565b9a60c08d019b8c52016200060c565b990198895260018060a01b03808097169116968a519360c085019185831090831117620005cd5787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa9081156200057f5789918e8792879262000589575b50516331056e5760e21b81529283916004918391165afa9081156200057f57908591859162000539575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa908115620004e9578892918d86928692620004f3575b5051632e8743fd60e21b81529384916004918391165afa918215620004e957918c9184938a95926200049d575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004915790879594939291819362000434575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a0908152935161361d96909590876200062288396080518781816106ff015261299f015260a051876128fc015260c05187505060e0518781816101e2015261028b0152518681816107d501528181610af601528181610c3801528181610d5d01528181611f6e01526130d00152518581816106460152818161150e01528181611ec30152818161303b015261346d0152518481816107a1015281816108c301528181610abe01528181610c0001528181610f88015281816114cb01528181611b2c01528181611f360152818161309e01528181613354015261355b015251836106c3015251828181610e8b01528181610f2f01528181611005015281816110580152818161128a01528181611475015281816115520152818161169a0152818161194901528181611a5001528181611ad401528181611b7001528181611bf501528181612095015281816120f101528181612168015281816121c401528181612262015281816122d00152818161246101528181612534015281816125bf0152612e0b01525181612b150152f35b9180949596508c809294503d831162000489575b620004548183620005e8565b81010312620004855762000468836200060c565b920151801515036200048257508492919083838162000264565b80fd5b5080fd5b503d62000448565b508a51903d90823e3d90fd5b9250929350508381813d8311620004e1575b620004bb8183620005e8565b81010312620004dd578792916024620004d58e936200060c565b919062000230565b8280fd5b503d620004af565b8c513d85823e3d90fd5b939450505081813d831162000531575b6200050f8183620005e8565b81010312620004dd5790838c6004620005298b956200060c565b919062000203565b503d62000503565b82819392503d831162000577575b620005538183620005e8565b8101031262000573576024916200056b86926200060c565b9092620001cc565b8380fd5b503d62000547565b8d513d86823e3d90fd5b9350505081813d8311620005c5575b620005a48183620005e8565b8101031262000573575188811681036200057357889085908e6004620001a2565b503d62000598565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620005cd57604052565b51906001600160a01b0382168203620005e35756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe14612981575080631c3c0ea81461294d5780632520e7ff1461292057806328f150eb146128dc5780632f54bf6e146128a95780633322b23d1461288b57806337325725146127ee57806351f954bf146127355780635595de82146126b9578063587cde1e1461267a578063608d60eb146105bc57806367e7646f1461052a5780638da5cb5b14610503578063946d1480146104e557806399fbab8814610448578063c34c08e514610421578063cea1fa0414610403578063d0cb3cd1146103e8578063d270444f146103c5578063e71bdf4114610319578063f05ed16a146102f3578063f09a40161461025b578063f2fde38b146101725763ffa1ad7414610132573861000f565b3461016d57600036600319011261016d5760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b3461016d57602036600319011261016d5761018b6129c3565b600054906001600160a01b0391828116330361024a57826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57604483600081938195637eecd31b60e11b845260048401523360248401525af1801561023e5761023557005b61001b90612a39565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b3461016d57604036600319011261016d576102746129c3565b6024356001600160a01b03808216820361016d57807f000000000000000000000000000000000000000000000000000000000000000016330361024a5761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36133cd565b3461016d57600036600319011261016d57602061031160175461352b565b604051908152f35b3461016d57602036600319011261016d576103326129c3565b6001600160a01b03908160005416330361024a5716801580156103ad575b610395578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff60406000205416610350565b3461016d57600036600319011261016d5760206103116103e3613339565b61352b565b3461016d57600036600319011261016d576020610311613339565b3461016d57600036600319011261016d576020601754604051908152f35b3461016d57600036600319011261016d5760206001600160a01b0360165416604051908152f35b3461016d57602036600319011261016d576000606060405161046981612a6a565b8281528260208201528260408201520152600435600052601a6020526080604060002060405161049881612a6a565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b3461016d57602036600319011261016d576020610311600435612ada565b3461016d57600036600319011261016d5760206001600160a01b0360005416604051908152f35b3461016d57602036600319011261016d576105436129c3565b6001600160a01b03908160005416330361024a5716801580156105a3575b61039557806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff6040600020541615610561565b604036600319011261016d5760043567ffffffffffffffff811161016d576105e89036906004016129ec565b9060243567ffffffffffffffff811161016d576106099036906004016129ec565b929091610614612bf7565b5a9382810361264f5760005b8381106109f557856001600160a01b0380601654163314610643575b6001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa91821561023e576000926109c4575b5061069f6106a6916106ad93613429565b5a9061332c565b3a90612abd565b600c810290808204600c14901517156109ae57337f00000000000000000000000000000000000000000000000000000000000000008316036109a2575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561023e57600090610962575b60049150935b8061074086612ada565b9460405193848092632cfc019d60e21b82525afa91821561023e5760009261092b575b508361076d613339565b8111610882575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af1801561023e5761084e575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561016d57600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af1801561023e5761083f575b8061063c565b61084890612a39565b80610839565b81813d831161087b575b6108628183612a86565b8101031261016d5761087390612c72565b5084806107cf565b503d610858565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e576108f7575b50506107d2565b81813d8311610924575b61090b8183612a86565b8101031261016d5761091c90612c72565b5084806108f0565b503d610901565b9080925081813d831161095b575b6109438183612a86565b8101031261016d5761095490612c4d565b9085610763565b503d610939565b506040813d60401161099a575b8161097c60409383612a86565b8101031261016d578061099485600493519201612c4d565b50610730565b3d915061096f565b600a6004910493610736565b634e487b7160e01b600052601160045260246000fd5b91508482813d83116109ee575b6109db8183612a86565b8101031261016d5790519061069f61068e565b503d6109d1565b8060051b90600d82850135101561016d5782811015612639578186013591601e198736030183121561016d578287013567ffffffffffffffff811161016d5736036020848901011361016d576003858201351015610e04576001600160a01b0360005416330361024a5784810135610ce65750908501602001356000811315610ba5576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57610b6c575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d5760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561023e57600192610b5d575b505b01610620565b610b6690612a39565b87610b55565b6020813d602011610b9d575b81610b8560209383612a86565b8101031261016d57610b9690612c72565b5087610aeb565b3d9150610b78565b60008112610bb7575b50600190610b57565b610bc0816134e9565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57610cad575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d5760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561023e57600192610c9e575b5090610bae565b610ca790612a39565b87610c97565b6020813d602011610cde575b81610cc660209383612a86565b8101031261016d57610cd790612c72565b5087610c2d565b3d9150610cb9565b840135600114610cfa575b60019150610b57565b6020828701013515610cf15760008080806020868b010135335af13d15610dff573d67ffffffffffffffff8111610de95760405190610d43601f8201601f191660200183612a86565b8152600060203d92013e5b15610dd7576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561023e57600192610dc8575b50610cf1565b610dd190612a39565b87610dc2565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b610d4e565b9091610e0f336135dd565b1561024a5760038286013503610e50575b50600c8185013511610e355750600190610b57565b604051636bb50f4f60e11b8152908401356004820152602490fd5b848201356004036111c0576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e57600092611193575b505060a081015115611181576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b0381116109ae5790898401606001351561112357606902806001600160781b038116036109ae5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e576110d8575b506001600160781b0380610fdf6060945b82610100820151169062ffffff96879101511690612db3565b1691169081156110c25704166107d0811080156110b6575b6110a4576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561023e57611095575b505b87610e20565b61109e90612a39565b8761108d565b604051633fe89cb960e11b8152600490fd5b50620249f08111610ff7565b634e487b7160e01b600052601260045260246000fd5b6020813d60201161111b575b816110f160209383612a86565b8101031261016d576001600160781b03610fdf6060946111118394612c72565b5094505050610fb5565b3d91506110e4565b90506001600160781b036101008301511681101561116f576001600160781b036101008301511603906001600160781b0382116109ae576001600160781b0380610fdf60609493610fc6565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6111b29250803d106111b9575b6111aa8183612a86565b810190612ca4565b8980610ec4565b503d6111a0565b8482013560050361236457610160818801013561ffff81161561235b575b6111ee610140838a010135613436565b87820161014001356119c25760408051838a0160208181013560601b6bffffffffffffffffffffffff1916908301529091013563ffffffff16603482015261124381605481015b03601f198101835282612a86565b602081519101209081600052601b60205263ffffffff604060002054168061191d575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561023e578a926000916118ac575b5063ffffffff9067ffffffffffffffff61012087604051966112e588612a4d565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e08383010135168389015283610100838301013516610140890152010135166101608501525116602083015260405161138b81612a1d565b6001600160a01b036020868d0101351681528a63ffffffff6040876020850193010135168152604082016000815263ffffffff60208601511686600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020858c6114bd604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57611873575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e57600091611839575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d5761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e081015161161581613436565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e5761182a575b506103e86001600160781b036116ed8a850160c081013562ffffff169060a00135612db3565b16049080600052601a6020526040600020606060036040519261170f84612a6a565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166f01fffffffffffffffffffffffffffffe8360011b16046002146001600160781b0383161517156109ae578161178b6f01fffffffffffffffffffffffffffffe60039460011b16613456565b91611795836134e9565b8260ff1c6000036117ad601791858101188254613429565b90556001600160a01b036020604051966117c688612a6a565b8d0101351685526020850190600082526001600160781b03604087019316835260608601938452600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101555b61108f565b61183390612a39565b896116c7565b90506020813d60201161186b575b8161185460209383612a86565b8101031261016d5761186590612c4d565b8c611547565b3d9150611847565b6020813d6020116118a4575b8161188c60209383612a86565b8101031261016d5761189d90612c72565b508b6114f8565b3d915061187f565b9250506060823d606011611915575b816118c860609383612a86565b8101031261016d5763ffffffff8a9261190a60408051926118e884612a1d565b6118f181612c61565b84526118ff60208201612c61565b602085015201612c7f565b6040820152906112c4565b3d91506118bb565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e5760a0926000926119a5575b50500151611993578a611266565b604051632d852ff160e21b8152600490fd5b6119bb9250803d106111b9576111aa8183612a86565b8c80611985565b6119d2610140838a010135613436565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611a128160548101611235565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e5760009261233e575b505060a0810151156111815761ffff60408201511661ffff6060868d0101351614801590612326575b6123155789840161014001356001036122535760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b860160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e5761221a575b5063ffffffff602082015116926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d576040516324058ad360e01b815260048101949094528a850160a08101356001600160781b0316602486015260c081013562ffffff16604486015260e0013567ffffffffffffffff16606485015261ffff16608484015260008360a481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561023e578a9361220b575b505b610100848401013567ffffffffffffffff8116612151575b50610120848401013567ffffffffffffffff811661207e575b506001600160781b03611c888262ffffff6060846101006103e8970151169201511690612db3565b16046103e86001600160781b03611caf85870160c081013562ffffff169060a00135612db3565b160490600083600052601a6020526040600020604051611cce81612a6a565b6001600160a01b038254168152600182015480602083015260036002840154936040840194855201546060830152806001600160781b0386161160001461207657611d22906001600160781b03861661332c565b809281611e65575b5050505080936001610140888801013514611dba575b6001600160a01b03916040918360206003999a85519b611d5f8d612a6a565b0101351689526001600160781b0360208a01951685526001600160781b03838a0196168652606089019687528152601a602052209551166001600160a01b03198654161785555160018501555160028401555191015561108f565b9193509193506001600160781b038416806f01fffffffffffffffffffffffffffffe8660011b160460021490151715611e5157916001600160a01b03604085938d9795836020611e206f01fffffffffffffffffffffffffffffe60039b60011b16613456565b98611e2a8a6134e9565b8960ff1c8503611e416017918c8101188254613429565b90559a9950505091509150611d40565b634e487b7160e01b82526011600452602482fd5b90919297505180911161206e575b50858060011b04600214861517156109ae576060611e938760011b613456565b910151808211612066575b611eab601791825461332c565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e5760009261202a575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57611ff1575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af194851561023e578c95611fdf575b808080611d2a565b611fe99150612a39565b60008d611fd7565b6020813d602011612022575b8161200a60209383612a86565b8101031261016d5761201b90612c72565b508f611f63565b3d9150611ffd565b9091506020813d60201161205e575b8161204660209383612a86565b8101031261016d5761205790612c4d565b908f611efc565b3d9150612039565b905080611e9e565b95508e611e73565b506000611d22565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d57604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561023e57611c886103e8926001600160781b03928d96612142575b50925050611c60565b61214b90612a39565b8e612139565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d5760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561023e578a9315611c475761220590612a39565b8b611c47565b61221490612a39565b8b611c2d565b6020813d60201161224b575b8161223360209383612a86565b8101031261016d5761224490612c72565b508b611b59565b3d9150612226565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561016d57604051926369f6bde160e01b845260048401526001600160781b0360a0858c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561023e578a93612306575b50611c2f565b61230f90612a39565b8b612300565b60405162e45f0360e21b8152600490fd5b50608080820151151590858c01013515151415611ab2565b6123549250803d106111b9576111aa8183612a86565b8b80611a89565b5061012c6111de565b8482013560060361244c576040602082890101359163ffffffff9182918a010135169060405160208101906123bc8161123586888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c602052604060002091604051926123ee84612a1d565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c91015286161491821592612441575b505061242f5761182592612dd1565b60405163c4d1e76d60e01b8152600490fd5b141590508b80612420565b848201356007036124d5576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af1801561023e576124c6575b5061108f565b6124cf90612a39565b876124c0565b600882860135036124e6575061108f565b600c82860135036124c05786016040810135906020810135906060013567ffffffffffffffff81166125b5575b5067ffffffffffffffff821661252a575b506124c0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561016d5760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af1801561023e576125a6575b80612524565b6125af90612a39565b876125a0565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af1801561023e57156125135761263390612a39565b89612513565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b3461016d57602036600319011261016d576001600160a01b0361269b6129c3565b166000526001602052602060ff604060002054166040519015158152f35b3461016d57604036600319011261016d576126d26129c3565b6024359063ffffffff9081831680930361016d5760405160609190911b6bffffffffffffffffffffffff1916602082810191825260348301949094529061271c8160548101611235565b519020600052601b825260406000205416604051908152f35b3461016d57602036600319011261016d5761274e6129d9565b612756612bf7565b6001600160a01b03908160005416330361024a5761063c9163ffffffff90818316600052601c6020526040600020916112356127e36040519461279886612a1d565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020915116612dd1565b3461016d57602036600319011261016d5760606128096129d9565b60006040805161281881612a1d565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff6040600020916040519261284f84612a1d565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b3461016d57600036600319011261016d576020601854604051908152f35b3461016d57602036600319011261016d5760206128c46129c3565b6001600160a01b038060005416911614604051908152f35b3461016d57600036600319011261016d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d57602036600319011261016d57602061294361293e6129c3565b6135dd565b6040519015158152f35b3461016d57602036600319011261016d576129666129c3565b6001600160a01b0360005416330361024a5761001b906133cd565b3461016d57600036600319011261016d576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361016d57565b6004359063ffffffff8216820361016d57565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020808501948460051b01011161016d57565b6060810190811067ffffffffffffffff821117610de957604052565b67ffffffffffffffff8111610de957604052565b6101a0810190811067ffffffffffffffff821117610de957604052565b6080810190811067ffffffffffffffff821117610de957604052565b90601f8019910116810190811067ffffffffffffffff821117610de957604052565b519067ffffffffffffffff8216820361016d57565b818102929181159184041417156109ae57565b81156110c2570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e57600091612b6e575b50670de0b6b3a764000091612b65612b6a92613261565b612abd565b0490565b6080813d8211612bef575b81612b8660809383612a86565b81010312612beb5760405191612b9b83612a6a565b81518060070b8103612beb578352612bb560208301612aa8565b60208401526040820151908160030b8203612be85750604083015260609081015190820152670de0b6b3a7640000612b4e565b80fd5b5080fd5b3d9150612b79565b600260155414612c08576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b51906001600160a01b038216820361016d57565b519063ffffffff8216820361016d57565b5190811515820361016d57565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361016d57565b90816101a091031261016d5760405190612cbd82612a4d565b612cc681612c4d565b8252612cd460208201612c61565b6020830152604081015161ffff8116810361016d576040830152606081015162ffffff8116810361016d576060830152612d1060808201612c72565b6080830152612d2160a08201612c72565b60a083015260c081015160ff8116810361016d5760c083015260e0810151600381101561016d5760e083015261010080820151906001600160781b038216820361016d57830152610120612d76818301612aa8565b90830152610140612d88818301612aa8565b90830152610160612d9a818301612aa8565b90830152612dac610180809201612c7f565b9082015290565b9190916001600160781b03808094169116029182169182036109ae57565b604080516315878e0760e01b81523060048083019190915263ffffffff861660248301526101a096959394909390916001600160a01b03917f00000000000000000000000000000000000000000000000000000000000000008316918981604481865afa998a156132425760009a613223575b5050813b1561016d5763ffffffff6024600092838851958694859363bdb340cd60e01b8552168b8401525af1801561321857976103e891612ea899613209575b506001600160781b03988162ffffff60608c61010081960151169201511690612db3565b16049687169260008095848252602099601a8b528383208451612eca81612a6a565b8682541681528c600183015480918301526060600360028501549489850195865201549201918252808a1160001461320257612f06908a61332c565b809281612fe3575b505050508297612f6e575b5050601a60039798998484519a612f2f8c612a6a565b168a52808a0195878752848b0197885260608b01988952835252209551166001600160a01b031986541617855551600185015551600284015551910155565b6f01fffffffffffffffffffffffffffffe919a975060011b1685810460021486151715612fd057600397989950612fa6601a91613456565b96612fb0886134e9565b612fc58860ff1c840389810118601754613429565b601755999897612f19565b634e487b7160e01b825260118a52602482fd5b90919293949550518091116131fa575b508160011b828104600214831517156131e75761300f90613456565b90518082116131df575b6130259060175461332c565b6017558451632cfc019d60e21b8152908c8286817f00000000000000000000000000000000000000000000000000000000000000008b165afa9182156131d5578a9261319a575b50855163a9059cbb60e01b81526001600160a01b038316868201908152602081018390528e908290819003604001818e7f00000000000000000000000000000000000000000000000000000000000000008d165af180156131905761315c575b50867f00000000000000000000000000000000000000000000000000000000000000001690813b15613158578a928389936064938a519788968795633317f54960e21b8752168b860152602485015260448401525af1801561314e57613139575b908180808a9594612f0e565b6131469097919297612a39565b95903861312d565b84513d8a823e3d90fd5b8a80fd5b8d81813d8311613189575b6131718183612a86565b810103126131585761318290612c72565b50386130cc565b503d613167565b87513d8d823e3d90fd5b9091508c81813d83116131ce575b6131b28183612a86565b810103126131ca576131c390612c4d565b903861306c565b8980fd5b503d6131a8565b86513d8c823e3d90fd5b905080613019565b634e487b7160e01b8a526011855260248afd5b915038612ff3565b5084612f06565b61321290612a39565b38612e84565b84513d6000823e3d90fd5b61323a929a50803d106111b9576111aa8183612a86565b973880612e44565b86513d6000823e3d90fd5b63ffffffff16604d81116109ae57600a0a90565b600080825160070b12801561331c575b801561330a575b612be857604082015160030b8103808060030b03611e515760ff169167ffffffffffffffff90600684116132e3575116916006039060ff82116132cf5750906132c660ff6132cc931661324d565b90612abd565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff82116132cf57509061330460ff6132cc931661324d565b90612ad0565b5060fe19604083015160030b12613278565b5080604083015160030b13613271565b919082039182116109ae57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561023e5760009061339a575b6132cc91506017549061332c565b6020823d82116133c5575b816133b260209383612a86565b81010312612be857506132cc905161338c565b3d91506133a5565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b919082018092116109ae57565b6003111561344057565b634e487b7160e01b600052602160045260246000fd5b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561023e576000936134b2575b50916132cc9192612ad0565b6020813d82116134e1575b816134ca60209383612a86565b810103126134dd575192506132cc6134a6565b8380fd5b3d91506134bd565b8060ff1c600003908101186134fc613339565b81116135055750565b604490613510613339565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a7640000908181029181830414901517156109ae5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e576000926135aa575b50604d82116109ae576132cc91600a0a90612ad0565b90916020823d82116135d5575b816135c460209383612a86565b81010312612be85750519038613594565b3d91506135b7565b6001600160a01b03806000541691169081149081156135fa575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc630000000000000000000000006c212e97390c124b37888bf4b491a1f9f63451ed000000000000000000000000b1f1c69a8385fc7f120d8bc03d8b1b143c663c20000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c