104 txs
105 calls
constructor
constructor(address _owner, address _usdc, address _operator, address _feeReceiver, address _copyWalletFactory, address _gainsTrading, address _swapRouter)
functions
balanceOf
viewfunction balanceOf(address _account) view returns (uint256)
copyWallet
viewfunction copyWallet() view returns (address)
currentDeposit
viewfunction currentDeposit() view returns (uint256)
currentWithdrawal
viewfunction currentWithdrawal() view returns (uint256)
decimals
purefunction decimals() pure returns (uint8)
depositedMargin
viewfunction depositedMargin() view returns (uint256)
depositFee
viewfunction depositFee() view returns (uint256)
FACTOR
viewfunction FACTOR() view returns (uint256)
feeReceiver
viewfunction feeReceiver() view returns (address)
getPooledTokenByShares
viewfunction getPooledTokenByShares(uint256 _sharesAmount) view returns (uint256)
getSharesByPooledToken
viewfunction getSharesByPooledToken(uint256 _amount) view returns (uint256)
getTotalPooledToken
viewfunction getTotalPooledToken() view returns (uint256)
getTotalShares
viewfunction getTotalShares() view returns (uint256)
isAuthorized
viewfunction isAuthorized(bytes32 _role, address _user) view returns (bool)
lastDepositTimes
viewfunction lastDepositTimes(address) view returns (uint256)
lastSnapshot
viewfunction lastSnapshot() view returns (uint256)
lastSnapshotBalance
viewfunction lastSnapshotBalance() view returns (uint256)
lockDepositDuration
viewfunction lockDepositDuration() view returns (uint256)
managementFee
viewfunction managementFee() view returns (uint256)
name
viewfunction name() view returns (string)
netAccountDeposits
viewfunction netAccountDeposits(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
profitSharingRatio
viewfunction profitSharingRatio() view returns (uint256)
sharesOf
viewfunction sharesOf(address _account) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
vaultConfigs
viewfunction vaultConfigs() view returns (uint256 minDeposit, uint256 maxDeposit, uint256 minMargin, uint256 maxMargin)
withdrawFee
viewfunction withdrawFee() view returns (uint256)
withdrawnMargin
viewfunction withdrawnMargin() view returns (uint256)
claimRewards
payablefunction claimRewards(address _claimContract, address _claimToken, uint256[] _epochs, uint256[] _rewardAmounts, bytes32[][] _proofs) payable
closePosition
payablefunction closePosition(uint32 _index, uint64 _expectedPrice) payable
deposit
nonpayablefunction deposit(uint256 _amount)
executeCopyWallet
payablefunction executeCopyWallet(int256 margin, uint8[] commands, bytes[] inputs) payable
setDepositFee
nonpayablefunction setDepositFee(uint256 _fee)
setFeeReceiver
nonpayablefunction setFeeReceiver(address _feeReceiver)
setLockDepositDuration
nonpayablefunction setLockDepositDuration(uint256 _duration)
setManagementFee
nonpayablefunction setManagementFee(uint256 _fee)
setProfitSharingRatio
nonpayablefunction setProfitSharingRatio(uint256 _ratio)
setRole
nonpayablefunction setRole(address _user, bytes32 _role, bool active)
setVaultConfigs
nonpayablefunction setVaultConfigs(tuple _vaultConfigs)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 _fee)
snapshot
nonpayablefunction snapshot()
swapTokenV2
nonpayablefunction swapTokenV2(address _tokenIn, uint256 _amountIn, uint256 _amountOutMin)
swapTokenV3
nonpayablefunction swapTokenV3(address _tokenIn, uint256 _amountIn, uint256 _amountOutMin, uint24 _fee)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
CopyWalletUpdated
event CopyWalletUpdated(address copyWallet)
Deposit
event Deposit(address sender, uint256 amountUSDC, uint256 amountShares)
DepositFeeUpdated
event DepositFeeUpdated(uint256 fee)
FeeReceiverUpdated
event FeeReceiverUpdated(address feeReceiver)
FeeTransferred
event FeeTransferred(address sender, address receiver, uint256 value, uint8 feeType)
LockDepositDurationUpdated
event LockDepositDurationUpdated(uint256 duration)
ManagementFeeUpdated
event ManagementFeeUpdated(uint256 fee)
Paused
event Paused(address account)
ProfitSharingRatioUpdated
event ProfitSharingRatioUpdated(uint256 ratio)
ProfitSharingTransferred
event ProfitSharingTransferred(address sender, address receiver, uint256 value)
SharesBurnt
event SharesBurnt(address indexed account, uint256 preRebaseTokenAmount, uint256 postRebaseTokenAmount, uint256 sharesAmount)
Snapshot
event Snapshot(uint256 timestamp, uint256 duration, uint256 shares, uint256 balance, uint256 deposit, uint256 withdrawal, int256 pnl)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
VaultConfigsUpdated
event VaultConfigsUpdated(uint256 minDeposit, uint256 maxDeposit, uint256 minMargin, uint256 maxMargin)
Withdraw
event Withdraw(address receiver, uint256 amountUSDC, uint256 amountShares)
WithdrawFeeUpdated
event WithdrawFeeUpdated(uint256 fee)
errors
No errors.
creation bytecode
0x6101008060405234620006815760e081620038338038038091620000248285620006a2565b83398101031262000681576200003a81620006c6565b6200004860208301620006c6565b906200005760408401620006c6565b906200006660608501620006c6565b936200007560808201620006c6565b936200009260c06200008a60a08501620006c6565b9301620006c6565b91604051620000a18162000686565b600f81526e436f70696e5661756c74546573743160881b602082015260405190620000cc8262000686565b60048252634356543160e01b60208301528051906001600160401b038211620004225760045490600182811c9216801562000676575b6020831014620005485781601f84931162000604575b50602090601f8311600114620005755760009262000569575b50508160011b916000199060031b1c1916176004555b8051906001600160401b038211620004225760035490600182811c921680156200055e575b6020831014620005485781601f849311620004d3575b50602090601f8311600114620004445760009262000438575b50508160011b916000199060031b1c1916176003555b600160068190556064600f556103846011556001600160a01b03928316608090815294831660009081527f8d7cc180d0ecf08ff607082f437879b0991f3c066594d332345523a234d1bc5360209081526040808320805460ff1990811686179091559886168084527fa0e623bdf8c9b492066e276afc0ab5738d38fd3bdff3df73ddc3822327561118909252918290208054909816909217909655600780549884166001600160a01b0319998a1617905595821660a052811660c05290811660e05291519192908201908282106001600160401b0383111762000422577f77be6ad7f5e9b3ca09a8efa88cc6d00321b9c648b4d21b28326c9bb0bffcc9df608060009460209460405260606298968091828152633b9aca00918183898194015284604082015201528160095580600a5581600b5580600c5560405191808352818784015260408301526060820152a160248460a051169160405194859384926356c0dea960e01b845260048401525af19081156200041657600091620003cc575b7f61e9a8fdcaf6f5025df199ada3f11b1fc272bd408c0d6ade5dde1f121658aa5960208585851680916008541617600855604051908152a16040516131579081620006dc82396080518181816104e10152818161081c01528181610d6a0152818161190901528181611cc701528181612a75015261300e015260a05181505060c05181612cfc015260e05181818161051801526119570152f35b6020813d6020116200040d575b81620003e860209383620006a2565b81010312620004095751908282168203620004065750602062000332565b80fd5b5080fd5b3d9150620003d9565b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b0151905038806200019b565b6003600090815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510620004b7576001945083601f198116106200049d575b505050811b01600355620001b1565b015160001960f88460031b161c191690553880806200048e565b8181015183556020948501946001909301929091019062000471565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c810191602085106200053d575b90601f859493920160051c01905b8181106200052d575062000182565b600081558493506001016200051e565b909150819062000510565b634e487b7160e01b600052602260045260246000fd5b91607f16916200016c565b01519050388062000131565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f1984168510620005e8576001945083601f19811610620005ce575b505050811b0160045562000147565b015160001960f88460031b161c19169055388080620005bf565b81810151835560209485019460019093019290910190620005a2565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101602085106200066e575b90849392915b601f830160051c820181106200065e57505062000118565b6000815585945060010162000646565b508062000640565b91607f169162000102565b600080fd5b604081019081106001600160401b038211176200042257604052565b601f909101601f19168101906001600160401b038211908210176200042257604052565b51906001600160a01b0382168203620006815756fe6080604052600436101561001257600080fd5b6000803560e01c806305abfd71146125a157806306fdde03146124a857806318160ddd146106ef57806326afe310146124705780632e1a7d4d14611c415780632f798f8714611b85578063313ce56714611b6957806335815b9514611b4c57806348960ff414611b12578063490ae21014611a8f5780634a9b4b6614611a7057806353d099681461186457806357ab96e1146118465780635c975abb146118245780635e9a5bbd1461180657806367a52793146117e857806369971c29146117ca57806370a08231146103345780637286048e146116e0578063756ff8c714611483578063849a1924146114655780638f6e6aa814611220578063956db465146111d3578063957be30c1461119b57806395d89b411461108b5780639711715a14610ccf578063a6f7f5d614610cb1578063a797ec2114610c92578063b2b7551a14610c01578063b3f0067414610bda578063b6ac642a14610b57578063b6b55f251461075c578063b6f81c8514610739578063c473984e1461071b578063c9870dee146106f4578063d5002f2e146106ef578063e4f1dc3e146106d1578063e941fa78146106b3578063e94b2f4414610695578063eba93b9314610436578063efdcd97414610339578063f5eb42dc14610334578063fb861ac114610316578063fe56e232146102925763ff3d18921461020c57600080fd5b3461028f57602036600319011261028f577f8f6cc6fc24b0b46c3c4ee093907a8fbf22abfeea49c78cda99e5a8d0a5ef0137602060043560008051602061312b8339815191528452600582526040842033600052825261027360ff60406000205416612872565b6102816105dc821115612959565b80601055604051908152a180f35b80fd5b503461028f57602036600319011261028f577f2147e2bc8c39e67f74b1a9e08896ea1485442096765942206af1f4bc8bcde917602060043560008051602061312b833981519152845260058252604084203360005282526102fa60ff60406000205416612872565b61030861012c821115612959565b80600f55604051908152a180f35b503461028f578060031936011261028f576020601254604051908152f35b612743565b503461028f57602036600319011261028f576001600160a01b0361035b612717565b60008051602061312b83398151915283526005602052604083203360005260205261038d60ff60406000205416612872565b1680156103f15760207f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee9160075490807fffffffffffffffffffffffff0000000000000000000000000000000000000000831617600755846040519216178152a180f35b60405162461bcd60e51b815260206004820152601860248201527f436f70696e5661756c743a205a65726f206164647265737300000000000000006044820152606490fd5b503461028f57606036600319011261028f57610450612717565b6024359061045c6130d9565b60008051602061312b8339815191528352602091600583526040842033600052835261048f60ff60406000205416612872565b604051916060830183811067ffffffffffffffff82111761067f57604052600283528383019060403683376104c38461294c565b926001600160a01b03809216809452845191600192831015610669577f000000000000000000000000000000000000000000000000000000000000000081166040878101919091525163095ea7b360e01b81527f000000000000000000000000000000000000000000000000000000000000000082166001600160a01b038116600483015260248201849052958890829060449082908d905af1801561065e57610626575b50928791959387959360405197889663472b43f360e01b8852608488019160048901526044356024890152608060448901525180915260a48701939285905b8282106106075750505050509083809230606483015203925af180156105fc576105cf578280f35b813d83116105f5575b6105e28183612697565b810103126105f05738808280f35b600080fd5b503d6105d8565b6040513d85823e3d90fd5b8451811686528b998b99508d97509586019590940193908301906105a7565b8781813d8311610657575b61063b8183612697565b810103126106535761064c9061280f565b5038610568565b8880fd5b503d610631565b6040513d8b823e3d90fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b503461028f578060031936011261028f576020601454604051908152f35b503461028f578060031936011261028f576020600e54604051908152f35b503461028f578060031936011261028f576020601054604051908152f35b6126f9565b503461028f578060031936011261028f5760206001600160a01b0360085416604051908152f35b503461028f578060031936011261028f576020601154604051908152f35b503461028f578060031936011261028f576020610754612ff3565b604051908152f35b503461028f576020908160031936011261028f5760043561077b6130d9565b61078361281c565b6107a96107a4336001600160a01b0316600052600160205260406000205490565b6130b5565b6009548210610b12576107bc90826127ac565b600a5410610acd576127106107d3600d54836127cf565b046107de8183612802565b906107e88261308c565b928315610ac4575b6040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03907f000000000000000000000000000000000000000000000000000000000000000082169087816064818a865af18015610ab957610a81575b50868361098a575b5050505033835260198452604083206108748282546127ac565b90553383526018845242604084205561088f816014546127ac565b60145561089a6130d9565b3315610945577f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1592936108cf836002546127ac565b600255338552600181526108e78360408720546127ac565b338652600182526040862055847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef604051928584523393a360408051338152602081019290925281019190915280606081015b0390a1600160065580f35b60405162461bcd60e51b815260048101859052601860248201527f4d494e545f544f5f5448455f5a45524f5f4144445245535300000000000000006044820152606490fd5b60075460405163a9059cbb60e01b81529084166001600160a01b03166004820152602481018590529182908189816044810103925af18015610a7657610a17575b507fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd9160809160075416906040519133835288830152604082015260006060820152a13880808661085a565b8681813d8311610a6f575b610a2c8183612697565b81010312610a6b5791608091610a627fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd9461280f565b509150916109cb565b8580fd5b503d610a22565b6040513d88823e3d90fd5b8781813d8311610ab2575b610a968183612697565b81010312610aae57610aa79061280f565b5038610852565b8680fd5b503d610a8c565b6040513d89823e3d90fd5b925081926107f0565b60405162461bcd60e51b815260048101849052601b60248201527f436f70696e5661756c743a204f766572206d617820616d6f756e7400000000006044820152606490fd5b60405162461bcd60e51b815260048101859052601c60248201527f436f70696e5661756c743a20556e646572206d696e20616d6f756e74000000006044820152606490fd5b503461028f57602036600319011261028f577f9a1f74aeeb037eb3d45b22a56376dadd6ba6ded25ec3727e520415f6c76768a9602060043560008051602061312b83398151915284526005825260408420336000528252610bbf60ff60406000205416612872565b610bcc6064821115612959565b80600e55604051908152a180f35b503461028f578060031936011261028f5760206001600160a01b0360075416604051908152f35b503461028f57606036600319011261028f57610c1b612717565b60443590811515809203610c8e5760008051602061312b833981519152835260056020526040832033600052602052610c5b60ff60406000205416612872565b602435835260056020526001600160a01b0360408420911660005260205260406000209060ff8019835416911617905580f35b8280fd5b503461028f57602036600319011261028f5760206107546004356130b5565b503461028f578060031936011261028f576020600f54604051908152f35b503461028f578060031936011261028f57610ce86130d9565b7fac1086a05cae3727da69ff7f07cb2984bc6ba60f9028101f40ea3d8de91f1f95815260206005815260408220336000528152610d2c60ff60406000205416612872565b601254610e10810180821161107757610ce482019081116110775742111561103257610d56612ccc565b9182601655836017556001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001693604051906370a0823160e01b82523060048301528382602481895afa8015610ab9578790611003575b610dbe92506127ac565b93610dcb601454866128be565b60155490878282019283129112908015821691151617610fef57601354610df1916128be565b938015610fe757610e029042612802565b915b82610e74575b5050907fc47707b1747233d136b740d965f1bbc51e05f0428bd3861ff2e4718fd8484eb19260e0926002546014549060155492604051954287528601526040850152866060850152608084015260a083015260c0820152a142601255601355806014558060155580f35b610ece8464496cebb800610e9386610e8e600f548c6127cf565b6127cf565b04809484600754168b60405180968195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af18015610fdc57610f50575b50917fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd60807fc47707b1747233d136b740d965f1bbc51e05f0428bd3861ff2e4718fd8484eb1969360e0969560075416906040519133835287830152604082015260026060820152a19192819450610e0a565b94919392908386813d8311610fd5575b610f6a8183612697565b81010312610fd157608060e0957fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd92610fc37fc47707b1747233d136b740d965f1bbc51e05f0428bd3861ff2e4718fd8484eb19961280f565b509395965093965050610edd565b8780fd5b503d610f60565b6040513d8a823e3d90fd5b508591610e04565b634e487b7160e01b87526011600452602487fd5b508382813d831161102b575b6110198183612697565b810103126105f057610dbe9151610db4565b503d61100f565b60405162461bcd60e51b815260048101839052601360248201527f436f70696e5661756c743a204e6f7420796574000000000000000000000000006044820152606490fd5b634e487b7160e01b84526011600452602484fd5b503461028f578060031936011261028f5760405160035460018082169180821c916000918415611191575b602094858510811461117d57848752869392918690821561115d575050600114611100575b506110e892500383612697565b6110fc6040519282849384528301906126b9565b0390f35b84915060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b8583106111455750506110e89350820101856110db565b8054838901850152879450869390920191810161112e565b60ff1916858201526110e895151560051b85010192508791506110db9050565b634e487b7160e01b84526022600452602484fd5b92607f16926110b6565b503461028f57602036600319011261028f5760406020916001600160a01b036111c2612717565b168152601883522054604051908152f35b503461028f57604036600319011261028f576001600160a01b0360406111f761272d565b9260043581526005602052209116600052602052602060ff604060002054166040519015158152f35b5060031960a03682011261146157611236612717565b9161123f61272d565b9260443567ffffffffffffffff8111610c8e5761126090369060040161277b565b9060643567ffffffffffffffff811161145d5761128190369060040161277b565b60849791973567ffffffffffffffff8111610aae576112a490369060040161277b565b9390946112af6130d9565b60008051602061312b8339815191528852602093600585526040892033600052855260ff60406000205416801561141d575b6112ea90612872565b6001600160a01b036008541697883b15611419579261135594926001600160a01b0361134593819c9d9a99989e9660046040519e8f926311edcd5560e31b8452169101521660248c015260a060448c015260a48b019161290f565b91868984030160648a015261290f565b9285840301608486015280835286830196808260051b850101938388915b8483106113af5789808a8181808c0381838f5af180156113a4576113945750f35b61139d90612667565b61028f5780f35b6040513d84823e3d90fd5b909192939495601f19828203018b528635601e1984360301811215611415578301858135910167ffffffffffffffff8211611411578160051b36038113611411576113ff6001938893849361290f565b98019b01930191909994939299611373565b8b80fd5b8a80fd5b8980fd5b507fac1086a05cae3727da69ff7f07cb2984bc6ba60f9028101f40ea3d8de91f1f958952600585526040808a20336000908152908752205460ff166112e1565b8480fd5b5080fd5b503461028f578060031936011261028f576020601354604051908152f35b506003199060603683011261028f57602460043567ffffffffffffffff823581811161145d576114b790369060040161277b565b926044948535848111610fd1576114d290369060040161277b565b936114db6130d9565b7fac1086a05cae3727da69ff7f07cb2984bc6ba60f9028101f40ea3d8de91f1f95895260059260209484865260408b2033600052865261152260ff60406000205416612872565b806116d1575b50895b88811061166c57506001600160a01b036008541697883b1561141557806040989796959398519a63608d60eb60e01b8c528b01604060048d01525260648a0197908b5b81811061163f5750505091899a918795938b999795938b809a0301908901528386528284818801921b8701019582958a935b8685106115c45750505050505050508383809203925af180156113a4576113945750f35b9295989a50929598509295601f19808583030186528935601e198436030181121561163b578301888135910185821161163757813603811361163757838f93601f848d9681889796889760019b5287870137858286010152011601019a019501950191928a9896938c9a989596926115a0565b8e80fd5b8d80fd5b909193959697988435600d81101561163b5761165e6001928a926128e6565b9a999897950192910161156e565b80851b830135600d811015611411571561168e57611689906128d7565b61152b565b60405162461bcd60e51b815260048101879052601b818401527f436f70696e5661756c743a20496e76616c696420636f6d6d616e640000000000818c0152606490fd5b6116da906129a5565b38611528565b503461028f57608036600319011261028f57604051608081019080821067ffffffffffffffff83111761067f577f77be6ad7f5e9b3ca09a8efa88cc6d00321b9c648b4d21b28326c9bb0bffcc9df9160405260043581526020810160243581526117c4604083019260443584526060810190606435825260008051602061312b83398151915287526005602052604087203360005260205261178960ff60406000205416612872565b519283600955519384600a55519081600b55519081600c55604051948594859094939260609260808301968352602083015260408201520152565b0390a180f35b503461028f578060031936011261028f576020601554604051908152f35b503461028f578060031936011261028f576020600d54604051908152f35b503461028f578060031936011261028f576020601754604051908152f35b503461028f578060031936011261028f5760ff60209154166040519015158152f35b503461028f578060031936011261028f576020601654604051908152f35b503461028f57608036600319011261028f5761187e612717565b602435906064359162ffffff8316809303611a6c5761189b6130d9565b60008051602061312b833981519152845260209260058452604085203360005284526118ce60ff60406000205416612872565b6040519060e082019082821067ffffffffffffffff83111761067f576119ab9387926040526001600160a01b038096169081855287850192877f0000000000000000000000000000000000000000000000000000000000000000168452604086019081526060860130815260808701918383528a60a0890194604435865260c08a01968988528c7f000000000000000000000000000000000000000000000000000000000000000016809a604051809e8195829463095ea7b360e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af1958615611a61578b998b97611a1e575b5090868093926040519c8d9b6304e45aaf60e01b8d52511660048c0152511660248a01525162ffffff166044890152511660648701525160848601525160a4850152511660c483015281865a9260e493f180156105fc576105cf578280f35b8097508a9193929a3d8311611a5a575b611a388183612697565b81010312611411578a988a809793611a50829561280f565b50919293506119bf565b503d611a2e565b6040513d8e823e3d90fd5b8380fd5b503461028f57602036600319011261028f57602061075460043561308c565b503461028f57602036600319011261028f577f206dd15151fcc83315419fbe53a71fcf9c09da803767d3dd05f7874e1b9bf645602060043560008051602061312b83398151915284526005825260408420336000528252611af760ff60406000205416612872565b611b046064821115612959565b80600d55604051908152a180f35b503461028f578060031936011261028f57600954600a54600b54600c54604080519485526020850193909352918301526060820152608090f35b503461028f578060031936011261028f5760206040516127108152f35b503461028f578060031936011261028f57602060405160068152f35b50604036600319011261028f5760043563ffffffff8116809103611461578160243567ffffffffffffffff811680910361146157611bc16130d9565b60008051602061312b8339815191528252600560205260408220338352602052611bf160ff604084205416612872565b6001600160a01b036008541692833b15610c8e57604490836040519586948593632f798f8760e01b8552600485015260248401525af180156113a457611c35575080f35b611c3e90612667565b80f35b503461028f5760208060031936011261146157600435611c5f6130d9565b611c6761281c565b801561242b5733835260188252611c856040842054601154906127ac565b4211156123e657611c958161308c565b90611cb4336001600160a01b0316600052600160205260406000205490565b8281106123a1576001600160a01b0393847f0000000000000000000000000000000000000000000000000000000000000000166040516370a0823160e01b80825230600483015260249184818481875afa90811561215b578a91612374575b508681106122d5575b5060405190815230600482015283818381865afa90811561065e5789916122a8575b50851161223f5733885260198352604088205493670de0b6b3a7640000948581029080820487149015171561222c5790611d77916127e2565b93808602868104820361222c5790611e0288611d95818d96956127e2565b97611dfa611df18b611dec8585612710611db1600e54866127cf565b049e8f9c82821115612220575069021e19e0c9bab240000092610e8e611de393611dda93612802565b601054906127cf565b049c8d92612802565b612802565b9a6015546127ac565b6015556127cf565b04338a5260198552611e1960408b20918254612802565b9055611e236130d9565b33156121dd573389526001845260408920549081881161219a5750611e6087611e4b816130b5565b92611e5882600254612802565b600255612802565b338a526001855260408a2055611e75876130b5565b604051918252848201528660408201527f8b2a1e1ad5e0578c3dd82494156e985dade827a87c573b5c1c7716a32162ad6460603392a2876040518781527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef853392a360405163a9059cbb60e01b80825233600483015260248201879052919084816044818d885af1801561215b57612166575b5080612084575b5083611f58575b604080513381526020810187905290810187905288907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890806060810161093a565b60075460405191825287166001600160a01b031660048201526024810184905291908190839060449082908b905af18015610ab957612008575b505060075460408051338152959091166001600160a01b031660208601528401527ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568927fe76af25749de14614447e2cf967f2a0e48ed157eb8df66ea65baa677f0a35b3e9080606081010390a138808080611f16565b81819392933d831161207d575b61201f8183612697565b81010312610a6b577ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568946120737fe76af25749de14614447e2cf967f2a0e48ed157eb8df66ea65baa677f0a35b3e9361280f565b5094819250611f92565b503d612015565b6007546040518381529089166001600160a01b031660048201526024810182905284816044818d885af1801561215b57612102575b5060807fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd918960075416906040519133835287830152604082015260016060820152a138611f0f565b8481813d8311612154575b6121178183612697565b81010312611419577fbd3ace9c5a7a05061705cc1611b217ffbf7ca874ac719722ff371d100cec7fbd9161214c60809261280f565b5091506120b9565b503d61210d565b6040513d8c823e3d90fd5b8481813d8311612193575b61217b8183612697565b810103126114195761218c9061280f565b5038611f08565b503d612171565b84601b6064926040519262461bcd60e51b845260048401528201527f4255524e5f414d4f554e545f455843454544535f42414c414e434500000000006044820152fd5b83601a6064926040519262461bcd60e51b845260048401528201527f4255524e5f46524f4d5f5448455f5a45524f5f414444524553530000000000006044820152fd5b925050509c8d92612802565b634e487b7160e01b8a526011600452828afd5b8260286084926040519262461bcd60e51b845260048401528201527f436f70696e5661756c743a204e6f7420656e6f7567682077697468647261776160448201527f626c652066756e640000000000000000000000000000000000000000000000006064820152fd5b90508381813d83116122ce575b6122bf8183612697565b81010312610653575138611d3e565b503d6122b5565b600490858a600854166040519384809263d0cb3cd160e01b82525afa918215612369578b92612338575b5061230a9088612802565b90612317600b54836127ac565b11611d1c57600160ff1b811461222c57612332908a036129a5565b38611d1c565b9091508581813d8311612362575b6123508183612697565b8101031261141557519061230a6122ff565b503d612346565b6040513d8d823e3d90fd5b90508481813d831161239a575b61238b8183612697565b81010312611419575138611d13565b503d612381565b60405162461bcd60e51b815260048101859052601e60248201527f436f70696e5661756c743a204e6f7420656e6f7567682062616c616e636500006044820152606490fd5b60405162461bcd60e51b815260048101839052601b60248201527f436f70696e5661756c743a20496e206465706f736974206c6f636b00000000006044820152606490fd5b60405162461bcd60e51b815260048101839052601a60248201527f436f70696e5661756c743a20496e76616c696420616d6f756e740000000000006044820152606490fd5b503461028f57602036600319011261028f5760406020916001600160a01b03612497612717565b168152601983522054604051908152f35b503461028f578060031936011261028f57604051908060045491600183811c92818516948515612597575b602095868610811461258357858852879493929187908215612561575050600114612507575b50506110e892500383612697565b90859250600482527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8583106125495750506110e8935082010138806124f9565b80548389018501528794508693909201918101612531565b92509350506110e894915060ff191682840152151560051b82010138806124f9565b634e487b7160e01b83526022600452602483fd5b93607f16936124d3565b503461028f57602036600319011261028f5760043560008051602061312b83398151915282526005602052604082203383526020526125e660ff604084205416612872565b62093a808111612622576020817fdcfe963699bbde91146a458b58269c446f371daf2f3fe41a428b7783c286f03f92601155604051908152a180f35b60405162461bcd60e51b815260206004820152601d60248201527f436f70696e5661756c743a204f766572206d6178206475726174696f6e0000006044820152606490fd5b67ffffffffffffffff811161067f57604052565b6040810190811067ffffffffffffffff82111761067f57604052565b90601f8019910116810190811067ffffffffffffffff82111761067f57604052565b919082519283825260005b8481106126e5575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016126c4565b346105f05760003660031901126105f0576020600254604051908152f35b600435906001600160a01b03821682036105f057565b602435906001600160a01b03821682036105f057565b346105f05760203660031901126105f0576020610754612761612717565b6001600160a01b0316600052600160205260406000205490565b9181601f840112156105f05782359167ffffffffffffffff83116105f0576020808501948460051b0101116105f057565b919082018092116127b957565b634e487b7160e01b600052601160045260246000fd5b818102929181159184041417156127b957565b81156127ec570490565b634e487b7160e01b600052601260045260246000fd5b919082039182116127b957565b519081151582036105f057565b60026006541461282d576002600655565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b1561287957565b60405162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606490fd5b818103929160001380158285131691841216176127b957565b60001981146127b95760010190565b90600d8210156128f95760209181520190565b634e487b7160e01b600052602160045260246000fd5b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116105f05760209260051b809284830137010190565b8051156106695760200190565b1561296057565b60405162461bcd60e51b815260206004820152601860248201527f436f70696e5661756c743a204f766572206d61782066656500000000000000006044820152606490fd5b60408051916129b38361267b565b6001908184526020908185019282368537600093846129d18861294c565b528551926129de8461267b565b82845284865b818110612ca757505086518186820152858152612a008161267b565b612a098561294c565b52612a138461294c565b5085811315612c8957601654612a2982826127ac565b8260175480921192831593612c6d575b50505015612c0357600854875163095ea7b360e01b81526001600160a01b03918216600482015260248101839052908690829060449082908b907f0000000000000000000000000000000000000000000000000000000000000000165af18015612bf957612bc1575b50612aaf906016546127ac565b6016555b6001600160a01b036008541693843b15610a6b57865163608d60eb60e01b815260048101889052975160448901819052869589959094909360648701939192885b818110612b96575050506003198684030160248701528351908184528084019381808460051b83010196019489915b848310612b5e57505050505050508383809203925af1918215612b54575050612b495750565b612b5290612667565b565b51903d90823e3d90fd5b9285989a5080969950612b8181929598601f979497198682030187528b516126b9565b990193019301899896938c9896939592612b23565b92948497995082969850612bae9086929593516128e6565b9501910190889795928b97959492612af4565b8581813d8311612bf2575b612bd68183612697565b81010312610aae5790612beb612aaf9261280f565b5090612aa2565b503d612bcc565b88513d89823e3d90fd5b865162461bcd60e51b815260048101869052602960248201527f436f70696e5661756c743a204f766572206d6178207661756c7420636f6e666960448201527f6773206d617267696e00000000000000000000000000000000000000000000006064820152608490fd5b612c7c935090611dec916127ac565b600c541015388281612a39565b80612c9f9160ff1c8703908101186017546127ac565b601755612ab3565b60608282880101520185906129e4565b519067ffffffffffffffff821682036105f057565b6001600160a01b03600854166040519163012feb5f60e61b83528160048401526000836024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa928315612ddf57600093612deb575b50600090815b8451831015612d7557612d69612d6f916effffffffffffffffffffffffffffff61010060208760051b8a010151015116906127ac565b926128d7565b91612d33565b9150925060206004926040519384809263d0cb3cd160e01b82525afa8015612ddf57600090612dac575b612da992506127ac565b90565b506020823d8211612dd7575b81612dc560209383612697565b810103126105f057612da99151612d9f565b3d9150612db8565b6040513d6000823e3d90fd5b9092503d806000833e612dfe8183612697565b60208282810103126105f057815167ffffffffffffffff81116105f057820190808301601f830112156105f05781519067ffffffffffffffff821161067f5760405193612e5160208460051b0186612697565b828552602085019382820160206101a08602830101116105f0579360208501945b60206101a086028201018610612e8f575050505050509138612d2d565b6101a08685850103126105f0576040516101a0810181811067ffffffffffffffff82111761067f5760405286516001600160a01b03811681036105f0578152602087015163ffffffff811681036105f0576020820152604087015161ffff811681036105f05760408201526060808801519062ffffff821682036105f0578201526080612f1d81890161280f565b9082015260a0612f2e81890161280f565b9082015260c0808801519060ff821682036105f05782015260e0808801519060038210156105f05782015261010080880151906effffffffffffffffffffffffffffff821682036105f057820152610120612f8a818901612cb7565b90820152610140612f9c818901612cb7565b90820152610160612fae818901612cb7565b90820152610180808801519077ffffffffffffffffffffffffffffffffffffffffffffffff821682036105f05782015282526101a09590950194602090910190612e72565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015612ddf57600090613059575b612da99150613053612ccc565b906127ac565b6020823d8211613084575b8161307160209383612697565b8101031261028f5750612da99051613046565b3d9150613064565b613094612ff3565b806130a0575050600090565b6130b0612da992600254906127cf565b6127e2565b600254806130c4575050600090565b6130b0612da9926130d3612ff3565b906127cf565b60ff600054166130e557565b60405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606490fdfe64187f8aa93f53ce0e5ea22e3705df56cd5a837dd4f05ce64ea82eaa9435f23ca164736f6c6343000812000a000000000000000000000000d1b8ba87fe7e8997ac77ab8aca37a95b300dd39c000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bd3726fc0b8411869ae8268345cfff48747f39da0000000000000000000000005adf41cab6480d589c0de7314ec95f6ae57ba7f6000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000ff162c694eaa571f685030649814282ea457f16900000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45