0 txs
882 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)
claimRewards
nonpayablefunction claimRewards(address _claimContract, address _claimToken, uint256[] _epochs, uint256[] _rewardAmounts, bytes32[][] _proofs)
closePosition
nonpayablefunction closePosition(uint32 _index, uint64 _expectedPrice)
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
0x6101c0604081815234620006295781906200469f80380380916200002482866200062e565b843961010093849181010312620006295780516001600160401b039284820184811183821017620006135783526200005c8162000652565b9384835260206200006f81840162000652565b80828601526200008186850162000652565b908187870152620000956060860162000652565b97886060880152620000aa6080870162000652565b93846080890152620000bf60a0880162000652565b8060a08a015260e0620000e981620000da60c08c0162000652565b9a60c08d019b8c520162000652565b990198895260018060a01b03808097169116968a519360c085019185831090831117620006135787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa908115620005c55789918e87928792620005cf575b50516331056e5760e21b81529283916004918391165afa908115620005c55790859185916200057f575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa9081156200052f578892918d8692869262000539575b5051632e8743fd60e21b81529384916004918391165afa9182156200052f57918c9184938a9592620004e3575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004d7579087959493929181936200047a575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a090815293516140379690959087620006688839608051878181610a5f0152613292015260a05187612ee3015260c05187505060e05187818161020301526102a8015251868181610b3501528181610ecf015281816110110152818161113301528181611bf901528181611c790152818161225c015281816122e9015281816124d801528181613b650152613d350152518581816107d4015281816109a601528181610d5b015281816118d90152818161242d01528181612b92015281816131ff01528181613ca70152613e87015251848181610b0101528181610c2301528181610e9701528181610fd9015281816113580152818161189601528181611fc2015281816124a0015281816139a101528181613d030152613f7501525183610a2301525182818161125b015281816112ff015281816113d50152818161142801528181611655015281816118400152818161191d01528181611a6501528181611ddb01528181611ee601528181611f6a0152818161201101528181612094015281816126010152818161265d015281816126bb01528181612717015281816127b501528181612823015281816129b401528181612a7101528181612afc0152818161308001526137610152518161341e0152f35b9180949596508c809294503d8311620004cf575b6200049a81836200062e565b81010312620004cb57620004ae8362000652565b92015180151503620004c857508492919083838162000264565b80fd5b5080fd5b503d6200048e565b508a51903d90823e3d90fd5b9250929350508381813d831162000527575b6200050181836200062e565b81010312620005235787929160246200051b8e9362000652565b919062000230565b8280fd5b503d620004f5565b8c513d85823e3d90fd5b939450505081813d831162000577575b6200055581836200062e565b81010312620005235790838c60046200056f8b9562000652565b919062000203565b503d62000549565b82819392503d8311620005bd575b6200059981836200062e565b81010312620005b957602491620005b1869262000652565b9092620001cc565b8380fd5b503d6200058d565b8d513d86823e3d90fd5b9350505081813d83116200060b575b620005ea81836200062e565b81010312620005b957518881168103620005b957889085908e6004620001a2565b503d620005de565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200061357604052565b51906001600160a01b0382168203620006295756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe14613274575080630b638e54146130165780631c3c0ea814612fe257806322bfbf9d14612f345780632520e7ff14612f0757806328f150eb14612ec35780632f54bf6e14612e905780632f798f8714612dc35780633322b23d14612da55780633732572514612d085780635595de8214612c8c578063587cde1e14612c4d578063608d60eb1461091657806367e7646f146108845780638da5cb5b1461085d5780638f6e6aa814610520578063946d14801461050257806399fbab8814610465578063c34c08e51461043e578063cea1fa0414610420578063d0cb3cd114610405578063d270444f146103e2578063e71bdf4114610336578063f05ed16a14610310578063f09a40161461027c578063f2fde38b146101935763ffa1ad7414610153573861000f565b3461018e57600036600319011261018e5760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b3461018e57602036600319011261018e576101ac6132c9565b600054906001600160a01b0391828116330361026b57826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604483600081938195637eecd31b60e11b845260048401523360248401525af1801561025f5761025657005b61001b90613342565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b3461018e57604036600319011261018e576102956132c9565b61029d6132df565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016330361026b5761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3613a1a565b3461018e57600036600319011261018e57602061032e601754613f45565b604051908152f35b3461018e57602036600319011261018e5761034f6132c9565b6001600160a01b03908160005416330361026b5716801580156103ca575b6103b2578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff6040600020541661036d565b3461018e57600036600319011261018e57602061032e610400613986565b613f45565b3461018e57600036600319011261018e57602061032e613986565b3461018e57600036600319011261018e576020601754604051908152f35b3461018e57600036600319011261018e5760206001600160a01b0360165416604051908152f35b3461018e57602036600319011261018e576000606060405161048681613373565b8281528260208201528260408201520152600435600052601a602052608060406000206040516104b581613373565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b3461018e57602036600319011261018e57602061032e6004356133e3565b3461018e5760031960a03682011261018e5761053a6132c9565b906105436132df565b9060443567ffffffffffffffff811161018e576105649036906004016132f5565b909360643567ffffffffffffffff811161018e576105869036906004016132f5565b95909360843567ffffffffffffffff811161018e576105a99036906004016132f5565b90926105b36134fd565b6001600160a01b03600054163314158061084d575b806107b8575b61026b576001600160a01b0385163b1561018e5794929061061d61060c604051978896633fe46ecd60e21b8852606060048901526064880191613560565b848682030160248701528a89613560565b92848403016044850152808352602083019060208160051b85010193836000915b83831061074f57505050505050918160006001600160a01b038282960393165af1801561025f57610740575b50916000926000915b8083106106fd576000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018890529160209183916044918391908a165af1801561025f576106c4575b6001601555005b6020813d6020116106f5575b816106dd6020938361338f565b8101031261018e576106ee90613553565b50806106bd565b3d91506106d0565b9091936107169061070f86848661359d565b35906135ad565b93600019811461072a576001019190610673565b634e487b7160e01b600052601160045260246000fd5b61074990613342565b8361066a565b9193959092949650601f198282030186528635601e198436030181121561018e5783019067ffffffffffffffff82351161018e5760208201823560051b3603811361018e576107a660209283926001953590613560565b9801960193019091889695949261063e565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091610814575b50156105ce565b90506020813d8211610845575b8161082e6020938361338f565b8101031261018e5761083f90613553565b8a61080d565b3d9150610821565b5061085733613ff7565b156105c8565b3461018e57600036600319011261018e5760206001600160a01b0360005416604051908152f35b3461018e57602036600319011261018e5761089d6132c9565b6001600160a01b03908160005416330361026b5716801580156108fd575b6103b257806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff60406000205416156108bb565b604036600319011261018e5760043567ffffffffffffffff811161018e576109429036906004016132f5565b9060243567ffffffffffffffff811161018e576109639036906004016132f5565b61096e9291926134fd565b5a93808203612c225760005b818110610dcc57856001600160a01b03806016541633148015610d3f575b6109a3576001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa91821561025f57600092610d0e575b506109ff610a0691610a0d936135ad565b5a90613979565b3a906133c6565b600c810290808204600c149015171561072a57337f0000000000000000000000000000000000000000000000000000000000000000831603610d02575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561025f57600090610cc2575b60049150935b80610aa0866133e3565b9460405193848092632cfc019d60e21b82525afa91821561025f57600092610c8b575b5083610acd613986565b8111610be2575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af1801561025f57610bae575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561018e57600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af1801561025f57610b9f575b806106bd565b610ba890613342565b80610b99565b81813d8311610bdb575b610bc2818361338f565b8101031261018e57610bd390613553565b508480610b2f565b503d610bb8565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57610c57575b5050610b32565b81813d8311610c84575b610c6b818361338f565b8101031261018e57610c7c90613553565b508480610c50565b503d610c61565b9080925081813d8311610cbb575b610ca3818361338f565b8101031261018e57610cb4906135ba565b9085610ac3565b503d610c99565b506040813d604011610cfa575b81610cdc6040938361338f565b8101031261018e5780610cf4856004935192016135ba565b50610a90565b3d9150610ccf565b600a6004910493610a96565b91508482813d8311610d38575b610d25818361338f565b8101031261018e579051906109ff6109ee565b503d610d1b565b50604051639ac2a01160e01b81523360048201526020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561025f57600091610d93575b50610998565b90506020813d8211610dc4575b81610dad6020938361338f565b8101031261018e57610dbe90613553565b83610d8d565b3d9150610da0565b610dd781838661359d565b3590600d82101561018e5783811015612c0c578060051b86013591601e198736030183121561018e578287013567ffffffffffffffff811161018e5736036020848901011361018e5760038110156111da576001600160a01b0360005416330361026b57806110bf5750908501602001356000811315610f7e576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57610f45575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e5760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561025f57600192610f36575b505b0161097a565b610f3f90613342565b87610f2e565b6020813d602011610f76575b81610f5e6020938361338f565b8101031261018e57610f6f90613553565b5087610ec4565b3d9150610f51565b60008112610f90575b50600190610f30565b610f9981613f03565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611086575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e5760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561025f57600192611077575b5090610f87565b61108090613342565b87611070565b6020813d6020116110b7575b8161109f6020938361338f565b8101031261018e576110b090613553565b5087611006565b3d9150611092565b6001146110d0575b60019150610f30565b60208287010135156110c75760008080806020868b010135335af13d156111d5573d67ffffffffffffffff81116111bf5760405190611119601f8201601f19166020018361338f565b8152600060203d92013e5b156111ad576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561025f5760019261119e575b506110c7565b6111a790613342565b87611198565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b611124565b90916111e533613ff7565b1580612b76575b61026b5760038203611223575b50600c811161120b5750600190610f30565b60249060405190636bb50f4f60e11b82526004820152fd5b60048203611590576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092611563575b505060a081015115611551576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b03811161072a579089840160600135156114f357606902806001600160781b0381160361072a5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f576114a8575b506001600160781b03806113af6060945b82610100820151169062ffffff96879101511690613713565b1691169081156114925704166107d081108015611486575b611474576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561025f57611465575b505b876111f9565b61146e90613342565b8761145d565b604051633fe89cb960e11b8152600490fd5b50620249f081116113c7565b634e487b7160e01b600052601260045260246000fd5b6020813d6020116114eb575b816114c16020938361338f565b8101031261018e576001600160781b036113af6060946114e18394613553565b5094505050611385565b3d91506114b4565b90506001600160781b036101008301511681101561153f576001600160781b036101008301511603906001600160781b03821161072a576001600160781b03806113af60609493611396565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6115829250803d10611589575b61157a818361338f565b810190613604565b8980611294565b503d611570565b600582036128b85761016081880101359061ffff8216156128ae575b6115bc610140828a010135613a76565b8781016101400135611e545760408051828a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff16603482015261161281605481015b03601f19810183528261338f565b5190209182600052601b60205263ffffffff6040600020541680611daf575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025f578a92600091611d3e575b5063ffffffff9067ffffffffffffffff61012086604051966116b088613356565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e08383010135168389015283610100838301013516610140890152010135166101608501525116602083015260405161175681613326565b6001600160a01b036020858d0101351681528a63ffffffff6040866020850193010135168152604082016000815263ffffffff60208601511687600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020848c611888604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611d05575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091611ccb575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e08101516119e081613a76565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611cbc575b506103e86001600160781b03611ab88a840160c081013562ffffff169060a00135613713565b16049082600052601a60205260406000206060600360405192611ada84613373565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166f01fffffffffffffffffffffffffffffe8360011b16046002146001600160781b03831615171561072a57611b536f01fffffffffffffffffffffffffffffe8360011b16613e70565b91611b5d83613f03565b8260ff1c600003611b756017918581011882546135ad565b9055604051611b8381613373565b6001600160a01b036020848d01013516815260036020820160008152604083016001600160781b0385168152606084019187835288600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e576001600160a01b0360206001600160781b039360405196634fb9b99360e01b885260048801528c010135166024850152600060448501521660648301526001608483015260a482015260008160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611cad575b505b61145f565b611cb690613342565b87611ca6565b611cc590613342565b89611a92565b90506020813d602011611cfd575b81611ce66020938361338f565b8101031261018e57611cf7906135ba565b8c611912565b3d9150611cd9565b6020813d602011611d36575b81611d1e6020938361338f565b8101031261018e57611d2f90613553565b508b6118c3565b3d9150611d11565b9250506060823d606011611da7575b81611d5a6060938361338f565b8101031261018e5763ffffffff8a92611d9c6040805192611d7a84613326565b611d83816135ce565b8452611d91602082016135ce565b6020850152016135df565b60408201529061168f565b3d9150611d4d565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f5760a092600092611e37575b50500151611e25578a611631565b604051632d852ff160e21b8152600490fd5b611e4d9250803d106115895761157a818361338f565b8c80611e17565b90611e65610140838a010135613a76565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611ea58160548101611604565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201529092906101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092612891575b505060a0810151156115515761ffff60408201511661ffff6060848d0101351614801590612879575b6128685789820161014001356001036127a65760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b840160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f5761276d575b5063ffffffff6020820151169262ffffff606083015116906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5767ffffffffffffffff60e0858e61ffff95604051996324058ad3851b8b5260048b01526001600160781b0360a084840101351660248b015260448a015201013516606486015216608484015260008360a481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561025f578a9361275e575b505b610100828401013567ffffffffffffffff81166126a4575b50610120828401013567ffffffffffffffff81166125ea575b5060606001600160781b03610100830151169101906001600160781b036121406103e892838361212f62ffffff938489511690613713565b160494511660a08688010135613713565b16049060009480600052601a60205260406000206040519061216182613373565b6001600160a01b03815416825260036001820154918260208501526002810154604085015201546060830152806001600160781b038516116000146125e1576121b3906001600160781b038516613979565b905b81806123cc575b505050600161014085889701013514612343575b6040516001600160a01b036020868f6121e885613373565b0101351681526001600160781b03831660208201526001600160781b0384166040820152600360608201878152838952601a6020526040808a20936001600160a01b038151166001600160a01b03198654161785556020810151600186015501516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561233f57926001600160781b0360019381610140948f6020866001600160a01b039260049c9b6040519d8e634fb9b99360e01b815201520101351660248a01521660448801521660648601528b01013514608483015260a4820152818160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156123345761231d575b505061145f565b6123278291613342565b6123315780612316565b80fd5b6040513d84823e3d90fd5b8580fd5b93506001600160781b038216806f01fffffffffffffffffffffffffffffe8460011b1604600214901517156123b8576123906f01fffffffffffffffffffffffffffffe8360011b16613e70565b9361239a85613f03565b8460ff1c86036123b16017918781011882546135ad565b90556121d0565b634e487b7160e01b85526011600452602485fd5b9091965060408201518091116125d9575b50858060011b046002148615171561072a5760606123fd8760011b613e70565b9101518082116125d1575b6124156017918254613979565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092612595575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f5761255c575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af194851561025f578c95612548575b80806121bc565b612553919650613342565b6000948d612541565b6020813d60201161258d575b816125756020938361338f565b8101031261018e5761258690613553565b508f6124cd565b3d9150612568565b9091506020813d6020116125c9575b816125b16020938361338f565b8101031261018e576125c2906135ba565b908f612466565b3d91506125a4565b905080612408565b95508e6123dd565b506000906121b5565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e57604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025f578a93156120f75761269e90613342565b8b6120f7565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025f578a93156120de5761275890613342565b8b6120de565b61276790613342565b8b6120c4565b6020813d60201161279e575b816127866020938361338f565b8101031261018e5761279790613553565b508b611fef565b3d9150612779565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018e57604051926369f6bde160e01b845260048401526001600160781b0360a0838c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561025f578a93612859575b506120c6565b61286290613342565b8b612853565b60405162e45f0360e21b8152600490fd5b50608080820151151590838c01013515151415611f48565b6128a79250803d106115895761157a818361338f565b8b80611f1f565b61012c91506115ac565b600682036129a2576020818801013563ffffffff806040848b0101351690604051602081019061290b8161160486888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c6020526040600020916040519261293d84613326565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c91015286161491821592612997575b5050612985576060611ca8948b01013592613731565b60405163c4d1e76d60e01b8152600490fd5b141590508c8061296f565b60078203612a18576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af1801561025f57611cad575061145f565b60088203612a26575061145f565b600c8203611ca65786016040810135906020810135906060013567ffffffffffffffff8116612af2575b5067ffffffffffffffff8216612a67575b50611ca6565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561018e5760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af1801561025f57612ae3575b80612a61565b612aec90613342565b87612add565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af1801561025f5715612a5057612b7090613342565b89612a50565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091612bd2575b50156111ec565b90506020813d602011612c04575b81612bed6020938361338f565b8101031261018e57612bfe90613553565b89612bcb565b3d9150612be0565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b3461018e57602036600319011261018e576001600160a01b03612c6e6132c9565b166000526001602052602060ff604060002054166040519015158152f35b3461018e57604036600319011261018e57612ca56132c9565b6024359063ffffffff9081831680930361018e5760405160609190911b6bffffffffffffffffffffffff19166020828101918252603483019490945290612cef8160548101611604565b519020600052601b825260406000205416604051908152f35b3461018e57602036600319011261018e576060612d236132b6565b600060408051612d3281613326565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff60406000209160405192612d6984613326565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b3461018e57600036600319011261018e576020601854604051908152f35b3461018e57604036600319011261018e57612ddc6132b6565b60243567ffffffffffffffff8116810361018e57612df86134fd565b6001600160a01b03918260005416330361026b576106bd9263ffffffff90818316600052601c602052604060002091611604612e8560405194612e3a86613326565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020915116613731565b3461018e57602036600319011261018e576020612eab6132c9565b6001600160a01b038060005416911614604051908152f35b3461018e57600036600319011261018e5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461018e57602036600319011261018e576020612f2a612f256132c9565b613ff7565b6040519015158152f35b3461018e5760208060031936011261018e5763ffffffff80612f546132b6565b16600052601c8252611604612fc5604060002060405190612f7482613326565b549060406001600160a01b038316958683528360a01c1692838884015260c01c910152604051928391868301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020600052601d815260ff604060002054166040519015158152f35b3461018e57602036600319011261018e57612ffb6132c9565b6001600160a01b0360005416330361026b5761001b90613a1a565b3461018e5760208060031936011261018e576130306132b6565b906130396134fd565b61304233613ff7565b15806131e4575b61026b576040516315878e0760e01b815230600482015263ffffffff831660248201526001600160a01b03906101a09081816044817f000000000000000000000000000000000000000000000000000000000000000087165afa91821561025f576000926131c7575b505060a08101516131b55763ffffffff809416600052601c835260406000209361160461312e604051966130e588613326565b54858116938489528160a01c169081888a015260c01c6040890152604051928391888301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209182600052601d845260ff604060002054166131a357601d946131776103e8613185946001600160781b03928162ffffff60608661010081960151169201511690613713565b160416918291511684613a96565b600052526040600020600160ff198254161790556001601555600080f35b60405163361ec56f60e11b8152600490fd5b60405163a29ebd7360e01b8152600490fd5b6131dd9250803d106115895761157a818361338f565b84806130b2565b50604051639ac2a01160e01b815233600482015281816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f5760009161323f575b5015613049565b90508181813d831161326d575b613256818361338f565b8101031261018e5761326790613553565b83613238565b503d61324c565b3461018e57600036600319011261018e576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359063ffffffff8216820361018e57565b600435906001600160a01b038216820361018e57565b602435906001600160a01b038216820361018e57565b9181601f8401121561018e5782359167ffffffffffffffff831161018e576020808501948460051b01011161018e57565b6060810190811067ffffffffffffffff8211176111bf57604052565b67ffffffffffffffff81116111bf57604052565b6101a0810190811067ffffffffffffffff8211176111bf57604052565b6080810190811067ffffffffffffffff8211176111bf57604052565b90601f8019910116810190811067ffffffffffffffff8211176111bf57604052565b519067ffffffffffffffff8216820361018e57565b8181029291811591840414171561072a57565b8115611492570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091613477575b50670de0b6b3a76400009161346e6134739261389a565b6133c6565b0490565b6080813d82116134f5575b8161348f6080938361338f565b810103126134f157604051916134a483613373565b81518060070b81036134f15783526134be602083016133b1565b60208401526040820151908160030b82036123315750604083015260609081015190820152670de0b6b3a7640000613457565b5080fd5b3d9150613482565b60026015541461350e576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190811515820361018e57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161018e5760209260051b809284830137010190565b9190811015612c0c5760051b0190565b9190820180921161072a57565b51906001600160a01b038216820361018e57565b519063ffffffff8216820361018e57565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361018e57565b90816101a091031261018e576040519061361d82613356565b613626816135ba565b8252613634602082016135ce565b6020830152604081015161ffff8116810361018e576040830152606081015162ffffff8116810361018e57606083015261367060808201613553565b608083015261368160a08201613553565b60a083015260c081015160ff8116810361018e5760c083015260e0810151600381101561018e5760e083015261010080820151906001600160781b038216820361018e578301526101206136d68183016133b1565b908301526101406136e88183016133b1565b908301526101606136fa8183016133b1565b9083015261370c6101808092016135df565b9082015290565b9190916001600160781b038080941691160291821691820361072a57565b6040516315878e0760e01b815230600482015263ffffffff841660248201529394936101a0936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908583604481855afa92831561025f576000968794613867575b5050813b1561233f576040516336ce736b60e01b815263ffffffff909116600482015267ffffffffffffffff9097166024880152849087908183816044810103925af195861561385c576040959661383d575b509061381d6103e8613828936001600160781b03928162ffffff60608661010081960151169201511690613713565b160416809184613a96565b8152601d60205220805460ff19166001179055565b6103e861382893929561385261381d93613342565b95929350506137ee565b6040513d86823e3d90fd5b61387e929450803d106115895761157a818361338f565b91388061379b565b63ffffffff16604d811161072a57600a0a90565b600080825160070b128015613969575b8015613957575b61233157604082015160030b8103808060030b036139435760ff169167ffffffffffffffff906006841161391c575116916006039060ff82116139085750906138ff60ff6139059316613886565b906133c6565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff821161390857509061393d60ff6139059316613886565b906133d9565b634e487b7160e01b82526011600452602482fd5b5060fe19604083015160030b126138b1565b5080604083015160030b136138aa565b9190820391821161072a57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025f576000906139e7575b613905915060175490613979565b6020823d8211613a12575b816139ff6020938361338f565b81010312612331575061390590516139d9565b3d91506139f2565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b60031115613a8057565b634e487b7160e01b600052602160045260246000fd5b92600093808552602091601a83528560409485822090865191613ab883613373565b6001600160a01b039283825416815260018201548089830152606060036002850154948c850195865201549201918252808b11600014613e6957613afc908b613979565b809281613c4e575b5050505082613bf6575b600382885192613b1d84613373565b16968783528a8184018b8152858b808701938a8552601a60608901968b88528d835252209551166001600160a01b0319865416178555516001850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001691823b15613bf25760c4928895949286928851998a978896634fb9b99360e01b8852600488015260248701526044860152606485015282608485015260a48401525af1908115613be95750613bd8575050565b613be28291613342565b6123315750565b513d84823e3d90fd5b8780fd5b91508260011b83810460021484151715613c3a57613c1390613e70565b91613c1d83613f03565b613c328360ff1c8a03848101186017546135ad565b601755613b0e565b634e487b7160e01b89526011600452602489fd5b9091929394955051809111613e61575b508160011b82810460021483151715613e4d57613c7a90613e70565b9051808211613e45575b613c9090601754613979565b6017558751632cfc019d60e21b81529087826004817f000000000000000000000000000000000000000000000000000000000000000089165afa918215613e3b578b92613e00575b50885163a9059cbb60e01b81526001600160a01b03831660048201526024810182905288816044818f7f00000000000000000000000000000000000000000000000000000000000000008b165af18015613df657613dc2575b50847f00000000000000000000000000000000000000000000000000000000000000001690813b15613dbe578b928387936064938d519788968795633317f54960e21b8752166004860152602485015260448401525af18015613db457613d9f575b908180808b9594613b04565b613dac9098919298613342565b969038613d93565b87513d8b823e3d90fd5b8b80fd5b8881813d8311613def575b613dd7818361338f565b81010312613dbe57613de890613553565b5038613d31565b503d613dcd565b8a513d8e823e3d90fd5b9091508781813d8311613e34575b613e18818361338f565b81010312613e3057613e29906135ba565b9038613cd8565b8a80fd5b503d613e0e565b89513d8d823e3d90fd5b905080613c84565b634e487b7160e01b8b52601160045260248bfd5b915038613c5e565b5084613afc565b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561025f57600093613ecc575b509161390591926133d9565b6020813d8211613efb575b81613ee46020938361338f565b81010312613ef757519250613905613ec0565b8380fd5b3d9150613ed7565b8060ff1c60000390810118613f16613986565b8111613f1f5750565b604490613f2a613986565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a76400009081810291818304149015171561072a5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092613fc4575b50604d821161072a5761390591600a0a906133d9565b90916020823d8211613fef575b81613fde6020938361338f565b810103126123315750519038613fae565b3d9150613fd1565b6001600160a01b0380600054169116908114908115614014575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000a63ac5b5b0de2e5200f602b214fc33a4d7355cc8000000000000000000000000bd5662b3385f4951f1ba1c51705c85d4725f1d4a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c