0 txs
123 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
calcBuyAmount
viewfunction calcBuyAmount(uint256 investmentAmount, uint256 outcomeIndex) view returns (uint256)
calcSellAmount
viewfunction calcSellAmount(uint256 returnAmount, uint256 outcomeIndex) view returns (uint256 outcomeTokenSellAmount)
collateralToken
viewfunction collateralToken() view returns (address)
collectedFees
viewfunction collectedFees() view returns (uint256)
conditionalTokens
viewfunction conditionalTokens() view returns (address)
conditionIds
viewfunction conditionIds(uint256) view returns (bytes32)
decimals
viewfunction decimals() view returns (uint8)
fee
viewfunction fee() view returns (uint256)
feesWithdrawableBy
viewfunction feesWithdrawableBy(address account) view returns (uint256)
generateBasicPartition
purefunction generateBasicPartition(uint256 outcomeSlotCount) pure returns (uint256[] partition)
getBuyEndingOutcomeOdds
viewfunction getBuyEndingOutcomeOdds(uint256 returnAmount, uint256 outcomeIndex) view returns (uint256 outcomeOdds)
getDynamicBuyFee
viewfunction getDynamicBuyFee(uint256 investmentAmount, uint256 outcomeIndex) view returns (uint256)
getPoolBalances
viewfunction getPoolBalances() view returns (uint256[])
getSellEndingOutcomeOdds
viewfunction getSellEndingOutcomeOdds(uint256 returnAmount, uint256 outcomeIndex) view returns (uint256 outcomeOdds)
name
viewfunction name() view returns (string)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
wCollateralToken
viewfunction wCollateralToken() view returns (address)
addFunding
nonpayablefunction addFunding(uint256 addedFunds, uint256[] distributionHint)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
buy
nonpayablefunction buy(uint256 investmentAmount, uint256 outcomeIndex, uint256 minOutcomeTokensToBuy)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address _conditionalTokens, address _collateralToken, address _wCollateralToken, bytes32[] _conditionIds, uint256 _fee)
migrateLiqudity
nonpayablefunction migrateLiqudity()
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
removeFunding
nonpayablefunction removeFunding(uint256 sharesToBurn)
sell
nonpayablefunction sell(uint256 returnAmount, uint256 outcomeIndex, uint256 maxOutcomeTokensToSell)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdrawFees
nonpayablefunction withdrawFees(address account)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
FPMMBuy
event FPMMBuy(address indexed buyer, uint256 investmentAmount, uint256 feeAmount, uint256 indexed outcomeIndex, uint256 outcomeTokensBought)
FPMMFundingAdded
event FPMMFundingAdded(address indexed funder, uint256[] amountsAdded, uint256 sharesMinted)
FPMMFundingRemoved
event FPMMFundingRemoved(address indexed funder, uint256[] amountsRemoved, uint256 collateralRemovedFromFeePool, uint256 sharesBurnt)
FPMMSell
event FPMMSell(address indexed seller, uint256 returnAmount, uint256 feeAmount, uint256 indexed outcomeIndex, uint256 outcomeTokensSold)
LiquidityMigrated
event LiquidityMigrated(uint256 migratedAmount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
PRBMath_UD60x18_Exp_InputTooBig
error PRBMath_UD60x18_Exp_InputTooBig(uint256 x)
PRBMath_UD60x18_Exp2_InputTooBig
error PRBMath_UD60x18_Exp2_InputTooBig(uint256 x)
creation bytecode
0x60806040523480156200001157600080fd5b506040518060400160405280600481526020016346504d4d60e01b81525060405180604001604052806007815260200166046504d4d204c560cc1b81525081600390816200006091906200011d565b5060046200006f82826200011d565b505050620001e9565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a357607f821691505b602082108103620000c457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011857600081815260208120601f850160051c81016020861015620000f35750805b601f850160051c820191505b818110156200011457828155600101620000ff565b5050505b505050565b81516001600160401b0381111562000139576200013962000078565b62000151816200014a84546200008e565b84620000ca565b602080601f831160018114620001895760008415620001705750858301515b600019600386901b1c1916600185901b17855562000114565b600085815260208120601f198616915b82811015620001ba5788860151825594840194600190910190840162000199565b5085821015620001d95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61516c80620001f96000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806370a0823111610125578063d3c9727c116100ad578063ddca3f431161007c578063ddca3f43146104a2578063df9b403e146104ab578063e03031a6146104be578063f23a6e61146104d1578063f55c79d0146104f057600080fd5b8063d3c9727c14610456578063d5f15a4614610469578063d8c55af71461047c578063dd62ed3e1461048f57600080fd5b806395d89b41116100f457806395d89b41146103dd578063a457c2d7146103e5578063a9059cbb146103f8578063b2016bd41461040b578063bc197c811461041e57600080fd5b806370a082311461038657806377489739146103af5780638d6ec4f4146103c25780639003adfe146103d557600080fd5b806329ec5c51116101a85780633950935111610177578063395093511461030757806340993b261461031a5780634343116a1461032d57806352375bb1146103405780635bd9e2991461035557600080fd5b806329ec5c51146102ca5780632f76dcb4146102d2578063313ce567146102e557806336e0720e146102f457600080fd5b806316dbd776116101e457806316dbd7761461027b57806318160ddd1461029c578063207557f9146102a457806323b872dd146102b757600080fd5b806301ffc9a71461021657806306fdde031461023e578063095ea7b314610253578063164e68de14610266575b600080fd5b6102296102243660046147ac565b610503565b60405190151581526020015b60405180910390f35b61024661053a565b60405161023591906147fa565b610229610261366004614842565b6105cc565b61027961027436600461486e565b6105e4565b005b61028e61028936600461486e565b610848565b604051908152602001610235565b60025461028e565b61028e6102b236600461488b565b6108ae565b6102296102c53660046148ad565b610a3e565b610279610a62565b61028e6102e036600461488b565b610bd2565b60405160128152602001610235565b610279610302366004614939565b610c5d565b610229610315366004614842565b610fe2565b6102796103283660046149bc565b611004565b61028e61033b36600461488b565b611366565b610348611521565b6040516102359190614a23565b60055461036e906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610235565b61028e61039436600461486e565b6001600160a01b031660009081526020819052604090205490565b61028e6103bd36600461488b565b61163b565b6103486103d0366004614a36565b611751565b61028e6117dc565b6102466117fa565b6102296103f3366004614842565b611809565b610229610406366004614842565b611884565b60075461036e906001600160a01b031681565b61043d61042c366004614b92565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610235565b6102796104643660046149bc565b611892565b610279610477366004614c3f565b611b8b565b61028e61048a366004614a36565b6121ed565b61028e61049d366004614c8a565b61220e565b61028e60095481565b60065461036e906001600160a01b031681565b6102796104cc366004614a36565b612239565b61043d6104df366004614cc3565b63f23a6e6160e01b95945050505050565b61028e6104fe36600461488b565b6125b2565b60006001600160e01b03198216630271189760e51b148061053457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461054990614d2b565b80601f016020809104026020016040519081016040528092919081815260200182805461057590614d2b565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b5050505050905090565b6000336105da81858561274f565b5060019392505050565b60005b6008548110156106e457600560029054906101000a90046001600160a01b03166001600160a01b031663dd34de676008838154811061062857610628614d5f565b90600052602060002001546040518263ffffffff1660e01b815260040161065191815260200190565b602060405180830381865afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106929190614d75565b6000036106d25760405162461bcd60e51b8152602060048201526009602482015268085c995cdbdb1d995960ba1b60448201526064015b60405180910390fd5b806106dc81614da4565b9150506105e7565b5060006106f060025490565b61071b610712846001600160a01b031660009081526020819052604090205490565b600a5490612873565b6107259190614dd3565b6001600160a01b0383166000908152600e60205260408120549192509061074d90839061287f565b90508015610843576001600160a01b0383166000908152600e60205260409020829055600f5461077d908261288b565b600f5560075460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190614de7565b6108435760405162461bcd60e51b815260206004820152601a60248201527f7769746864726177616c207472616e73666572206661696c656400000000000060448201526064016106c9565b505050565b60008061085460025490565b610876610712856001600160a01b031660009081526020819052604090205490565b6108809190614dd3565b6001600160a01b0384166000908152600e60205260409020549091506108a790829061287f565b9392505050565b6000806108b9611521565b905060006108da600954670de0b6b3a764000061287f90919063ffffffff16565b6108ec86670de0b6b3a7640000612873565b6108f69190614dd3565b9050600082858151811061090c5761090c614d5f565b602002602001015190506000610933670de0b6b3a76400008361287390919063ffffffff16565b9050670de0b6b3a764000060005b85518110156109d95787811461099957600086828151811061096557610965614d5f565b60200260200101519050610995610985878361287f90919063ffffffff16565b61098f8684612873565b90612897565b9350505b6109c58682815181106109ae576109ae614d5f565b60200260200101518361287390919063ffffffff16565b9150806109d181614da4565b915050610941565b5060006109f8670de0b6b3a76400006109f28486612897565b90612873565b90506000610a06848361288b565b9050610a30610a218261098f87670de0b6b3a7640000612873565b670de0b6b3a76400009061287f565b9a9950505050505050505050565b600033610a4c8582856128d1565b610a5785858561294b565b506001949350505050565b6005546201000090046001600160a01b0316338114610ab45760405162461bcd60e51b815260206004820152600e60248201526d696e76616c696420736f7572636560901b60448201526064016106c9565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190614d75565b60075460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190614de7565b506040518181527f11d9afb81cf06c9da847f0c56047cd3a12fe8b8f0dd57b6aaffb14d5dfb77a099060200160405180910390a15050565b600080610bdf848461163b565b90506000610bfd610bf5610bf881856005612873565b90565b612afa565b90506000610c29610bf5610c1a8185670de0b6b3a764000061287f565b681b1ae4d6e2ef500000612b50565b9050610c536064610c4d671bc16d674ec80000610c4760fa86612873565b9061288b565b90612b68565b9695505050505050565b600554610100900460ff16610c785760055460ff1615610c7c565b303b155b610cdf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106c9565b600554610100900460ff16158015610d01576005805461ffff19166101011790555b600580546001600160a01b03808a16620100000262010000600160b01b031990921691909117909155600780548883166001600160a01b0319918216179091556006805492881692909116919091179055610d5e6008858561467a565b5060098290556008546001906001600160401b03811115610d8157610d81614a4f565b604051908082528060200260200182016040528015610daa578160200160208202803683370190505b508051610dbf91600b916020909101906146c5565b5060005b600854811015610ea857600554600880546000926201000090046001600160a01b03169163d42dc0c29185908110610dfd57610dfd614d5f565b90600052602060002001546040518263ffffffff1660e01b8152600401610e2691815260200190565b602060405180830381865afa158015610e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e679190614d75565b9050610e738184614e09565b925080600b8381548110610e8957610e89614d5f565b6000918252602090912001555080610ea081614da4565b915050610dc3565b5060018111610ef95760405162461bcd60e51b815260206004820152601860248201527f636f6e646974696f6e73206d7573742062652076616c6964000000000000000060448201526064016106c9565b6008546001600160401b03811115610f1357610f13614a4f565b604051908082528060200260200182016040528015610f4657816020015b6060815260200190600190039081610f315790505b508051610f5b91600c91602090910190614700565b50600854610f6a906000612b74565b600d548114610fc65760405162461bcd60e51b815260206004820152602260248201527f706f736974696f6e2049447320636f6e737472756374696f6e206661696c6564604482015261213f60f01b60648201526084016106c9565b508015610fd9576005805461ff00191690555b50505050505050565b6000336105da818585610ff5838361220e565b610fff9190614e20565b61274f565b82600081116110435760405162461bcd60e51b815260206004820152600b60248201526a1e995c9bc8185b5bdd5b9d60aa1b60448201526064016106c9565b600061104f85856125b2565b9050828110156110a15760405162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2062757920616d6f756e74206e6f742072656163686564000060448201526064016106c9565b6007546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c9190614de7565b61115f5760405162461bcd60e51b815260206004820152601460248201527318dbdcdd081d1c985b9cd9995c8819985a5b195960621b60448201526064016106c9565b6009546000670de0b6b3a76400006111778884612873565b6111819190614dd3565b600a54909150611191908261288b565b600a5560006111a0888361287f565b60075460055460405163095ea7b360e01b81526001600160a01b03620100009092048216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af11580156111fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112219190614de7565b61126d5760405162461bcd60e51b815260206004820152601a60248201527f617070726f76616c20666f722073706c697473206661696c656400000000000060448201526064016106c9565b61127833888a612ca7565b61128181612d11565b600560029054906101000a90046001600160a01b03166001600160a01b031663f242432a3033600d8b815481106112ba576112ba614d5f565b9060005260206000200154886040518563ffffffff1660e01b81526004016112e59493929190614e33565b600060405180830381600087803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b5050604080518b8152602081018690529081018790528992503391507f4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf89060600160405180910390a35050505050505050565b600d5460009082106113b25760405162461bcd60e51b81526020600482015260156024820152740d2dcecc2d8d2c840deeae8c6dedaca40d2dcc8caf605b1b60448201526064016106c9565b60006113bc611521565b905060006113dd600954670de0b6b3a764000061287f90919063ffffffff16565b6113ef86670de0b6b3a7640000612873565b6113f99190614dd3565b9050600082858151811061140f5761140f614d5f565b602002602001015190506000611436670de0b6b3a76400008361287390919063ffffffff16565b905060005b845181101561149f5786811461148d57600085828151811061145f5761145f614d5f565b6020026020010151905061148961147f868361287f90919063ffffffff16565b61098f8584612873565b9250505b8061149781614da4565b91505061143b565b50600081116114f05760405162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e636573000000000060448201526064016106c9565b6115168261151061150984670de0b6b3a7640000612897565b869061288b565b9061287f565b979650505050505050565b600d546060906000906001600160401b0381111561154157611541614a4f565b60405190808252806020026020018201604052801561156a578160200160208202803683370190505b50905060005b600d548110156115b7573082828151811061158d5761158d614d5f565b6001600160a01b0390921660209283029190910190910152806115af81614da4565b915050611570565b506005546040516313849cfd60e21b8152620100009091046001600160a01b031690634e1273f4906115f0908490600d90600401614ea0565b600060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116359190810190614ef6565b91505090565b600080611646611521565b9050600081848151811061165c5761165c614d5f565b602002602001015190506000611683670de0b6b3a76400008361287390919063ffffffff16565b9050670de0b6b3a764000060005b8451811015611702578681146116d95760008582815181106116b5576116b5614d5f565b602002602001015190506116d56109858a8361288b90919063ffffffff16565b9350505b6116ee8582815181106109ae576109ae614d5f565b9150806116fa81614da4565b915050611691565b50600061171b670de0b6b3a76400006109f28486612897565b90506000611729848361288b565b9050611744610a218261098f87670de0b6b3a7640000612873565b9998505050505050505050565b6060816001600160401b0381111561176b5761176b614a4f565b604051908082528060200260200182016040528015611794578160200160208202803683370190505b50905060005b828110156117d657806001901b8282815181106117b9576117b9614d5f565b6020908102919091010152806117ce81614da4565b91505061179a565b50919050565b60006117f5600f54600a5461287f90919063ffffffff16565b905090565b60606004805461054990614d2b565b60003381611817828661220e565b9050838110156118775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106c9565b610a57828686840361274f565b6000336105da81858561294b565b82600081116118d15760405162461bcd60e51b815260206004820152600b60248201526a1e995c9bc8185b5bdd5b9d60aa1b60448201526064016106c9565b6704db7325476300006118e485856108ae565b10156119235760405162461bcd60e51b815260206004820152600e60248201526d506f6f6c206f646473203c33352560901b60448201526064016106c9565b600061192f8585611366565b9050828111156119815760405162461bcd60e51b815260206004820152601c60248201527f6d6178696d756d2073656c6c20616d6f756e742065786365656465640000000060448201526064016106c9565b600560029054906101000a90046001600160a01b03166001600160a01b031663f242432a3330600d88815481106119ba576119ba614d5f565b9060005260206000200154856040518563ffffffff1660e01b81526004016119e59493929190614e33565b600060405180830381600087803b1580156119ff57600080fd5b505af1158015611a13573d6000803e3d6000fd5b50505050611a22338587612e80565b6000611a41600954670de0b6b3a764000061287f90919063ffffffff16565b600954611a4f908890612873565b611a599190614dd3565b600a54909150611a69908261288b565b600a556000611a78878361288b565b9050611a8381612ec0565b60075460405163a9059cbb60e01b8152336004820152602481018990526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af89190614de7565b611b3d5760405162461bcd60e51b81526020600482015260166024820152751c995d1d5c9b881d1c985b9cd9995c8819985a5b195960521b60448201526064016106c9565b6040805188815260208101849052908101849052869033907fadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b49060600160405180910390a350505050505050565b60008311611bdb5760405162461bcd60e51b815260206004820152601860248201527f66756e64696e67206d757374206265206e6f6e2d7a65726f000000000000000060448201526064016106c9565b600d546000906001600160401b03811115611bf857611bf8614a4f565b604051908082528060200260200182016040528015611c21578160200160208202803683370190505b5090506000611c2f60025490565b905060008115611d99578315611ca25760405162461bcd60e51b815260206004820152603260248201527f63616e6e6f742075736520646973747269627574696f6e2068696e7420616674604482015271657220696e697469616c2066756e64696e6760701b60648201526084016106c9565b6000611cac611521565b90506000805b8251811015611cf8576000838281518110611ccf57611ccf614d5f565b6020026020010151905080831015611ce5578092505b5080611cf081614da4565b915050611cb2565b5060005b8251811015611d7a57600082611d34858481518110611d1d57611d1d614d5f565b60200260200101518c61287390919063ffffffff16565b611d3e9190614dd3565b9050611d4a8a8261287f565b878381518110611d5c57611d5c614d5f565b60209081029190910101525080611d7281614da4565b915050611cfc565b5080611d868986612873565b611d909190614dd3565b92505050611f00565b8315611efd57600d548414611de25760405162461bcd60e51b815260206004820152600f60248201526e3434b73a103632b733ba341037b33360891b60448201526064016106c9565b6000805b85811015611e2a576000878783818110611e0257611e02614d5f565b90506020020135905080831015611e17578092505b5080611e2281614da4565b915050611de6565b5060005b85811015611efa57600082611e64898985818110611e4e57611e4e614d5f565b905060200201358b61287390919063ffffffff16565b611e6e9190614dd3565b905060008111611ec05760405162461bcd60e51b815260206004820152601e60248201527f6d7573742068696e7420612076616c696420646973747269627574696f6e000060448201526064016106c9565b611eca898261287f565b868381518110611edc57611edc614d5f565b60209081029190910101525080611ef281614da4565b915050611e2e565b50505b50845b6007546040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190614de7565b611fc75760405162461bcd60e51b815260206004820152601760248201527f66756e64696e67207472616e73666572206661696c656400000000000000000060448201526064016106c9565b60075460055460405163095ea7b360e01b81526001600160a01b0362010000909204821660048201526024810189905291169063095ea7b3906044016020604051808303816000875af1158015612022573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120469190614de7565b6120925760405162461bcd60e51b815260206004820152601a60248201527f617070726f76616c20666f722073706c697473206661696c656400000000000060448201526064016106c9565b61209b86612d11565b6120a53382613005565b6120bb3360006120b6896002612b68565b612ca7565b6120cc3360016120b6896002612b68565b600554604051631759616b60e11b8152620100009091046001600160a01b031690632eb2c2d6906121089030903390600d908990600401614f7b565b600060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b5050505060005b83518110156121a15761217284828151811061215b5761215b614d5f565b60200260200101518861287f90919063ffffffff16565b84828151811061218457612184614d5f565b60209081029190910101528061219981614da4565b91505061213d565b50336001600160a01b03167fec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a95184836040516121dd929190614fd6565b60405180910390a2505050505050565b600881815481106121fd57600080fd5b600091825260209091200154905081565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60005b60085481101561233457600560029054906101000a90046001600160a01b03166001600160a01b031663dd34de676008838154811061227d5761227d614d5f565b90600052602060002001546040518263ffffffff1660e01b81526004016122a691815260200190565b602060405180830381865afa1580156122c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e79190614d75565b6000036123225760405162461bcd60e51b8152602060048201526009602482015268085c995cdbdb1d995960ba1b60448201526064016106c9565b8061232c81614da4565b91505061223c565b50600061233f611521565b9050600081516001600160401b0381111561235c5761235c614a4f565b604051908082528060200260200182016040528015612385578160200160208202803683370190505b509050600061239360025490565b905060005b835181101561240757816123ce868684815181106123b8576123b8614d5f565b602002602001015161287390919063ffffffff16565b6123d89190614dd3565b8382815181106123ea576123ea614d5f565b6020908102919091010152806123ff81614da4565b915050612398565b506007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612451573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124759190614d75565b905061248133866130d0565b6007546040516370a0823160e01b81523060048201526124f6916001600160a01b0316906370a0823190602401602060405180830381865afa1580156124cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ef9190614d75565b829061287f565b600554604051631759616b60e11b81529192506201000090046001600160a01b031690632eb2c2d6906125349030903390600d908990600401614f7b565b600060405180830381600087803b15801561254e57600080fd5b505af1158015612562573d6000803e3d6000fd5b50505050336001600160a01b03167f8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e78483886040516125a393929190614ff8565b60405180910390a25050505050565b600d5460009082106125fe5760405162461bcd60e51b81526020600482015260156024820152740d2dcecc2d8d2c840deeae8c6dedaca40d2dcc8caf605b1b60448201526064016106c9565b6000612608611521565b6009549091506000612637670de0b6b3a76400006126268885612873565b6126309190614dd3565b879061287f565b9050600083868151811061264d5761264d614d5f565b602002602001015190506000612674670de0b6b3a76400008361287390919063ffffffff16565b905060005b85518110156126d3578781146126c157600086828151811061269d5761269d614d5f565b602002602001015190506126bd61147f868361288b90919063ffffffff16565b9250505b806126cb81614da4565b915050612679565b50600081116127245760405162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e636573000000000060448201526064016106c9565b61274361273982670de0b6b3a7640000612897565b611510848661288b565b98975050505050505050565b6001600160a01b0383166127b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c9565b6001600160a01b0382166128125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108a78284614e09565b60006108a7828461501d565b60006108a78284614e20565b600082156128c757816128ab60018561501d565b6128b59190614dd3565b6128c0906001614e20565b9050610534565b6108a78284614dd3565b60006128dd848461220e565b9050600019811461294557818110156129385760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106c9565b612945848484840361274f565b50505050565b6001600160a01b0383166129af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c9565b6001600160a01b038216612a115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c9565b612a1c83838361320e565b6001600160a01b03831660009081526020819052604090205481811015612a945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106c9565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3612945565b600081680736ea4425c11ac630811115612b2a57604051630d7b1d6560e11b8152600481018490526024016106c9565b6714057b7ef767814f8102612b48670de0b6b3a76400008204613346565b949350505050565b60006108a7610bf584670de0b6b3a76400008561339c565b60006108a78284614dd3565b81600003612bf6576007546040805160609290921b6bffffffffffffffffffffffff191660208084019190915260348084019490945281518084039094018452605490920190528151910120600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5015550565b81612c0081615030565b9250506000600b8381548110612c1857612c18614d5f565b90600052602060002001549050600c8381548110612c3857612c38614d5f565b600091825260208083209091018054600181018255908352908220018390555b8181101561294557612c9584612c908560088881548110612c7b57612c7b614d5f565b9060005260206000200154856001901b613470565b612b74565b80612c9f81614da4565b915050612c58565b600654604051630ab714fb60e11b81526001600160a01b03858116600483015260248201849052604482018590529091169063156e29f6906064015b600060405180830381600087803b158015612cfd57600080fd5b505af1158015610fd9573d6000803e3d6000fd5b600854600090612d2390600190615047565b90505b60008112612e7c5760008190506000612d5b600b8381548110612d4b57612d4b614d5f565b9060005260206000200154611751565b905060005b600c8381548110612d7357612d73614d5f565b600091825260209091200154811015612e6657600554600754600c80546001600160a01b03620100009094048416936372ce42759316919087908110612dbb57612dbb614d5f565b906000526020600020018481548110612dd657612dd6614d5f565b906000526020600020015460088781548110612df457612df4614d5f565b9060005260206000200154868a6040518663ffffffff1660e01b8152600401612e2195949392919061506e565b600060405180830381600087803b158015612e3b57600080fd5b505af1158015612e4f573d6000803e3d6000fd5b505050508080612e5e90614da4565b915050612d60565b5050508080612e74906150ad565b915050612d26565b5050565b600654604051637a94c56560e11b81526001600160a01b03858116600483015260248201849052604482018590529091169063f5298aca90606401612ce3565b60005b600854811015612e7c576000612ee5600b8381548110612d4b57612d4b614d5f565b905060005b600c8381548110612efd57612efd614d5f565b600091825260209091200154811015612ff057600554600754600c80546001600160a01b0362010000909404841693639e7212ad9316919087908110612f4557612f45614d5f565b906000526020600020018481548110612f6057612f60614d5f565b906000526020600020015460088781548110612f7e57612f7e614d5f565b906000526020600020015486896040518663ffffffff1660e01b8152600401612fab95949392919061506e565b600060405180830381600087803b158015612fc557600080fd5b505af1158015612fd9573d6000803e3d6000fd5b505050508080612fe890614da4565b915050612eea565b50508080612ffd90614da4565b915050612ec3565b6001600160a01b03821661305b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106c9565b6130676000838361320e565b80600260008282546130799190614e20565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166131305760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106c9565b61313c8260008361320e565b6001600160a01b038216600090815260208190526040902054818110156131b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016106c9565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0383161561322657613226836105e4565b600061323160025490565b90506000811561325957600a54829061324a9085612873565b6132549190614dd3565b61325b565b825b90506001600160a01b038516156132bd576001600160a01b0385166000908152600e602052604090205461328f908261287f565b6001600160a01b0386166000908152600e6020526040902055600f546132b5908261287f565b600f556132ce565b600a546132ca908261288b565b600a555b6001600160a01b0384161561332e576001600160a01b0384166000908152600e6020526040902054613300908261288b565b6001600160a01b0385166000908152600e6020526040902055600f54613326908261288b565b600f5561333f565b600a5461333b908261287f565b600a555b5050505050565b600081680a688906bd8affffff8111156133765760405163b3b6ba1f60e01b8152600481018490526024016106c9565b600061338e670de0b6b3a7640000604084901b614dd3565b9050612b48610bf582613775565b60008080600019858709858702925082811083820303915050806000036133d6578382816133cc576133cc614dbd565b04925050506108a7565b83811061340757604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106c9565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600080838360405160200161348f929190918252602082015260400190565b60408051601f198184030181529190528051602090910120905060ff81901c15156000805b60008051602061511783398151915260018508935060008051602061511783398151915260036000805160206151178339815191528087880987090890506134fb81613ed5565b915080600080516020615117833981519152838409036134b45782801561352a57506135286002836150c2565b155b8061354857508215801561354857506135446002836150c2565b6001145b15613568576135658260008051602061511783398151915261501d565b91505b87801561374c5760fe81901c151593506001600160fe1b0316600080516020615117833981519152600360008051602061511783398151915280848509840908915060006135b583613ed5565b90508480156135cc57506135ca6002826150c2565b155b806135ea5750841580156135ea57506135e66002826150c2565b6001145b1561360a576136078160008051602061511783398151915261501d565b90505b826000805160206151178339815191528283091461366a5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420706172656e7420636f6c6c656374696f6e2049440000000060448201526064016106c9565b60408051602081018890529081018590526060810183905260808101829052600090819060069060a00160408051601f19818403018152908290526136ae916150d6565b600060405180830381855afa9150503d80600081146136e9576040519150601f19603f3d011682016040523d82523d6000602084013e6136ee565b606091505b50915091508161372f5760405162461bcd60e51b815260206004820152600c60248201526b1958d859190819985a5b195960a21b60448201526064016106c9565b8080602001905181019061374391906150f2565b90985095505050505b6137576002846150c2565b60010361376857600160fe1b851894505b5092979650505050505050565b600160bf1b67ff00000000000000821615613882576780000000000000008216156137a95768016a09e667f3bcc9090260401c5b6740000000000000008216156137c8576801306fe0a31b7152df0260401c5b6720000000000000008216156137e7576801172b83c7d517adce0260401c5b6710000000000000008216156138065768010b5586cf9890f62a0260401c5b670800000000000000821615613825576801059b0d31585743ae0260401c5b67040000000000000082161561384457680102c9a3e778060ee70260401c5b6702000000000000008216156138635768010163da9fb33356d80260401c5b67010000000000000082161561388257680100b1afa5abcbed610260401c5b66ff0000000000008216156139815766800000000000008216156138af5768010058c86da1c09ea20260401c5b66400000000000008216156138cd576801002c605e2e8cec500260401c5b66200000000000008216156138eb57680100162f3904051fa10260401c5b6610000000000000821615613909576801000b175effdc76ba0260401c5b660800000000000082161561392757680100058ba01fb9f96d0260401c5b66040000000000008216156139455768010002c5cc37da94920260401c5b6602000000000000821615613963576801000162e525ee05470260401c5b66010000000000008216156139815768010000b17255775c040260401c5b65ff0000000000821615613a7757658000000000008216156139ac576801000058b91b5bc9ae0260401c5b654000000000008216156139c957680100002c5c89d5ec6d0260401c5b652000000000008216156139e65768010000162e43f4f8310260401c5b65100000000000821615613a0357680100000b1721bcfc9a0260401c5b65080000000000821615613a205768010000058b90cf1e6e0260401c5b65040000000000821615613a3d576801000002c5c863b73f0260401c5b65020000000000821615613a5a57680100000162e430e5a20260401c5b65010000000000821615613a77576801000000b1721835510260401c5b64ff00000000821615613b6457648000000000821615613aa057680100000058b90c0b490260401c5b644000000000821615613abc5768010000002c5c8601cc0260401c5b642000000000821615613ad8576801000000162e42fff00260401c5b641000000000821615613af45768010000000b17217fbb0260401c5b640800000000821615613b10576801000000058b90bfce0260401c5b640400000000821615613b2c57680100000002c5c85fe30260401c5b640200000000821615613b485768010000000162e42ff10260401c5b640100000000821615613b6457680100000000b17217f80260401c5b63ff000000821615613c48576380000000821615613b8b5768010000000058b90bfc0260401c5b6340000000821615613ba6576801000000002c5c85fe0260401c5b6320000000821615613bc157680100000000162e42ff0260401c5b6310000000821615613bdc576801000000000b17217f0260401c5b6308000000821615613bf757680100000000058b90c00260401c5b6304000000821615613c125768010000000002c5c8600260401c5b6302000000821615613c2d576801000000000162e4300260401c5b6301000000821615613c485768010000000000b172180260401c5b62ff0000821615613d235762800000821615613c6d576801000000000058b90c0260401c5b62400000821615613c8757680100000000002c5c860260401c5b62200000821615613ca15768010000000000162e430260401c5b62100000821615613cbb57680100000000000b17210260401c5b62080000821615613cd55768010000000000058b910260401c5b62040000821615613cef576801000000000002c5c80260401c5b62020000821615613d0957680100000000000162e40260401c5b62010000821615613d23576801000000000000b1720260401c5b61ff00821615613df557618000821615613d4657680100000000000058b90260401c5b614000821615613d5f5768010000000000002c5d0260401c5b612000821615613d78576801000000000000162e0260401c5b611000821615613d915768010000000000000b170260401c5b610800821615613daa576801000000000000058c0260401c5b610400821615613dc357680100000000000002c60260401c5b610200821615613ddc57680100000000000001630260401c5b610100821615613df557680100000000000000b10260401c5b60ff821615613ebe576080821615613e1657680100000000000000590260401c5b6040821615613e2e576801000000000000002c0260401c5b6020821615613e4657680100000000000000160260401c5b6010821615613e5e576801000000000000000b0260401c5b6008821615613e7657680100000000000000060260401c5b6004821615613e8e57680100000000000000030260401c5b6002821615613ea657680100000000000000010260401c5b6001821615613ebe57680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000600080516020615117833981519152808380099150808283098181820990508181840992508183850993508184840992508183840990508181820982818309905082818209905082818209905082818309915082828609945082858609915082828309915082828509935082848509915082828309915082828309915082828509915082828609945082858609915082828309915082828309915082828609915082828509935082848609945082858609915082828309915082828509935082848509915082828309905082818209905082818209905082818309915082828609945082858509935082848509915082828309915082828309915082828609945082858609915082828309915082828609915082828309915082828309915082828609915082828509935082848509915082828309905082818209905082818309905082818509905082818209905082818209905082818209905082818209905082818309915082828609945082858609915082828609915082828509935082848509915082828509915082828309915082828309905082818309905082818209838182099050838182099050838182099050838182099050838183099150508281830991508282860994508285850993508284850991508282860994508285850993508284860994508285850993508284860994508285860991508282860991508282830991508282850993508284850991508282830991508282860994508285850993508284850991508282850991508282860994508285850993508284860994508285850993508284850991508282830991508282850991508282860994508285860991508282860991508282850993508284860994508285850993508284860994508285850993508284850991508282850991508282830991508282860994508285850993508284850991508282850991508282830991508282860994508285860991508282830990508281820990508281830990508281860990508281820990508281820990508281820990508281820990508281830991508282850993508284860994508285850993508284860994508285860991508282860991508282830991508282830991508282830991508282860991508282850993508284850991508282850991508282830991508282860994508285860991508282860991508282850993508284860994508285860991508282830991508282850993508284860994508285860991508282850993508284860994508285850993508284850991508282850991508282860994508285850993508284850991508282850991508282830991508282830991508282860994508285860991508282830991508282830991508282860991508282850993508284860994508285860991508282860990508281820990508281820990508281830991508282850993508284850991508282860994508285850993508284860994508285850993508284860994508285850993508284850991508282850990508281850991508282830991508282830991508282820991505081818509935081848409925081838509935081848409925081838509935081848509905081818509905081818409925050808284099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808384099250808383099392505050565b8280548282559060005260206000209081019282156146b5579160200282015b828111156146b557823582559160200191906001019061469a565b506146c1929150614759565b5090565b8280548282559060005260206000209081019282156146b5579160200282015b828111156146b55782518255916020019190600101906146e5565b82805482825590600052602060002090810192821561474d579160200282015b8281111561474d578251805161473d9184916020909101906146c5565b5091602001919060010190614720565b506146c192915061476e565b5b808211156146c1576000815560010161475a565b808211156146c1576000614782828261478b565b5060010161476e565b50805460008255906000526020600020908101906147a99190614759565b50565b6000602082840312156147be57600080fd5b81356001600160e01b0319811681146108a757600080fd5b60005b838110156147f15781810151838201526020016147d9565b50506000910152565b60208152600082518060208401526148198160408501602087016147d6565b601f01601f19169190910160400192915050565b6001600160a01b03811681146147a957600080fd5b6000806040838503121561485557600080fd5b82356148608161482d565b946020939093013593505050565b60006020828403121561488057600080fd5b81356108a78161482d565b6000806040838503121561489e57600080fd5b50508035926020909101359150565b6000806000606084860312156148c257600080fd5b83356148cd8161482d565b925060208401356148dd8161482d565b929592945050506040919091013590565b60008083601f84011261490057600080fd5b5081356001600160401b0381111561491757600080fd5b6020830191508360208260051b850101111561493257600080fd5b9250929050565b60008060008060008060a0878903121561495257600080fd5b863561495d8161482d565b9550602087013561496d8161482d565b9450604087013561497d8161482d565b935060608701356001600160401b0381111561499857600080fd5b6149a489828a016148ee565b979a9699509497949695608090950135949350505050565b6000806000606084860312156149d157600080fd5b505081359360208301359350604090920135919050565b600081518084526020808501945080840160005b83811015614a18578151875295820195908201906001016149fc565b509495945050505050565b6020815260006108a760208301846149e8565b600060208284031215614a4857600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614a8d57614a8d614a4f565b604052919050565b60006001600160401b03821115614aae57614aae614a4f565b5060051b60200190565b600082601f830112614ac957600080fd5b81356020614ade614ad983614a95565b614a65565b82815260059290921b84018101918181019086841115614afd57600080fd5b8286015b84811015614b185780358352918301918301614b01565b509695505050505050565b600082601f830112614b3457600080fd5b81356001600160401b03811115614b4d57614b4d614a4f565b614b60601f8201601f1916602001614a65565b818152846020838601011115614b7557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614baa57600080fd5b8535614bb58161482d565b94506020860135614bc58161482d565b935060408601356001600160401b0380821115614be157600080fd5b614bed89838a01614ab8565b94506060880135915080821115614c0357600080fd5b614c0f89838a01614ab8565b93506080880135915080821115614c2557600080fd5b50614c3288828901614b23565b9150509295509295909350565b600080600060408486031215614c5457600080fd5b8335925060208401356001600160401b03811115614c7157600080fd5b614c7d868287016148ee565b9497909650939450505050565b60008060408385031215614c9d57600080fd5b8235614ca88161482d565b91506020830135614cb88161482d565b809150509250929050565b600080600080600060a08688031215614cdb57600080fd5b8535614ce68161482d565b94506020860135614cf68161482d565b9350604086013592506060860135915060808601356001600160401b03811115614d1f57600080fd5b614c3288828901614b23565b600181811c90821680614d3f57607f821691505b6020821081036117d657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215614d8757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600060018201614db657614db6614d8e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614de257614de2614dbd565b500490565b600060208284031215614df957600080fd5b815180151581146108a757600080fd5b808202811582820484141761053457610534614d8e565b8082018082111561053457610534614d8e565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6000815480845260208085019450836000528060002060005b83811015614a1857815487529582019560019182019101614e84565b604080825283519082018190526000906020906060840190828701845b82811015614ee25781516001600160a01b031684529284019290840190600101614ebd565b50505083810382850152610c538186614e6b565b60006020808385031215614f0957600080fd5b82516001600160401b03811115614f1f57600080fd5b8301601f81018513614f3057600080fd5b8051614f3e614ad982614a95565b81815260059190911b82018301908381019087831115614f5d57600080fd5b928401925b8284101561151657835182529284019290840190614f62565b6001600160a01b0385811682528416602082015260a060408201819052600090614fa790830185614e6b565b8281036060840152614fb981856149e8565b838103608090940193909352505060008152602001949350505050565b604081526000614fe960408301856149e8565b90508260208301529392505050565b60608152600061500b60608301866149e8565b60208301949094525060400152919050565b8181038181111561053457610534614d8e565b60008161503f5761503f614d8e565b506000190190565b818103600083128015838313168383128216171561506757615067614d8e565b5092915050565b60018060a01b038616815284602082015283604082015260a06060820152600061509b60a08301856149e8565b90508260808301529695505050505050565b6000600160ff1b820161503f5761503f614d8e565b6000826150d1576150d1614dbd565b500690565b600082516150e88184602087016147d6565b9190910192915050565b6000806040838503121561510557600080fd5b50508051602090910151909290915056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220b535639921c801aa142618a9725fe7d8ed04968bea0afae3859eaf375667783264736f6c63430008140033