Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "name": "ClaimFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NotifyReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "reward", "type": "address" } ], "name": "addInitialReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimFees", "outputs": [ { "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address[]", "name": "requestedRewards", "type": "address[]" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "depositAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "derivedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "derivedBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "derivedSupplyPerReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "_reward", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "exitRewardPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeDistributor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getRegisteredRewards", "outputs": [ { "internalType": "address[]", "name": "_rewards", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address[]", "name": "tokens", "type": "address[]" } ], "name": "getReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "initialRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_stake", "type": "address" }, { "internalType": "address", "name": "_feeDist", "type": "address" }, { "internalType": "address", "name": "_ve", "type": "address" }, { "internalType": "address", "name": "_voter", "type": "address" }, { "internalType": "bool", "name": "_forPair", "type": "bool" }, { "internalType": "address[]", "name": "_initialRewards", "type": "address[]" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "joinRewardPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "left", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "notifyRewardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "reNotify", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "rewardData", "outputs": [ { "components": [ { "internalType": "uint256", "name": "rewardRate", "type": "uint256" }, { "internalType": "uint256", "name": "periodFinish", "type": "uint256" }, { "internalType": "uint256", "name": "lastUpdateTime", "type": "uint256" }, { "internalType": "uint256", "name": "rewardPerTokenStored", "type": "uint256" } ], "internalType": "struct IGauge.Reward", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsList", "outputs": [ { "internalType": "address[]", "name": "_rewards", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsListLength", "outputs": [ { "internalType": "uint256", "name": "_length", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stake", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "storedRewardsPerUser", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "voter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516136f09081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630d43e8ad14612aa55750806318160ddd14612a875780631f85071614612a60578063211dc32d146129d85780632e1a7d4d146129bb57806331279d3d1461264757806336925259146125f75780633a4b66f1146125ce5780633ca068b61461257e57806346c96aac1461255757806348e5d9f8146124b9578063638634ee1461249557806363fb415b1461245d57806369af57f01461221e57806370a0823114611634578063736fc255146121a85780638003b61414612122578063853828b6146120f9578063907d2aaa146120c157806399bcc0521461209d578063a933d5b91461205a578063b66503cf14611cf3578063b691233814611c8a578063c6f678bd146116a7578063d294f0931461166c578063d35e254414611634578063dee2c33914611301578063e2bbb15814610df7578063e688639614610dd9578063f0ff490814610b4e578063f122977714610b22578063f8e8e99f146104b7578063fbb44ec1146101d15763fc97a3031461019757600080fd5b346101ce5760203660031901126101ce5760406020916001600160a01b036101bd612aca565b168152600c83522054604051908152f35b80fd5b50346101ce5760403660031901126101ce576101eb612aca565b6024358280526020600a815260408420604051808284829454938481520190885284882092885b868282106104a15750505061022992500382612c17565b805190855b82811061045457505050600160085403610433576002600855731e2a7cbc66accb56adc9dc30059631853785193433148015610437575b15610433576040516370a0823160e01b808252306004830152936001600160a01b03811693918381602481885afa801561042857839188916103f7575b50106103f3576102b1906131c5565b908386526001600f92838552604088209060038201550154804210156000146103a8575062093a80908487528284520460408620555b82855280825242600260408720015562093a80918242018042116103945784875282825260016040882001556040519485523060048601528085602481875afa938415610389578694610353575b61034b9550865252604084205491041015613100565b600160085580f35b93508085813d8311610382575b61036a8183612c17565b8101031261037d5761034b945193610335565b600080fd5b503d610360565b6040513d88823e3d90fd5b634e487b7160e01b87526011600452602487fd5b6103b66103c7914290613043565b85885283855260408820549061309f565b90818111156103ef5762093a80916103de91613066565b0483865281835260408620556102e7565b8680fd5b8580fd5b809250858092503d8311610421575b6104108183612c17565b8101031261037d57829051386102a2565b503d610406565b6040513d89823e3d90fd5b8380fd5b5073aa37591bf6b347badf7bf8e291e3d4cdfe27ff8b3314610265565b806001600160a01b036104696001938561300b565b5116610474816131c5565b818a52600f90818852600360408c20015561048e82613073565b918a528652600260408a2001550161022e565b8554845260019586019587955093019201610212565b50346101ce5760603660031901126101ce57602480359067ffffffffffffffff906044358281116109fc57366023820112156109fc578060040135928311610b0f578260051b906040519361050f6020840186612c17565b8452826020850192820101903682116103ef578301915b818310610aef57505050338452600a602052604084206040518082602082945493848152019088526020882092885b818110610ad657505061056a92500382612c17565b80519033151590865b838110610a28575050505060016008540361043357600260085582600435156109fc576105b485546004359030906001600160a01b03339160101c166134a8565b6105c2600435600754613066565b600755338552600e602052604085206105de6004358254613066565b905515610a13578060206001600160a01b0360015416604051928380926331a9108f60e11b82528860048301525afa908115610a085785916109c2575b506001600160a01b03339116036109955750338352600c6020528160408420805415610931575b5050338352600c6020528160408420540361092d575b338352600d602052604083205490600e602052604084205491600d602052826040862055600a60205260408520906040518083602082955493848152019089526020892092895b8181106109145750506106b492500383612c17565b815191865b8381106108b45750505050835b815181101561080257600190338652600a6020526106fb604087206001600160a01b036106f3848761300b565b51169061368e565b610706575b016106c6565b6107226001600160a01b0361071b838661300b565b51166131c5565b6001600160a01b03610734838661300b565b51168752600f806020526003918260408a2001556107646001600160a01b0361075d858861300b565b5116613073565b6001600160a01b03610776858861300b565b5116895281602052600260408a2001556001600160a01b03610798848761300b565b511688526020526040872001543387526010602052604087206001600160a01b036107c3848761300b565b51166000526020526040600020556001600160a01b036107e3828561300b565b51168652600b602052604086206107fb858254613066565b9055610700565b505050816001600160a01b0360035416803b156108a55760405163530e389d60e11b815260048082018590523360248301523560448201529082908290606490829084905af180156108a957610891575b505060405190815260043560208201527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560403392a2600160085580f35b61089a90612bd1565b6108a5578138610853565b5080fd5b6040513d84823e3d90fd5b806001600160a01b036108c96001938561300b565b51168952600b8060205260408a206108e2868254613043565b90556001600160a01b036108f6838661300b565b51168a526020526040892061090c888254613066565b9055016106b9565b845483526001948501948794506020909301920161069f565b8280fd5b55826001600160a01b0360035416803b156108a55760405163698473e360e01b8152600481018590523360248201529082908290604490829084905af180156108a957610981575b839150610642565b61098a90612bd1565b61092d578238610979565b60649060066040519162461bcd60e51b8352602060048401528201526510b7bbb732b960d11b6044820152fd5b90506020813d602011610a00575b816109dd60209383612c17565b810103126109fc57516001600160a01b03811681036109fc573861061b565b8480fd5b3d91506109d0565b6040513d87823e3d90fd5b50338352600c60205260408320549150610658565b806001600160a01b03610a3d6001938561300b565b51166040610a4a826131c5565b828c52600f90816020528c6003938491200155868c60026040610a6c87613073565b9287815285602052200155610a85575b50505001610573565b610a8f3384613284565b338d52601160205260408d2084600052602052604060002055828c5260205260408b20015490338b52601060205260408b2090600052602052604060002055388080610a7c565b8454835260019485019486945060209093019201610555565b82356001600160a01b038116810361037d57815260209283019201610526565b50634e487b7160e01b8452604160045283fd5b50346101ce5760203660031901126101ce576020610b46610b41612aca565b6131c5565b604051908152f35b50346101ce576020806003193601126108a557610b69612aca565b338352600a825260408320604051808285829454938481520190875285872092875b87828210610dc357505050610ba292500382612c17565b80519033151590855b838110610d1e5750505050338352600a82526040832091604051808483829654938481520190875283872092875b85828210610d0857505050610bf092500384612c17565b8251338552600d82526040852054600e8352604086205494600d8452856040882055865b838110610cb05750505050338452600a815260408420610c3e6001600160a01b038416809261368e565b610c46578480f35b6003610c6a84610c57600b966131c5565b848952600f86528360408a200155613073565b828752600f84526040872090600282015501543386526010835260408620826000528352604060002055845252610ca660408320918254613066565b9055388080808480f35b6001906001600160a01b0380610cc6838661300b565b51168a52600b9081885260408b20610cdf878254613043565b9055610ceb838661300b565b51168a52865260408920610d00898254613066565b905501610c14565b8554845260019586019589955093019201610bd9565b806001600160a01b03610d336001938561300b565b5116610d3e816131c5565b818a5289868a60026040600f9485845260039687838320015585610d6189613073565b9489835252200155610d77575b50505001610bab565b610d813384613284565b338c5260118b5260408c20846000528b52604060002055828b52895260408a20015490338a526010895260408a20906000528852604060002055388080610d6e565b8554845260019586019587955093019201610b8b565b50346101ce57806003193601126101ce576020600454604051908152f35b50346101ce5760403660031901126101ce57602435610e1461314c565b338352600a602052604083206040518082602082945493848152019087526020872092875b8181106112e8575050610e4e92500382612c17565b80519033151590855b83811061123c575050505060016008540361092d576002600855816004351561043357610e9884546004359030906001600160a01b03339160101c166134a8565b610ea6600435600754613066565b600755338452600e60205260408420610ec26004358254613066565b90551561122857602460206001600160a01b0360015416604051928380926331a9108f60e11b82528760048301525afa90811561121d5784916111db575b506001600160a01b03339116036111ad57338352600c6020528160408420805415611149575b5050338352600c6020528160408420540361092d575b338352600d602052604083205490600e602052604084205491600d602052826040862055600a60205260408520906040518083602082955493848152019089526020892092895b818110611130575050610f9892500383612c17565b815191865b8381106110d05750505050835b815181101561080257600190338652600a602052610fd7604087206001600160a01b036106f3848761300b565b610fe2575b01610faa565b610ff76001600160a01b0361071b838661300b565b6001600160a01b03611009838661300b565b51168752600f806020526003918260408a2001556110326001600160a01b0361075d858861300b565b6001600160a01b03611044858861300b565b5116895281602052600260408a2001556001600160a01b03611066848761300b565b511688526020526040872001543387526010602052604087206001600160a01b03611091848761300b565b51166000526020526040600020556001600160a01b036110b1828561300b565b51168652600b602052604086206110c9858254613066565b9055610fdc565b806001600160a01b036110e56001938561300b565b51168952600b8060205260408a206110fe868254613043565b90556001600160a01b03611112838661300b565b51168a5260205260408920611128888254613066565b905501610f9d565b8454835260019485019487945060209093019201610f83565b55826001600160a01b0360035416803b156108a55760405163698473e360e01b8152600481018590523360248201529082908290604490829084905af180156108a957611199575b839150610f26565b6111a290612bd1565b61092d578238611191565b60405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b6044820152606490fd5b90506020813d602011611215575b816111f660209383612c17565b8101031261043357516001600160a01b03811681036104335738610f00565b3d91506111e9565b6040513d86823e3d90fd5b338352600c60205260408320549150610f3c565b806001600160a01b036112516001938561300b565b511661125c816131c5565b818a52600f806020526003918260408d200155868b6002604061127e87613073565b9287815285602052200155611297575b50505001610e57565b6112a13384613284565b338c52601160205260408c2084600052602052604060002055828b5260205260408a20015490338a52601060205260408a209060005260205260406000205538808061128e565b8454835260019485019486945060209093019201610e39565b50346101ce5760c03660031901126101ce5761131b612aca565b611323612ae0565b90604435916001600160a01b03831680930361037d57606435916001600160a01b03831680930361037d576084359081151582036103f35760a43567ffffffffffffffff81116103ef5761137b903690600401612af6565b93909487549160ff8360081c161597888099611627575b8015611610575b156115a55760ff948519948a6001878316178d55611594575b507fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff00008c549260101b169116178a556001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000009216826002541617600255816001541617600155600354161760035560095416911515161760095567ffffffffffffffff811161158057680100000000000000008111611580576006548160065580821061153f575b508160068552845b828110611504575050835b8181106114d657505050600160085561149f5780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b806114fd6001600160a01b036114f76114f2600195878961301f565b61302f565b166135f1565b5001611489565b60019060206115128461302f565b930192817ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01550161147e565b817ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f91820191015b8181106115745750611476565b60008155600101611567565b634e487b7160e01b84526041600452602484fd5b61ffff1916610101178b55386113b2565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b50303b1580156113995750600160ff851614611399565b50600160ff851610611392565b50346101ce5760203660031901126101ce5760406020916001600160a01b0361165b612aca565b168152600e83522054604051908152f35b50346101ce57806003193601126101ce576001600854036101ce57600260085560406116966133e1565b600160085582519182526020820152f35b50346101ce5760203660031901126101ce576001600160a01b03600435602083546024604051809581936370a0823160e01b835233600484015260101c165afa918215611c7f578392611c4b575b506116fe61314c565b338452600a602052604084206040518082602082945493848152019088526020882092885b818110611c3257505061173892500382612c17565b80519033151590865b838110611b8457505050506001600854036104335760026008558183156109fc5761177d846001600160a01b03875460101c16309033906134a8565b61178984600754613066565b600755338552600e602052604085206117a3858254613066565b905515611b7057602460206001600160a01b0360015416604051928380926331a9108f60e11b82528760048301525afa908115610a08578591611b2e575b506001600160a01b03339116036111ad57338452600c6020528160408520805415611aca575b5050338452600c60205281604085205403610433575b338452600d602052604084205491600e602052604085205492600d602052836040872055600a6020526040862090604051808360208295549384815201908a5260208a20928a5b818110611ab157505061187992500383612c17565b815191875b838110611a515750505050845b82518110156119b157600190338752600a6020526118b8604088206001600160a01b036106f3848861300b565b6118c3575b0161188b565b6118d86001600160a01b0361071b838761300b565b6001600160a01b036118ea838761300b565b51168852600f806020526003918260408b2001556119136001600160a01b0361075d858961300b565b6001600160a01b03611925858961300b565b51168a5281602052600260408b2001556001600160a01b03611947848861300b565b511689526020526040882001543388526010602052604088206001600160a01b03611972848861300b565b51166000526020526040600020556001600160a01b03611992828661300b565b51168752600b602052604087206119aa868254613066565b90556118bd565b858286826001600160a01b0360035416803b156108a55760405163530e389d60e11b815260048101859052336024820152604481018490529082908290606490829084905af180156108a957611a3d575b505060405191825260208201527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560403392a2600160085580f35b611a4690612bd1565b61092d578284611a02565b806001600160a01b03611a666001938561300b565b51168a52600b8060205260408b20611a7f868254613043565b90556001600160a01b03611a93838661300b565b51168b5260205260408a20611aa9898254613066565b90550161187e565b8454835260019485019487945060209093019201611864565b55836001600160a01b0360035416803b156108a55760405163698473e360e01b8152600481018590523360248201529082908290604490829084905af180156108a957611b1a575b839150611807565b611b2390612bd1565b610433578338611b12565b90506020813d602011611b68575b81611b4960209383612c17565b810103126109fc57516001600160a01b03811681036109fc57386117e1565b3d9150611b3c565b338452600c6020526040842054915061181d565b806001600160a01b03611b996001938561300b565b51166040611ba6826131c5565b828c52600f90816020528c6003938491200155868c60026040611bc887613073565b9287815285602052200155611be1575b50505001611741565b611beb3384613284565b338d52601160205260408d2084600052602052604060002055828c5260205260408b20015490338b52601060205260408b2090600052602052604060002055388080611bd8565b8454835260019485019486945060209093019201611723565b9091506020813d602011611c77575b81611c6760209383612c17565b8101031261037d575190386116f5565b3d9150611c5a565b6040513d85823e3d90fd5b50346101ce5760203660031901126101ce57611ca4612aca565b6001600160a01b03908160035416330361092d576006546801000000000000000081101561158057806001611cdc9201600655612b6c565b90928084549260031b9316831b921b191617905580f35b50346101ce5760403660031901126101ce57611d0d612aca565b602435828052602091600a835260408420604051808286829454938481520190885286882092885b8882821061204457505050611d4c92500382612c17565b805190855b828110611ff75750505060016008540361043357600260085583546001600160a01b03828116949160101c1684146109fc5782156109fc57611d916133e1565b5050611d9c826131c5565b91848652600f928383526003604088200155611db7856135f1565b506040516370a0823160e01b8082523060048301529483826024818a5afa918215611fec578892611fbb575b50611df29192309033906134a8565b604051908482523060048301528282602481895afa8015610428578790611f8c575b611e1e9250613043565b92848652828252600160408720015480421015600014611f46575084865282825262093a80840460408720555b84865282825242600260408820015562093a8092834201804211611f325786885281845260016040892001556040519182523060048301528282602481895afa918215610428578792611ee3575b50858752825260408620547ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf5082693611ed292041015613100565b6040519283523392a3600160085580f35b91508282813d8311611f2b575b611efa8183612c17565b8101031261037d579051907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf50826611e99565b503d611ef0565b634e487b7160e01b88526011600452602488fd5b611f54611f65914290613043565b86885284845260408820549061309f565b808511156103ef57611f7b62093a809186613066565b048587528383526040872055611e4b565b508282813d8311611fb4575b611fa28183612c17565b8101031261037d57611e1e9151611e14565b503d611f98565b91508382813d8311611fe5575b611fd28183612c17565b8101031261037d57611df2915191611de3565b503d611fc8565b6040513d8a823e3d90fd5b806001600160a01b0361200c6001938561300b565b5116612017816131c5565b818a52600f90818a52600360408c20015561203182613073565b918a528852600260408a20015501611d51565b8554845260019586019587955093019201611d35565b50346101ce5760203660031901126101ce57600435906006548210156101ce5760206001600160a01b0361208d84612b6c565b9190546040519260031b1c168152f35b50346101ce5760203660031901126101ce576020610b466120bc612aca565b6130b2565b50346101ce5760203660031901126101ce5760406020916001600160a01b036120e8612aca565b168152600b83522054604051908152f35b50346101ce57806003193601126101ce57338152600e60205261211f6040822054612c39565b80f35b50346101ce57806003193601126101ce57604051600480548083529083526020808301937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b92915b8282106121915761218d8561218181890382612c17565b60405191829182612b27565b0390f35b83548652948501946001938401939091019061216a565b50346101ce576020806003193601126108a5576001600160a01b036121cb612aca565b168252600a602052604082209160405180926020855492838152019483526020832092905b8282106122075761218d8561218181890382612c17565b8354865294850194600193840193909101906121f0565b50346101ce576020806003193601126108a557612239612aca565b338352600a825260408320604051808285829454938481520190875285872092875b878282106124475750505061227292500382612c17565b80519033151590855b8381106123a25750505050338352600a82526040832091604051808483829654938481520190875283872092875b8582821061238c575050506122c092500384612c17565b8251338552600d82526040852054600e8352604086205494600d8452856040882055865b8381106123345750505050338452600a815261230e6001600160a01b036040862093168093613512565b612316578380f35b600b9184525261232b60408320918254613043565b90553880808380f35b6001906001600160a01b038061234a838661300b565b51168a52600b9081885260408b20612363878254613043565b905561236f838661300b565b51168a52865260408920612384898254613066565b9055016122e4565b85548452600195860195899550930192016122a9565b806001600160a01b036123b76001938561300b565b51166123c2816131c5565b818a5289868a60026040600f94858452600396878383200155856123e589613073565b94898352522001556123fb575b5050500161227b565b6124053384613284565b338c5260118b5260408c20846000528b52604060002055828b52895260408a20015490338a526010895260408a209060005288526040600020553880806123f2565b855484526001958601958795509301920161225b565b50346101ce5760203660031901126101ce5760406020916001600160a01b03612484612aca565b168152600d83522054604051908152f35b50346101ce5760203660031901126101ce576020610b466124b4612aca565b613073565b50346101ce5760203660031901126101ce5760406080916001600160a01b036124e0612aca565b82606085516124ee81612bfb565b82815282602082015282878201520152168152600f6020522060405161251381612bfb565b815491828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b50346101ce57806003193601126101ce5760206001600160a01b0360035416604051908152f35b50346101ce5760403660031901126101ce57612598612aca565b60406125a2612ae0565b926001600160a01b03809316815260106020522091166000526020526020604060002054604051908152f35b50346101ce57806003193601126101ce576001600160a01b036020915460101c16604051908152f35b50346101ce5760403660031901126101ce57612611612aca565b604061261b612ae0565b926001600160a01b03809316815260116020522091166000526020526020604060002054604051908152f35b50346101ce5760403660031901126101ce57612661612aca565b60243567ffffffffffffffff811161092d57612681903690600401612af6565b91906001600160a01b0380831692838652602092600a8452604087206040518082878294549384815201908b52878b20928b5b898282106129a5575050506126cb92500382612c17565b80519086151590895b838110612903575050505060019586600854036128f25785331480156128f6575b156128f25786600855878460035416803b156108a55781906024604051809481936363453ae160e01b83523060048401525af180156128e7576128d4575b50600260085586885b82811061281d575050505050828552600a82526040852091604051808483829654938481520190895283892092895b8986838310612808575050505061278492500384612c17565b8251938652600d8152604086205491600e8252604087205493600d835284604089205586885b8781106127b957898260085580f35b836127c4828561300b565b51168a52600b80865260408b206127dc888254613043565b9055846127e9838661300b565b51168b52855260408a206127fe888254613066565b90550187906127aa565b8654855295810195899550909301920161276b565b878a52601180885260408b20876128386114f285888a61301f565b1660005288526040600020549081612855575b505001879061273c565b898c52885260408b208761286d6114f285888a61301f565b1660005288528a604060002055612892818761288d6114f286898b61301f565b613355565b887f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc989896128c46114f2878a8c61301f565b1693604051908152a3388061284b565b6128e090989198612bd1565b9638612733565b6040513d8b823e3d90fd5b8780fd5b50836003541633146126f5565b80876129116001938561300b565b51168c61291d826131c5565b8282528b8d8b600f92838152600394856040882001558a61293d88613073565b888852858352600260408920015561295d575b50505050505050016126d4565b61296960119288613284565b928652528d60408520908686525260408420558c52604082200154918c825260108c526040822091528a5260408d2055388c81808d8b8e612950565b85548452600195860195879550930192016126b4565b50346101ce5760203660031901126101ce5761211f600435612c39565b50346101ce5760403660031901126101ce576020906129f5612aca565b6129fd612ae0565b906001600160a01b039283831693848252600a8652612a3360408320918416809260019160005201602052604060002054151590565b15612a44575050610b469250613284565b9150915060409282526011845282822090825283522054610b46565b50346101ce57806003193601126101ce5760206001600160a01b0360015416604051908152f35b50346101ce57806003193601126101ce576020600754604051908152f35b9050346108a557816003193601126108a5576020906001600160a01b03600254168152f35b600435906001600160a01b038216820361037d57565b602435906001600160a01b038216820361037d57565b9181601f8401121561037d5782359167ffffffffffffffff831161037d576020808501948460051b01011161037d57565b602090602060408183019282815285518094520193019160005b828110612b4f575050505090565b83516001600160a01b031685529381019392810192600101612b41565b600654811015612ba35760066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600090565b634e487b7160e01b600052603260045260246000fd5b8054821015612ba35760005260206000200190600090565b67ffffffffffffffff8111612be557604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff821117612be557604052565b90601f8019910116810190811067ffffffffffffffff821117612be557604052565b90600091829033600052602090600e825260409182600020548214612ffa575b600a8152826000208351808284829454938481520190600052846000209260005b86828210612fe457505050612c9192500382612c17565b8051903315159060005b838110612f41575050505060019360016008540361037d57600260085580948315612efd57612ccc84600754613043565b60075533600052600e835284600020612ce6858254613043565b90556001600160a01b0391612d0385338560005460101c16613355565b15612ee85733600052600c8352846000208054870361037d57600090558160035416803b1561037d57855163411b1f7760e01b815260048101889052336024820152906000908290604490829084905af18015612edd57612ec9575b505b338852600a835284882085518082868294549384815201908c52868c20928c5b8689838310612eb45750505050612d9a92500382612c17565b805190338a52600d8552868a2054600e8652878b205491600d875282898d20558b805b8a868210612e6757505050505050505060035416803b156103ef578351633aa53b9160e21b815260048101869052336024820152604481018490529087908290606490829084905af18015612e5d57612e49575b507ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689394955082519485528401523392a26001600855565b612e538791612bd1565b6103f35785612e11565b84513d89823e3d90fd5b879289612e74848761300b565b51168152600b808c52828220612e8b888254613043565b90558a612e98858861300b565b511682528b5220612eaa868254613066565b9055018c90612dbd565b86548552958101958795509093019201612d81565b612ed4919850612bd1565b60009638612d5f565b86513d6000823e3d90fd5b945033600052600c8252836000205494612d61565b845162461bcd60e51b815260048101849052601160248201527f43616e27742077697468647261772030210000000000000000000000000000006044820152606490fd5b806001600160a01b03612f566001938561300b565b5116612f61816131c5565b81600052600f808952600391828c600020015586612f7e84613073565b84600052828b5260028d6000200155612f9b575b50505001612c9b565b612fa53384613284565b3360005260118a528b600020846000528a528b600020558852896000200154903360005260108852896000209060005287528860002055388080612f92565b8554845260019586019587955093019201612c7a565b9250600c8352816000205492612c59565b8051821015612ba35760209160051b010190565b9190811015612ba35760051b0190565b356001600160a01b038116810361037d5790565b9190820391821161305057565b634e487b7160e01b600052601160045260246000fd5b9190820180921161305057565b6001600160a01b0316600052600f60205260016040600020015480421060001461309c57504290565b90565b8181029291811591840414171561305057565b6001600160a01b031680600052600f60205260016040600020015490814210156130f9576130e461309c924290613043565b90600052600f6020526040600020549061309f565b5050600090565b1561310757565b60405162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f206869676800000000000000006044820152606490fd5b6040519060065480835282602091602082019060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000905b8282106131a2575050506131a092500383612c17565b565b85546001600160a01b03168452600195860195889550938101939091019061318a565b906001600160a01b038216916000928084526020600b8152604090818620541561327457600f81526132286132176132036003858a20015496613073565b858952600f84526002858a20015490613043565b848852600f8352838820549061309f565b92670de0b6b3a764000093848102948186041490151715610394578652600b90528420549081156132605761309c9394500490613066565b634e487b7160e01b85526012600452602485fd5b600f905290932060030154925050565b604061309c926001600160a01b0380911692670de0b6b3a76400006132e3600093868552600d6020526132dd86862054916132be866131c5565b9089885260106020528888209616958688526020528787205490613043565b9061309f565b049382526011602052828220908252602052205490613066565b3d15613338573d9067ffffffffffffffff8211612be5576040519161332c601f8201601f191660200184612c17565b82523d6000602084013e565b606090565b9081602091031261037d5751801515810361037d5790565b919091803b1561037d57600092838093604051906001600160a01b03602083019463a9059cbb60e01b865216602483015260448201526044815261339881612bfb565b51925af16133a46132fd565b816133b2575b501561037d57565b80518015925082156133c7575b5050386133aa565b6133da925060208091830101910161333d565b38806133bf565b60ff60095416156134a0576000906001600160a01b03825460101c16908260408093600482518097819363d294f09360e01b83525af19384156134945781809561345c575b50507fbc567d6cbad26368064baa0ab5a757be46aae4d70f707f9203d9d9b6c8ccbfa384938295815193845260208401523392a2565b915093508284813d831161348d575b6134758183612c17565b810103126101ce575060208351930151923880613426565b503d61346b565b508251903d90823e3d90fd5b600090600090565b909192813b1561037d576040519260208401946323b872dd60e01b86526001600160a01b03809216602486015216604484015260648301526064825260a082019282841067ffffffffffffffff851117612be5576000809493819460405251925af16133a46132fd565b906001820190600092818452826020526040842054908115156000146135ea576000199180830181811161039457825490848201918211611f325780820361359e575b5050508054801561358a5782019161356d8383612bb9565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6135d56135ae6135be9386612bb9565b90549060031b1c92839286612bb9565b819391549060031b91821b91600019901b19161790565b90558652846020526040862055388080613555565b5050505090565b60008181526005602052604081205461368957600454680100000000000000008110156136755760018101806004558110156136615790826040927f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015560045492815260056020522055600190565b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b905090565b60008281526001820160205260409020546130f95780549068010000000000000000821015612be557826136cc6135be846001809601855584612bb9565b90558054926000520160205260406000205560019056fea164736f6c6343000816000a