0 txs
0 calls
constructor
constructor((address factory, address events, address marginAsset, address perpsV2ExchangeRate, address futuresMarketManager, address systemStatus, address gelato, address ops, address settings, address universalRouter, address permit2) _params)
functions
checker
viewfunction checker(uint256 _conditionalOrderId) view returns (bool canExec, bytes execPayload)
committedMargin
viewfunction committedMargin() view returns (uint256)
conditionalOrderId
viewfunction conditionalOrderId() view returns (uint256)
delegates
viewfunction delegates(address delegate) view returns (bool)
ETH
viewfunction ETH() view returns (address)
freeMargin
viewfunction freeMargin() view returns (uint256)
GELATO
viewfunction GELATO() view returns (address)
getConditionalOrder
viewfunction getConditionalOrder(uint256 _conditionalOrderId) view returns (tuple)
getDelayedOrder
viewfunction getDelayedOrder(bytes32 _marketKey) view returns (tuple order)
getPosition
viewfunction getPosition(bytes32 _marketKey) view returns (tuple position)
isAuth
viewfunction isAuth() view returns (bool)
isOwner
viewfunction isOwner() view returns (bool)
OPS
viewfunction OPS() view returns (address)
owner
viewfunction owner() view returns (address)
PERMIT2
viewfunction PERMIT2() view returns (address)
VERSION
viewfunction VERSION() view returns (bytes32)
addDelegate
nonpayablefunction addDelegate(address _delegate)
execute
payablefunction execute(uint8[] _commands, bytes[] _inputs) payable
executeConditionalOrder
nonpayablefunction executeConditionalOrder(uint256 _conditionalOrderId)
removeDelegate
nonpayablefunction removeDelegate(address _delegate)
setInitialOwnership
nonpayablefunction setInitialOwnership(address _owner)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
events
DelegatedAccountAdded
event DelegatedAccountAdded(address indexed caller, address indexed delegate)
DelegatedAccountRemoved
event DelegatedAccountRemoved(address indexed caller, address indexed delegate)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
errors
AccountExecutionDisabled
error AccountExecutionDisabled()
CannotExecuteConditionalOrder
error CannotExecuteConditionalOrder(uint256 conditionalOrderId, address executor)
CannotPayExecutorFee
error CannotPayExecutorFee(uint256 executorFee, address executor)
EthWithdrawalFailed
error EthWithdrawalFailed()
InsufficientFreeMargin
error InsufficientFreeMargin(uint256 available, uint256 required)
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidDelegateAddress
error InvalidDelegateAddress(address delegateAddress)
InvalidPrice
error InvalidPrice()
LengthMismatch
error LengthMismatch()
Reentrancy
error Reentrancy()
SliceOutOfBounds
error SliceOutOfBounds()
TokenSwapNotAllowed
error TokenSwapNotAllowed(address tokenIn, address tokenOut)
Unauthorized
error Unauthorized()
UnsafeCast
error UnsafeCast()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101e06040523480156200001257600080fd5b506040516200498a3803806200498a83398101604081905262000035916200014c565b60c081015160e0820151600080546001600160a01b0319168155604051819081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03918216608090815290821660a09081528351831660c0526020840151831660e0526040840151831661010090815260608501518416610120908152928501518416610140908152918501518416610160528401518316610180529083015182166101a05290910151166101c0526200023f565b60405161016081016001600160401b03811182821017156200012957634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200014757600080fd5b919050565b600061016082840312156200016057600080fd5b6200016a620000f7565b62000175836200012f565b815262000185602084016200012f565b602082015262000198604084016200012f565b6040820152620001ab606084016200012f565b6060820152620001be608084016200012f565b6080820152620001d160a084016200012f565b60a0820152620001e460c084016200012f565b60c0820152620001f760e084016200012f565b60e08201526101006200020c8185016200012f565b90820152610120620002208482016200012f565b90820152610140620002348482016200012f565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161460e6200037c60003960008181610332015281816117460152612892015260008181612700015281816128cf01526135a401526000818161068101528181610b7a01528181611c2501528181612649015261282001526000611a580152600061152801526000611dbf01526000818161083b015281816121810152818161232f015281816125b00152612787015260008181610ed30152818161101401528181612269015281816124350152818161253901528181612a5601528181612ffe015261323e015260008181611218015261149601526000818161022b01528181610d3401528181611b6001528181611b880152818161311d01526136910152600081816104fb01526132cc015261460e6000f3fe6080604052600436106101795760003560e01c806385652fec116100cb578063cdf8972e1161007f578063eff557a711610059578063eff557a7146104e9578063f2fde38b1461051d578063ffa1ad741461053d57600080fd5b8063cdf8972e1461047c578063d6c7ef8b146104a9578063e71bdf41146104c957600080fd5b80638f32d59b116100b05780638f32d59b1461040b57806394e05b2c14610438578063a48903371461046657600080fd5b806385652fec146103be5780638da5cb5b146103de57600080fd5b8063613838051161012d57806372a69c0d1161010757806372a69c0d1461035457806378e91014146103695780638322fff21461039657600080fd5b806361383805146102eb57806367e7646f146103005780636afdd8501461032057600080fd5b80634c2eefb41161015e5780634c2eefb414610272578063587cde1e14610296578063608d60eb146102d657600080fd5b80631928b3cb14610185578063472d04471461021957600080fd5b3661018057005b600080fd5b34801561019157600080fd5b506101a56101a0366004613a7c565b610571565b6040516102109190600060a08201905067ffffffffffffffff8084511683528060208501511660208401525060408301516fffffffffffffffffffffffffffffffff808216604085015280606086015116606085015250506080830151600f0b608083015292915050565b60405180910390f35b34801561022557600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b34801561027e57600080fd5b5061028860165481565b604051908152602001610210565b3480156102a257600080fd5b506102c66102b1366004613ab7565b60016020526000908152604090205460ff1681565b6040519015158152602001610210565b6102e96102e4366004613b19565b61063b565b005b3480156102f757600080fd5b506102886107f1565b34801561030c57600080fd5b506102e961031b366004613ab7565b6108b5565b34801561032c57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561036057600080fd5b506102c6610a18565b34801561037557600080fd5b50610389610384366004613a7c565b610a51565b6040516102109190613b85565b3480156103a257600080fd5b5061024d73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156103ca57600080fd5b506102e96103d9366004613a7c565b610b34565b3480156103ea57600080fd5b5060005461024d9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1633146102c6565b34801561044457600080fd5b50610458610453366004613a7c565b61108f565b604051610210929190613cbb565b34801561047257600080fd5b5061028860155481565b34801561048857600080fd5b5061049c610497366004613a7c565b611116565b6040516102109190613d15565b3480156104b557600080fd5b506102e96104c4366004613ab7565b611200565b3480156104d557600080fd5b506102e96104e4366004613ab7565b6112df565b3480156104f557600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052957600080fd5b506102e9610538366004613ab7565b611442565b34801561054957600080fd5b506102887f322e312e3000000000000000000000000000000000000000000000000000000081565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526105a5826114f6565b6040517f55f5751000000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906355f575109060240160a060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106359190613e16565b92915050565b601854600203610677576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026018819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663125127b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070e9190613edb565b610744576040517f274ccc0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281811461077e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156107e4576107dc86868381811061079e5761079e613ef6565b90506020020160208101906107b39190613f25565b8585848181106107c5576107c5613ef6565b90506020028101906107d79190613f46565b6115d2565b600101610781565b5050600160185550505050565b6015546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000919073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a69190613fab565b6108b09190613ff3565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610906576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116158061094f575073ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16155b156109a3576040517fa3653d9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555133917faab1e52e5e9244a59f6d721ebad6da39111d47dba7c5b9cd735a06f839e8eb0291a350565b6000805473ffffffffffffffffffffffffffffffffffffffff163314806108b05750503360009081526001602052604090205460ff1690565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610aa3826114f6565b6040517fc8b809aa00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063c8b809aa9060240161012060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106359190614006565b601854600203610b70576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026018819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663125127b36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c079190613edb565b610c3d576040517f274ccc0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4681611a08565b610c85576040517f4316b3d50000000000000000000000000000000000000000000000000000000081526004810182905233602482015260440161099a565b6000610c9082611116565b60008381526017602052604080822082815560018101839055600281018390556003810183905560048082018490556005820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155600683019490945560079091018054909316909255608083015190517fee8ca3b5000000000000000000000000000000000000000000000000000000008152918201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ee8ca3b590602401600060405180830381600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b505050506000610daf611b47565b90506000610dc083600001516114f6565b9050600080610dce83611d44565b915091508460e0015115610f7c576040517f55f5751000000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906355f575109060240160a060405180830381865afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190613e16565b60800151600f0b9050801580610e8c5750610e8c818760400151611f30565b15610f485760808601516040517fd63f1ca600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163d63f1ca691610f0b918b916001906004016140ab565b600060405180830381600087803b158015610f2557600080fd5b505af1158015610f39573d6000803e3d6000fd5b50505050505050505050611087565b60ff81901c60000380820118604087015160ff81901c600003908101181115610f7a57610f74816140d0565b60408701525b505b600085602001511315610fb157602085015160ff81901c6000039081011860156000828254610fab9190613ff3565b90915550505b610fbf838660200151611f56565b610fd28386604001518760c00151611fed565b60808501516040517f568824dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163568824dc9161104f918a9187908a908890600401614108565b600060405180830381600087803b15801561106957600080fd5b505af115801561107d573d6000803e3d6000fd5b5050505050505050505b506001601855565b6000606061109c83611a08565b91503073ffffffffffffffffffffffffffffffffffffffff166385652fec846040516024016110cd91815260200190565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050915091565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152601760008381526020019081526020016000206040518061010001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff1660018111156111cc576111cc613cd6565b60018111156111dd576111dd613cd6565b81526006820154602082015260079091015460ff16151560409091015292915050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461126f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314611330576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81161580611378575073ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b156113c7576040517fa3653d9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161099a565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555133917f52d2da59f56f31503d90a3f1f08001c5705116f9e44f9ee08a7ebe1354b2cf4891a350565b61144b816120a0565b6040517f2e9ca20400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f00000000000000000000000000000000000000000000000000000000000000001690632e9ca204906044015b600060405180830381600087803b1580156114db57600080fd5b505af11580156114ef573d6000803e3d6000fd5b5050505050565b6040517fe63bfadb000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e63bfadb90602401602060405180830381865afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a8919061413e565b905073ffffffffffffffffffffffffffffffffffffffff81166115cd576115cd61415b565b919050565b600083600f8111156115e6576115e6613cd6565b905060028110806115f7575080600e145b80611602575080600f145b156117bb5760005473ffffffffffffffffffffffffffffffffffffffff163314611658576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084600f81111561166c5761166c613cd6565b0361168257823561167c81612161565b50611a02565b600184600f81111561169657611696613cd6565b036116a657823561167c8161247c565b600e84600f8111156116ba576116ba613cd6565b036116f45760008036816116d08787600261257d565b9150915086359350602087013592506116eb8484848461259b565b50505050611a02565b823660006117048386600661257d565b6040517f2b67b570000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632b67b570906117819033908790879087906004016141e9565b600060405180830381600087803b15801561179b57600080fd5b505af11580156117af573d6000803e3d6000fd5b50505050505050611a02565b6117c3610a18565b6117f9576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600481101561183e57600284600f81111561181657611816613cd6565b03611833578235602084013561182c8282611f56565b5050611a02565b823561167c81612abb565b600681101561189c57600484600f81111561185b5761185b613cd6565b0361187f57823560208401356040850135611877838383612b03565b505050611a02565b82356020840135604085013560608601356116eb84848484612b83565b60088110156118e657600684600f8111156118b9576118b9613cd6565b036118d557823560208401356040850135611877838383611fed565b8235602084013561182c8282612c3d565b600a81101561193057600884600f81111561190357611903613cd6565b0361191f57823560208401356040850135611877838383612cb6565b8235602084013561182c8282612d36565b600c81101561196857600a84600f81111561194d5761194d613cd6565b0361195d57823561167c81612daf565b823561167c81612e01565b600e8110156119c457600c84600f81111561198557611985613cd6565b036119b9578235602084013560408501356060860135608087013560a088013560c08901356117af87878787878787612e53565b823561167c816130a6565b600f811115611a02576040517fd76a1e9e0000000000000000000000000000000000000000000000000000000081526004810182905260240161099a565b50505050565b600080611a1483611116565b8051909150611a265750600092915050565b80516040517f856aae6c00000000000000000000000000000000000000000000000000000000815260048101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063856aae6c9060240160006040518083038186803b158015611aaf57600080fd5b505afa925050508015611ac0575060015b611acd5750600092915050565b6000611ae4611adf83600001516114f6565b611d44565b50905060008260a001516001811115611aff57611aff613cd6565b03611b1657611b0e8282613274565b949350505050565b60018260a001516001811115611b2e57611b2e613cd6565b03611b3d57611b0e828261329e565b5060009392505050565b600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611c23577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b810c6366040518163ffffffff1660e01b81526004016040805180830381865afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1491906142a3565b509050611c20816132c8565b90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663062af0b06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190613fab565b604051909150600090339083908381818185875af1925050503d8060008114611cf7576040519150601f19603f3d011682016040523d82523d6000602084013e611cfc565b606091505b5050905080611d40576040517fcfbb474c0000000000000000000000000000000000000000000000000000000081526004810183905233602482015260440161099a565b5090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663cdf456e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db89190613fab565b90506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633b798e8a846040518263ffffffff1660e01b8152600401611e1891815260200190565b6040805180830381865afa158015611e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5891906142d3565b90925090506000611e6a607842613ff3565b821015611f23576001905060008773ffffffffffffffffffffffffffffffffffffffff1663d24378eb6040518163ffffffff1660e01b81526004016040805180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee591906142f7565b90945090508015611f21576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b9196919550909350505050565b60008215801590611f4057508115155b611f4c57611f4c61415b565b5060009118121590565b6000811315611f6857611f68816133b6565b6040517f88a3c8480000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff8316906388a3c848906024015b600060405180830381600087803b158015611fd157600080fd5b505af1158015611fe5573d6000803e3d6000fd5b505050505050565b6040517f85f05ab500000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f4b57454e54410000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff8416906385f05ab5906064015b600060405180830381600087803b15801561208357600080fd5b505af1158015612097573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146120f1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008113156123065773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166323b872dd333060ff85901c600003808601186040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af115801561222d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122519190613edb565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166328ba84ca3360ff84901c600003808501186040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156114db57600080fd5b600081121561247957612318816133b6565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb3360ff84901c600003808501186040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156123d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f59190613edb565b506040517fb014da2100000000000000000000000000000000000000000000000000000000815233600482015260ff82901c6000038083011860248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b014da21906044016114c1565b50565b801561247957604051600090339083908381818185875af1925050503d80600081146124c4576040519150601f19603f3d011682016040523d82523d6000602084013e6124c9565b606091505b5050905080612504576040517f0ca79afd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f79a49527000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379a4952790604401611fb7565b36600080600061258e87878761341f565b9890975095505050505050565b6000806125a88484613482565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126b457506040517fb5af090f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b5af090f90602401602060405180830381865afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190613edb565b15612785576126c2876133b6565b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820188905233919084169063a9059cbb906044016020604051808303816000875af115801561275b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277f9190613edb565b506129e6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561288b57506040517fb5af090f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b5af090f90602401602060405180830381865afa158015612867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288b9190613edb565b15612994577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166336c78516337f00000000000000000000000000000000000000000000000000000000000000006128f78b6134db565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152821660448201529086166064820152608401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505050503090506129e6565b6040517fae943ea900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260440161099a565b6129f3818888888861352b565b6040517f3b9d50e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152828116604483015260648201899052608482018890527f00000000000000000000000000000000000000000000000000000000000000001690633b9d50e79060a401600060405180830381600087803b158015612a9a57600080fd5b505af1158015612aae573d6000803e3d6000fd5b5050505050505050505050565b8073ffffffffffffffffffffffffffffffffffffffff16635a1cbd2b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114db57600080fd5b6040517f32f0510300000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f4b57454e54410000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff8416906332f0510390606401612069565b6040517f787d6c300000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290527f4b57454e54410000000000000000000000000000000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff85169063787d6c3090608401600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b5050505050505050565b6040517f5c8011c3000000000000000000000000000000000000000000000000000000008152600481018290527f4b57454e54410000000000000000000000000000000000000000000000000000602482015273ffffffffffffffffffffffffffffffffffffffff831690635c8011c390604401611fb7565b6040517fc5a4b07a00000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f4b57454e54410000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff84169063c5a4b07a90606401612069565b6040517fed44a2db000000000000000000000000000000000000000000000000000000008152600481018290527f4b57454e54410000000000000000000000000000000000000000000000000000602482015273ffffffffffffffffffffffffffffffffffffffff83169063ed44a2db90604401611fb7565b6040517fc70b41e900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063c70b41e9906024016114c1565b6040517fdcce580600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063dcce5806906024016114c1565b84600003612e8d576040517f0287a76700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000861315612ec257612e9f866133b6565b60ff86901c6000038087011860156000828254612ebc9190614323565b90915550505b6000612ecc613682565b9050604051806101000160405280898152602001888152602001878152602001868152602001828152602001856001811115612f0a57612f0a613cd6565b8152602001848152602001831515815250601760006016548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690836001811115612f8c57612f8c613cd6565b021790555060c0820151600682015560e090910151600790910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556016546040517f146c64fc0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163146c64fc91613057919085908d908d908d908d908d908d908d90600401614336565b600060405180830381600087803b15801561307157600080fd5b505af1158015613085573d6000803e3d6000fd5b505050506016600081546130989061438c565b909155505050505050505050565b60006130b182611116565b90506000816020015113156130e857602081015160ff81901c60000390810118601560008282546130e29190613ff3565b90915550505b60808101516040517fee8ca3b500000000000000000000000000000000000000000000000000000000815260048101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ee8ca3b590602401600060405180830381600087803b15801561317657600080fd5b505af115801561318a573d6000803e3d6000fd5b50505060008381526017602052604080822082815560018101839055600281018390556003810183905560048082018490556005820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556006830185905560079092018054909216909155608085015191517fd63f1ca600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016945063d63f1ca693611fb79388939092016140ab565b6000808360400151131561329057506060820151811115610635565b506060820151811015610635565b600080836040015113156132ba57506060820151811015610635565b506060820151811115610635565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613342576040519150601f19603f3d011682016040523d82523d6000602084013e613347565b606091505b50509050806133b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f707352656164793a20455448207472616e73666572206661696c6564000000604482015260640161099a565b5050565b6133be6107f1565b60ff82901c600003808301181115612479576133d86107f1565b60ff82901c600003808301186040517f3cb0273a0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161099a565b600581901b8301358301803590602080820191869003016134408184614323565b851015613479576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50935093915050565b60008061348f84846137f2565b91505b600061349e8585613805565b905080156134b9576134b0858561383e565b945094506134ce565b6134c38585613865565b93506134d492505050565b50613492565b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff821115611d40576040517fc4bd89a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001808252818301909252600091816020015b606081526020019060019003908161354257905050905085858585856000604051602001613575969594939291906143c4565b6040516020818303038152906040528160008151811061359757613597613ef6565b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166324856bc3600060f81b60405160200161361b91907fff0000000000000000000000000000000000000000000000000000000000000091909116815260010190565b604051602081830303815290604052836040518363ffffffff1660e01b815260040161364892919061448b565b600060405180830381600087803b15801561366257600080fd5b505af1158015613676573d6000803e3d6000fd5b50505050505050505050565b60008061368d6138da565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633323b467303073ffffffffffffffffffffffffffffffffffffffff166385652fec6016546040516024016136fd91815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815260208201805160e094851b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116179052519185901b7fffffffff000000000000000000000000000000000000000000000000000000001682526137a993925090869073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee906004016144b9565b6020604051808303816000875af11580156137c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ec9190613fab565b91505090565b60006137fe8383613a36565b9392505050565b600061381360036014614323565b6014613820600382614323565b61382a9190614323565b6138349190614323565b9091101592915050565b366000838361384f60036014614323565b61385a92829061457f565b915091509250929050565b600080806014613876600382614323565b6138809190614323565b8410156138b9576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050508135606081811c9460489290921c62ffffff169360170135901c9150565b6040805180820182526060808252602082015281516001818401818152608083019094529192909182919081602001602082028036833701905050815260408051600180825281830190925260209092019190816020015b6060815260200190600190039081613932575050905280518051919250600091829061396057613960613ef6565b6020026020010190600381111561397957613979613cd6565b9081600381111561398c5761398c613cd6565b905250601654604051309182916394e05b2c916139af9160240190815260200190565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051602001613a029291906145a9565b6040516020818303038152906040528160200151600081518110613a2857613a28613ef6565b602002602001018190525090565b60006014821015613a73576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50503560601c90565b600060208284031215613a8e57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461247957600080fd5b600060208284031215613ac957600080fd5b81356137fe81613a95565b60008083601f840112613ae657600080fd5b50813567ffffffffffffffff811115613afe57600080fd5b6020830191508360208260051b85010111156134d457600080fd5b60008060008060408587031215613b2f57600080fd5b843567ffffffffffffffff80821115613b4757600080fd5b613b5388838901613ad4565b90965094506020870135915080821115613b6c57600080fd5b50613b7987828801613ad4565b95989497509550505050565b6000610120820190508251151582526020830151600f0b60208301526040830151613bc460408401826fffffffffffffffffffffffffffffffff169052565b506060830151613be860608401826fffffffffffffffffffffffffffffffff169052565b506080830151613c0c60808401826fffffffffffffffffffffffffffffffff169052565b5060a0830151613c3060a08401826fffffffffffffffffffffffffffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525092915050565b6000815180845260005b81811015613c7d57602081850181015186830182015201613c61565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201526000611b0e6040830184613c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061247957612479613cd6565b600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a0830151613d5881613d05565b8060a08401525060c083015160c083015260e0830151151560e083015292915050565b604051610120810167ffffffffffffffff81118282101715613dc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b805167ffffffffffffffff811681146115cd57600080fd5b80516fffffffffffffffffffffffffffffffff811681146115cd57600080fd5b8051600f81900b81146115cd57600080fd5b600060a08284031215613e2857600080fd5b60405160a0810181811067ffffffffffffffff82111715613e72577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052613e7e83613dcc565b8152613e8c60208401613dcc565b6020820152613e9d60408401613de4565b6040820152613eae60608401613de4565b6060820152613ebf60808401613e04565b60808201529392505050565b805180151581146115cd57600080fd5b600060208284031215613eed57600080fd5b6137fe82613ecb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f3757600080fd5b8135601081106137fe57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f7b57600080fd5b83018035915067ffffffffffffffff821115613f9657600080fd5b6020019150368190038213156134d457600080fd5b600060208284031215613fbd57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561063557610635613fc4565b6000610120828403121561401957600080fd5b614021613d7b565b61402a83613ecb565b815261403860208401613e04565b602082015261404960408401613de4565b604082015261405a60608401613de4565b606082015261406b60808401613de4565b608082015261407c60a08401613de4565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b83815260208101839052606081016140c283613d05565b826040830152949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361410157614101613fc4565b5060000390565b600060a08201905086825285602083015284604083015283606083015261412e83613d05565b8260808301529695505050505050565b60006020828403121561415057600080fd5b81516137fe81613a95565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b803565ffffffffffff811681146115cd57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010073ffffffffffffffffffffffffffffffffffffffff8088168452863561421381613a95565b818116602086015250602087013561422a81613a95565b81811660408601525061423f6040880161418a565b65ffffffffffff80821660608701528061425b60608b0161418a565b1660808701525050608087013561427181613a95565b81811660a0860152505060a086013560c08401528060e084015261429881840185876141a0565b979650505050505050565b600080604083850312156142b657600080fd5b8251915060208301516142c881613a95565b809150509250929050565b600080604083850312156142e657600080fd5b505080516020909101519092909150565b6000806040838503121561430a57600080fd5b8251915061431a60208401613ecb565b90509250929050565b8082018082111561063557610635613fc4565b6000610120820190508a82528960208301528860408301528760608301528660808301528560a083015261436985613d05565b8460c08301528360e08301528215156101008301529a9950505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143bd576143bd613fc4565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015284604082015260a06060820152600061440060a0830185876141a0565b90508215156080830152979650505050505050565b600082825180855260208086019550808260051b84010181860160005b8481101561447e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261446c838351613c57565b98840198925090830190600101614432565b5090979650505050505050565b60408152600061449e6040830185613c57565b82810360208401526144b08185614415565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152600060206080818401526144e96080840187613c57565b8381036040808601919091528651818352805191830182905283019060009060608401905b8083101561453e5783516004811061452857614528613cd6565b825292850192600192909201919085019061450e565b50848901519250838103858501526145568184614415565b955050505050506144b0606083018473ffffffffffffffffffffffffffffffffffffffff169052565b6000808585111561458f57600080fd5b8386111561459c57600080fd5b5050820193919092039150565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611b0e6040830184613c5756fea2646970667358221220012c0a889520577fb5eb290896b7f0035ebbb680fd3478b66945084ac347506a64736f6c634300081200330000000000000000000000008234f990b149ae59416dc260305e565e5dafeb54000000000000000000000000b753d2ee5dca1ff39a83ca3ec500656c31be940b0000000000000000000000008c6f28f2f1a3c87f0f938b96d27520d9751ec8d90000000000000000000000002c15259d4886e2c0946f9ab7a5e389c86b3c3b04000000000000000000000000d30bdfd7e7a65fe109d5de1d4e95f3b800fb7463000000000000000000000000e8c41be1a167314abaf2423b72bf8da826943ffd00000000000000000000000001051113d81d7d6da508462f2ad6d7fd96cf42ef000000000000000000000000340759c8346a1e6ed92035fb8b6ec57ce1d82c2c000000000000000000000000865da103d126b3be3599d84cab57109a861f56310000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fad000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3