0 txs
145 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)
hasCloseCharged
viewfunction hasCloseCharged(uint32 _index) view returns (bool)
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)
chargeCloseFee
nonpayablefunction chargeCloseFee(uint32 _index)
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
AlreadyCharged
error AlreadyCharged()
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()
TradeOpening
error TradeOpening()
Unauthorized
error Unauthorized()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101c06040818152346200063e578190620046d0803803809162000024828662000643565b8439610100938491810103126200063e5780516001600160401b039284820184811183821017620006285783526200005c8162000667565b9384835260206200006f81840162000667565b80828601526200008186850162000667565b908187870152620000956060860162000667565b97886060880152620000aa6080870162000667565b93846080890152620000bf60a0880162000667565b8060a08a015260e0620000e981620000da60c08c0162000667565b9a60c08d019b8c520162000667565b990198895260018060a01b03808097169116968a519360c085019185831090831117620006285787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa908115620005da5789918e87928792620005e4575b50516331056e5760e21b81529283916004918391165afa908115620005da57908591859162000594575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa90811562000544578892918d869286926200054e575b5051632e8743fd60e21b81529384916004918391165afa9182156200054457918c9184938a9592620004f8575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004ec579087959493929181936200048f575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a0908152935161405396909590876200067d883960805187818161071c01526132fb015260a05187612b9e015260c05187505060e0518781816101f801526102a10152518681816107f201528181610ba001528181610ce201528181610e07015281816118ca0152818161194a01528181611f2c01528181611fb90152818161219601528181612eff01528181613100015281816138d20152613ad301525185818161066301528181610a2e015281816115bc015281816120eb015281816128610152818161306f0152818161326801528181613a3a0152613ea70152518481816107be015281816108e001528181610b6801528181610caa015281816110380152818161157901528181611c930152818161215e015281816130ce01528181613aa201528181613d8e0152613f91015251836106e0015251828181610f3b01528181610fdf015281816110b5015281816111080152818161133801528181611523015281816116000152818161174801528181611aac01528181611bb701528181611c3b01528181611cd701528181611d5c015281816122bf0152818161231b01528181612383015281816123df0152818161247d015281816124eb0152818161267d01528181612740015281816127cb01528181612d3c0152613766015251816134710152f35b9180949596508c809294503d8311620004e4575b620004af818362000643565b81010312620004e057620004c38362000667565b92015180151503620004dd57508492919083838162000264565b80fd5b5080fd5b503d620004a3565b508a51903d90823e3d90fd5b9250929350508381813d83116200053c575b62000516818362000643565b8101031262000538578792916024620005308e9362000667565b919062000230565b8280fd5b503d6200050a565b8c513d85823e3d90fd5b939450505081813d83116200058c575b6200056a818362000643565b81010312620005385790838c6004620005848b9562000667565b919062000203565b503d6200055e565b82819392503d8311620005d2575b620005ae818362000643565b81010312620005ce57602491620005c6869262000667565b9092620001cc565b8380fd5b503d620005a2565b8d513d86823e3d90fd5b9350505081813d831162000620575b620005ff818362000643565b81010312620005ce57518881168103620005ce57889085908e6004620001a2565b503d620005f3565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200062857604052565b51906001600160a01b03821682036200063e5756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe146132dd575080630b638e5414612cd15780631c3c0ea814612c9d57806322bfbf9d14612bef5780632520e7ff14612bc257806328f150eb14612b7e5780632f54bf6e14612b4b5780633322b23d14612b2d5780633732572514612a9057806351f954bf146129d75780635595de821461295b578063587cde1e1461291c578063608d60eb146105d257806367e7646f146105405780638da5cb5b14610519578063946d1480146104fb57806399fbab881461045e578063c34c08e514610437578063cea1fa0414610419578063d0cb3cd1146103fe578063d270444f146103db578063e71bdf411461032f578063f05ed16a14610309578063f09a401614610271578063f2fde38b146101885763ffa1ad7414610148573861000f565b346101835760003660031901126101835760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b34610183576020366003190112610183576101a1613332565b600054906001600160a01b0391828116330361026057826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604483600081938195637eecd31b60e11b845260048401523360248401525af180156102545761024b57005b61001b90613395565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b346101835760403660031901126101835761028a613332565b6024356001600160a01b03808216820361018357807f00000000000000000000000000000000000000000000000000000000000000001633036102605761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3613e07565b34610183576000366003190112610183576020610327601754613f61565b604051908152f35b3461018357602036600319011261018357610348613332565b6001600160a01b0390816000541633036102605716801580156103c3575b6103ab578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff60406000205416610366565b346101835760003660031901126101835760206103276103f9613d73565b613f61565b34610183576000366003190112610183576020610327613d73565b34610183576000366003190112610183576020601754604051908152f35b346101835760003660031901126101835760206001600160a01b0360165416604051908152f35b34610183576020366003190112610183576000606060405161047f816133c6565b8281528260208201528260408201520152600435600052601a602052608060406000206040516104ae816133c6565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b34610183576020366003190112610183576020610327600435613436565b346101835760003660031901126101835760206001600160a01b0360005416604051908152f35b3461018357602036600319011261018357610559613332565b6001600160a01b0390816000541633036102605716801580156105b9575b6103ab57806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff6040600020541615610577565b60403660031901126101835760043567ffffffffffffffff8111610183576105fe903690600401613348565b9060243567ffffffffffffffff81116101835761061f903690600401613348565b92909161062a613550565b5a938281036128f15760005b838110610a9f57856001600160a01b03806016541633148015610a12575b610660575b6001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa918215610254576000926109e1575b506106bc6106c3916106ca93613e63565b5a90613d66565b3a90613419565b600c810290808204600c14901517156109cb57337f00000000000000000000000000000000000000000000000000000000000000008316036109bf575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156102545760009061097f575b60049150935b8061075d86613436565b9460405193848092632cfc019d60e21b82525afa91821561025457600092610948575b508361078a613d73565b811161089f575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af180156102545761086b575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561018357600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af180156102545761085c575b80610659565b61086590613395565b80610856565b81813d8311610898575b61087f81836133e2565b8101031261018357610890906135a6565b5084806107ec565b503d610875565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610914575b50506107ef565b81813d8311610941575b61092881836133e2565b8101031261018357610939906135a6565b50848061090d565b503d61091e565b9080925081813d8311610978575b61096081836133e2565b8101031261018357610971906135b3565b9085610780565b503d610956565b506040813d6040116109b7575b81610999604093836133e2565b8101031261018357806109b1856004935192016135b3565b5061074d565b3d915061098c565b600a6004910493610753565b634e487b7160e01b600052601160045260246000fd5b91508482813d8311610a0b575b6109f881836133e2565b81010312610183579051906106bc6106ab565b503d6109ee565b50604051639ac2a01160e01b81523360048201526020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561025457600091610a66575b50610654565b90506020813d8211610a97575b81610a80602093836133e2565b8101031261018357610a91906135a6565b83610a60565b3d9150610a73565b8060051b90600d82850135101561018357828110156128db578186013591601e1987360301831215610183578287013567ffffffffffffffff811161018357360360208489010113610183576003858201351015610eae576001600160a01b036000541633036102605784810135610d905750908501602001356000811315610c4f576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610c16575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101835760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561025457600192610c07575b505b01610636565b610c1090613395565b87610bff565b6020813d602011610c47575b81610c2f602093836133e2565b8101031261018357610c40906135a6565b5087610b95565b3d9150610c22565b60008112610c61575b50600190610c01565b610c6a81613f1f565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610d57575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101835760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561025457600192610d48575b5090610c58565b610d5190613395565b87610d41565b6020813d602011610d88575b81610d70602093836133e2565b8101031261018357610d81906135a6565b5087610cd7565b3d9150610d63565b840135600114610da4575b60019150610c01565b6020828701013515610d9b5760008080806020868b010135335af13d15610ea9573d67ffffffffffffffff8111610e935760405190610ded601f8201601f1916602001836133e2565b8152600060203d92013e5b15610e81576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610183576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561025457600192610e72575b50610d9b565b610e7b90613395565b87610e6c565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b610df8565b9091610eb933614013565b1580612845575b6102605760038286013503610f00575b50600c8185013511610ee55750600190610c01565b604051636bb50f4f60e11b8152908401356004820152602490fd5b84820135600403611270576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092611243575b505060a081015115611231576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b0381116109cb579089840160600135156111d357606902806001600160781b038116036109cb5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457611188575b506001600160781b038061108f6060945b82610100820151169062ffffff9687910151169061370c565b1691169081156111725704166107d081108015611166575b611154576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561025457611145575b505b87610ed0565b61114e90613395565b8761113d565b604051633fe89cb960e11b8152600490fd5b50620249f081116110a7565b634e487b7160e01b600052601260045260246000fd5b6020813d6020116111cb575b816111a1602093836133e2565b81010312610183576001600160781b0361108f6060946111c183946135a6565b5094505050611065565b3d9150611194565b90506001600160781b036101008301511681101561121f576001600160781b036101008301511603906001600160781b0382116109cb576001600160781b038061108f60609493611076565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6112629250803d10611269575b61125a81836133e2565b8101906135fd565b8980610f74565b503d611250565b848201356005036125805761016081880101359061ffff821615612576575b61129f610140828a010135613e70565b8781016101400135611b255760408051828a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff1660348201526112f581605481015b03601f1981018352826133e2565b5190209182600052601b60205263ffffffff6040600020541680611a80575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610254578a92600091611a0f575b5063ffffffff9067ffffffffffffffff6101208660405196611393886133a9565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e08383010135168389015283610100838301013516610140890152010135166101608501525116602083015260405161143981613379565b6001600160a01b036020858d0101351681528a63ffffffff6040866020850193010135168152604082016000815263ffffffff60208601511687600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020848c61156b604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610254576119d6575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102545760009161199c575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e08101516116c381613e70565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761198d575b506103e86001600160781b0361179b8a840160c081013562ffffff169060a0013561370c565b16049082600052601a602052604060002060606003604051926117bd846133c6565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166002600160791b038360011b16046002146001600160781b0383161517156109cb576118246002600160791b038360011b16613e90565b9161182e83613f1f565b8260ff1c600003611846601791858101188254613e63565b9055604051611854816133c6565b6001600160a01b036020848d01013516815260036020820160008152604083016001600160781b0385168152606084019187835288600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576001600160a01b0360206001600160781b039360405196634fb9b99360e01b885260048801528c010135166024850152600060448501521660648301526001608483015260a482015260008160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761197e575b505b61113f565b61198790613395565b87611977565b61199690613395565b89611775565b90506020813d6020116119ce575b816119b7602093836133e2565b81010312610183576119c8906135b3565b8c6115f5565b3d91506119aa565b6020813d602011611a07575b816119ef602093836133e2565b8101031261018357611a00906135a6565b508b6115a6565b3d91506119e2565b9250506060823d606011611a78575b81611a2b606093836133e2565b810103126101835763ffffffff8a92611a6d6040805192611a4b84613379565b611a54816135c7565b8452611a62602082016135c7565b6020850152016135d8565b604082015290611372565b3d9150611a1e565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102545760a092600092611b08575b50500151611af6578a611314565b604051632d852ff160e21b8152600490fd5b611b1e9250803d106112695761125a81836133e2565b8c80611ae8565b90611b36610140838a010135613e70565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611b7681605481016112e7565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201529092906101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092612559575b505060a0810151156112315761ffff60408201511661ffff6060848d0101351614801590612541575b61253057898201610140013560010361246e5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b840160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457612435575b5063ffffffff602082015116926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576040516324058ad360e01b815260048101949094528a830160a08101356001600160781b0316602486015260c081013562ffffff16604486015260e0013567ffffffffffffffff16606485015261ffff16608484015260008360a481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1928315610254578a93612426575b505b610100828401013567ffffffffffffffff811661236c575b50610120828401013567ffffffffffffffff81166122a8575b50806001600160781b03611e10816101006060950151169282611df96103e895869362ffffff9889910151169061370c565b16049360c086880101351660a0868801013561370c565b16049060009480600052601a602052604060002060405190611e31826133c6565b6001600160a01b03815416825260036001820154918260208501526002810154604085015201546060830152806001600160781b0385161160001461229f57611e83906001600160781b038516613d66565b905b818061208a575b505050600161014085889701013514612013575b6040516001600160a01b036020868f611eb8856133c6565b0101351681526001600160781b03831660208201526001600160781b0384166040820152600360608201878152838952601a6020526040808a20936001600160a01b038151166001600160a01b03198654161785556020810151600186015501516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561200f57926001600160781b0360019381610140948f6020866001600160a01b039260049c9b6040519d8e634fb9b99360e01b815201520101351660248a01521660448801521660648601528b01013514608483015260a4820152818160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561200457611fed575b505061113f565b611ff78291613395565b6120015780611fe6565b80fd5b6040513d84823e3d90fd5b8580fd5b93506001600160781b038216806002600160791b038460011b1604600214901517156120765761204e6002600160791b038360011b16613e90565b9361205885613f1f565b8460ff1c860361206f601791878101188254613e63565b9055611ea0565b634e487b7160e01b85526011600452602485fd5b909196506040820151809111612297575b50858060011b04600214861517156109cb5760606120bb8760011b613e90565b91015180821161228f575b6120d36017918254613d66565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092612253575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761221a575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af1948515610254578c95612206575b8080611e8c565b612211919650613395565b6000948d6121ff565b6020813d60201161224b575b81612233602093836133e2565b8101031261018357612244906135a6565b508f61218b565b3d9150612226565b9091506020813d602011612287575b8161226f602093836133e2565b8101031261018357612280906135b3565b908f612124565b3d9150612262565b9050806120c6565b95508e61209b565b50600090611e85565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018357604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610254578a9360609261235d575b5090611dc7565b61236690613395565b8c612356565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1928315610254578a9315611dae5761242090613395565b8b611dae565b61242f90613395565b8b611d94565b6020813d602011612466575b8161244e602093836133e2565b810103126101835761245f906135a6565b508b611cc0565b3d9150612441565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018357604051926369f6bde160e01b845260048401526001600160781b0360a0838c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315610254578a93612521575b50611d96565b61252a90613395565b8b61251b565b60405162e45f0360e21b8152600490fd5b50608080820151151590838c01013515151415611c19565b61256f9250803d106112695761125a81836133e2565b8b80611bf0565b61012c915061128f565b84820135600603612668576040602082890101359163ffffffff9182918a010135169060405160208101906125d8816112e786888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c6020526040600020916040519261260a84613379565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c9101528616149182159261265d575b505061264b576119799261372a565b60405163c4d1e76d60e01b8152600490fd5b141590508b8061263c565b848201356007036126e1576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af180156102545761197e575061113f565b600882860135036126f2575061113f565b600c82860135036119775786016040810135906020810135906060013567ffffffffffffffff81166127c1575b5067ffffffffffffffff8216612736575b50611977565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156101835760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af18015610254576127b2575b80612730565b6127bb90613395565b876127ac565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af18015610254571561271f5761283f90613395565b8961271f565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610254576000916128a1575b5015610ec0565b90506020813d6020116128d3575b816128bc602093836133e2565b81010312610183576128cd906135a6565b8961289a565b3d91506128af565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b34610183576020366003190112610183576001600160a01b0361293d613332565b166000526001602052602060ff604060002054166040519015158152f35b3461018357604036600319011261018357612974613332565b6024359063ffffffff908183168093036101835760405160609190911b6bffffffffffffffffffffffff191660208281019182526034830194909452906129be81605481016112e7565b519020600052601b825260406000205416604051908152f35b34610183576020366003190112610183576129f061331f565b6129f8613550565b6001600160a01b039081600054163303610260576106599163ffffffff90818316600052601c6020526040600020916112e7612a8560405194612a3a86613379565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b51902091511661372a565b34610183576020366003190112610183576060612aab61331f565b600060408051612aba81613379565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff60406000209160405192612af184613379565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b34610183576000366003190112610183576020601854604051908152f35b34610183576020366003190112610183576020612b66613332565b6001600160a01b038060005416911614604051908152f35b346101835760003660031901126101835760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610183576020366003190112610183576020612be5612be0613332565b614013565b6040519015158152f35b34610183576020806003193601126101835763ffffffff80612c0f61331f565b16600052601c82526112e7612c80604060002060405190612c2f82613379565b549060406001600160a01b038316958683528360a01c1692838884015260c01c910152604051928391868301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020600052601d815260ff604060002054166040519015158152f35b3461018357602036600319011261018357612cb6613332565b6001600160a01b036000541633036102605761001b90613e07565b346101835760208060031936011261018357612ceb61331f565b90612cf4613550565b612cfd33614013565b158061324d575b610260576040516315878e0760e01b815230600482015263ffffffff831660248201526001600160a01b0391906101a09081816044817f000000000000000000000000000000000000000000000000000000000000000088165afa91821561025457600092613230575b505060a081015161321e5763ffffffff809416600052601c82526040600020936112e7612dea60405196612da188613379565b54868116938489528160a01c169081878a015260c01c6040890152604051928391878301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601d835260ff6040600020541661320c57836103e8612e2e926001600160781b03938162ffffff6060876101008196015116920151169061370c565b1604918216955116600095869184600052601a865260406000209660405197612e56896133c6565b81815416895260019889820154808a83015260606003600285015494604085019586520154920191825280861160001461320457612e949086613d66565b809281613014575b5050505083948495612fac575b50604051612eb6816133c6565b82815260038882018581526040830186815260608401918983528a8952601a8c528560408a209551166001600160a01b0319865416178555518c850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001690813b15612f9d578360c4926040519687958694634fb9b99360e01b86528a60048701526024860152806044860152606485015282608485015260a48401525af18015612fa157612f89575b506000908152601d90915260409020805460ff191682179055601555005b612f938591613395565b612f9d5783612f6b565b8380fd5b6040513d87823e3d90fd5b9094506002600160791b0391929350871b16828104600214831517156130005790612fd8889392613e90565b93612fe285613f1f565b612ff78560ff1c850386810118601754613e63565b60175589612ea9565b634e487b7160e01b88526011600452602488fd5b909192939597949650518091116131fc575b5081891b828104600214831517156109cb5761304190613e90565b90518082116131f4575b61305790601754613d66565b601755604051632cfc019d60e21b81529088826004817f000000000000000000000000000000000000000000000000000000000000000089165afa918215610254576000926131bd575b5060405163a9059cbb60e01b81526001600160a01b038316600482015260248101829052898160448160007f00000000000000000000000000000000000000000000000000000000000000008b165af1801561025457613189575b50847f000000000000000000000000000000000000000000000000000000000000000016803b15610183576000928360649288946040519788968795633317f54960e21b8752166004860152602485015260448401525af180156102545761316d575b918280808b96949795612e9c565b61317c91939850939193613395565b600096918893919361315f565b8981813d83116131b6575b61319e81836133e2565b81010312610183576131af906135a6565b508b6130fc565b503d613194565b9091508881813d83116131ed575b6131d581836133e2565b81010312610183576131e6906135b3565b908b6130a1565b503d6131cb565b90508061304b565b91508a613026565b506000612e94565b60405163361ec56f60e11b8152600490fd5b60405163a29ebd7360e01b8152600490fd5b6132469250803d106112695761125a81836133e2565b8480612d6e565b50604051639ac2a01160e01b815233600482015281816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610254576000916132a8575b5015612d04565b90508181813d83116132d6575b6132bf81836133e2565b81010312610183576132d0906135a6565b836132a1565b503d6132b5565b34610183576000366003190112610183576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359063ffffffff8216820361018357565b600435906001600160a01b038216820361018357565b9181601f840112156101835782359167ffffffffffffffff8311610183576020808501948460051b01011161018357565b6060810190811067ffffffffffffffff821117610e9357604052565b67ffffffffffffffff8111610e9357604052565b6101a0810190811067ffffffffffffffff821117610e9357604052565b6080810190811067ffffffffffffffff821117610e9357604052565b90601f8019910116810190811067ffffffffffffffff821117610e9357604052565b519067ffffffffffffffff8216820361018357565b818102929181159184041417156109cb57565b8115611172570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610254576000916134ca575b50670de0b6b3a7640000916134c16134c692613c87565b613419565b0490565b6080813d8211613548575b816134e2608093836133e2565b8101031261354457604051916134f7836133c6565b81518060070b810361354457835261351160208301613404565b60208401526040820151908160030b82036120015750604083015260609081015190820152670de0b6b3a76400006134aa565b5080fd5b3d91506134d5565b600260155414613561576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190811515820361018357565b51906001600160a01b038216820361018357565b519063ffffffff8216820361018357565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361018357565b90816101a09103126101835760405190613616826133a9565b61361f816135b3565b825261362d602082016135c7565b6020830152604081015161ffff81168103610183576040830152606081015162ffffff81168103610183576060830152613669608082016135a6565b608083015261367a60a082016135a6565b60a083015260c081015160ff811681036101835760c083015260e081015160038110156101835760e083015261010080820151906001600160781b0382168203610183578301526101206136cf818301613404565b908301526101406136e1818301613404565b908301526101606136f3818301613404565b908301526137056101808092016135d8565b9082015290565b9190916001600160781b03808094169116029182169182036109cb57565b604080516315878e0760e01b81523060048083019190915263ffffffff86166024830152919490936101a09390926001600160a01b03929091907f00000000000000000000000000000000000000000000000000000000000000008416908688604481855afa978815613c68576000978899613c49575b5050813b15613c455763ffffffff60248892838c51958694859363bdb340cd60e01b855216898401525af18015613c3b579088939291613c24575b506103e861380896976001600160781b03978162ffffff60608b6101008196015116920151169061370c565b1604958616906000948591878352602098601a8a5286842087519061382c826133c6565b8481541682526001810154808d840152606060036002840154938c860194855201549301928352808811600014613c1d576138679088613d66565b8091816139de575b5050505083613973575b50600387898b85808b519661388d886133c6565b169a8b8752601a838801938b8552828901958c875260608a01978c895252528c209551166001600160a01b0319865416178555516001850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001691823b1561200f579285879360c49382968d519889978896634fb9b99360e01b88528701526024860152806044860152606485015282608485015260a48401525af1801561396957613955575b50508252601d905220805460ff19166001179055565b61395f8291613395565b612001578061393f565b86513d84823e3d90fd5b90939495506002600160791b0391925060011b16838104600214841517156139cb57906139a38a95949392613e90565b916139ad83613f1f565b6139c28360ff1c880384810118601754613e63565b60175538613879565b634e487b7160e01b865260118552602486fd5b919395979899509193955051809111613c15575b508060011b81810460021482151715613c0257613a0e90613e90565b9151808311613bfa575b613a2490601754613d66565b6017558b51632cfc019d60e21b8152918a8389817f00000000000000000000000000000000000000000000000000000000000000008a165afa928315613bf057888e8d928c96613ba8575b505163a9059cbb60e01b81526001600160a01b038616918101918252602082018490529190829081906040015b03818d8b7f0000000000000000000000000000000000000000000000000000000000000000165af18015613b9e57613b6a575b50857f00000000000000000000000000000000000000000000000000000000000000001691823b15613b66578d51633317f54960e21b8152938716848a01526024840152604483015287908290606490829084905af18015613b5c57908b969594939291613b45575b908180808a96959461386f565b613b53909791939297613395565b95909138613b38565b8b513d89823e3d90fd5b8980fd5b8b81813d8311613b97575b613b7f81836133e2565b81010312613b6657613b90906135a6565b5038613acf565b503d613b75565b8e513d8c823e3d90fd5b93949550505081813d8311613be9575b613bc281836133e2565b81010312613be55790808b8e8a613bdc613a9c97966135b3565b96509192613a6f565b8880fd5b503d613bb8565b8d513d8b823e3d90fd5b915081613a18565b634e487b7160e01b895260118852602489fd5b9050386139f2565b5085613867565b61380896613c346103e892613395565b96506137dc565b88513d88823e3d90fd5b8680fd5b613c60929950803d106112695761125a81836133e2565b9638806137a1565b89513d6000823e3d90fd5b63ffffffff16604d81116109cb57600a0a90565b600080825160070b128015613d56575b8015613d44575b61200157604082015160030b8103808060030b03613d305760ff169167ffffffffffffffff9060068411613d09575116916006039060ff8211613cf5575090613cec60ff613cf29316613c73565b90613419565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff8211613cf5575090613d2a60ff613cf29316613c73565b9061342c565b634e487b7160e01b82526011600452602482fd5b5060fe19604083015160030b12613c9e565b5080604083015160030b13613c97565b919082039182116109cb57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025457600090613dd4575b613cf2915060175490613d66565b6020823d8211613dff575b81613dec602093836133e2565b810103126120015750613cf29051613dc6565b3d9150613ddf565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b919082018092116109cb57565b60031115613e7a57565b634e487b7160e01b600052602160045260246000fd5b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561025457600093613eec575b5091613cf2919261342c565b6020813d8211613f17575b81613f04602093836133e2565b81010312612f9d57519250613cf2613ee0565b3d9150613ef7565b8060ff1c60000390810118613f32613d73565b8111613f3b5750565b604490613f46613d73565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a7640000908181029181830414901517156109cb5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092613fe0575b50604d82116109cb57613cf291600a0a9061342c565b90916020823d821161400b575b81613ffa602093836133e2565b810103126120015750519038613fca565b3d9150613fed565b6001600160a01b0380600054169116908114908115614030575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000a63ac5b5b0de2e5200f602b214fc33a4d7355cc8000000000000000000000000bd5662b3385f4951f1ba1c51705c85d4725f1d4a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c