0 txs
16 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
emissionsToken
viewfunction emissionsToken() view returns (address)
factoryCL
viewfunction factoryCL() view returns (address)
FEE_SETTER_ROLE
viewfunction FEE_SETTER_ROLE() view returns (bytes32)
getGauge
viewfunction getGauge(address _pair) view returns (address)
getGaugeArray
viewfunction getGaugeArray(address[] _pairs) view returns (address[] gauges)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isValidFee
purefunction isValidFee(bool _legacy, uint256 _bps) pure returns (bool)
legacyFactory
viewfunction legacyFactory() view returns (address)
MAX_BPS_CL
viewfunction MAX_BPS_CL() view returns (uint24)
MAX_BPS_LEGACY
viewfunction MAX_BPS_LEGACY() view returns (uint256)
MAX_LOCK
viewfunction MAX_LOCK() view returns (uint256)
minter
viewfunction minter() view returns (address)
multisig
viewfunction multisig() view returns (address)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
voter
viewfunction voter() view returns (address)
votingEscrow
viewfunction votingEscrow() view returns (address)
xToken
viewfunction xToken() view returns (address)
acceptLegacyFactoryFeeAccess
nonpayablefunction acceptLegacyFactoryFeeAccess()
addClGaugeReward
nonpayablefunction addClGaugeReward(address pair, address reward)
changeDefaultCorrelatedFee
nonpayablefunction changeDefaultCorrelatedFee(uint256 _bps)
changeDefaultVolatileFee
nonpayablefunction changeDefaultVolatileFee(uint256 _bps)
clawBackEmissionsGivenRanges
nonpayablefunction clawBackEmissionsGivenRanges(uint256 _start, uint256 _end)
forbidToken
nonpayablefunction forbidToken(address _token, bool _status)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
incentivizePool
nonpayablefunction incentivizePool(address[] _pools, uint256[] _emissionsTokenAmounts)
incentivizeVotes
nonpayablefunction incentivizeVotes(address[] _pools, uint256[] _emissionsTokenAmounts)
initialize
nonpayablefunction initialize(address _voter, address _xToken, address _multisig, address _operator, address _legacyFactory, address _factoryCL)
initializeNewVars
nonpayablefunction initializeNewVars()
killGauge
nonpayablefunction killGauge(address[] _pairs)
multisigWithdraw
nonpayablefunction multisigWithdraw(address token, uint256 amount)
newLock
nonpayablefunction newLock(uint256 _amount, address _for)
rebase
nonpayablefunction rebase(uint256 _veID, uint256 _amount)
removeClGaugeReward
nonpayablefunction removeClGaugeReward(address pair, address reward)
removeLegacyGaugeReward
nonpayablefunction removeLegacyGaugeReward(address _gauge, address _reward)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
reviveGauge
nonpayablefunction reviveGauge(address[] _pairs)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setClFactory
nonpayablefunction setClFactory(address _newFactory)
setFeeCL
nonpayablefunction setFeeCL(address[] _pair, uint24[] _fee)
setFeeLegacy
nonpayablefunction setFeeLegacy(address[] _pair, uint256[] _bps)
setFeeProtocol
nonpayablefunction setFeeProtocol(uint8 _feeProtocol)
setLegacyFactory
nonpayablefunction setLegacyFactory(address _newFactory)
setLegacyFeeSplitDefault
nonpayablefunction setLegacyFeeSplitDefault(uint8 _feeDist, uint8 _treasury)
setPoolFeeProtocol
nonpayablefunction setPoolFeeProtocol(address pool, uint8 _feeProtocol)
setPoolSplit
nonpayablefunction setPoolSplit(address[] _pools, uint8[] _feeDist, uint8[] _treasury)
updateFlation
nonpayablefunction updateFlation(uint256 _newRate)
updateGrowthCap
nonpayablefunction updateGrowthCap(uint256 _newGrowth)
updateIncentivesSize
nonpayablefunction updateIncentivesSize(uint256 _newSize)
whitelistLegacyGaugeReward
nonpayablefunction whitelistLegacyGaugeReward(address _gauge, address _reward)
events
AddNewNFT
event AddNewNFT(address _for, uint256 _amount)
feeChangeV1
event feeChangeV1(address _pair, uint256 _newrate)
feeChangeV2
event feeChangeV2(address _pair, uint256 _newrate)
Initialized
event Initialized(uint8 version)
LPIncentives
event LPIncentives(address[] _gauge, uint256[] _amount)
newGlobalCorrelatedFee
event newGlobalCorrelatedFee(uint256 _newBps)
newGlobalVolatileFee
event newGlobalVolatileFee(uint256 _newBps)
Rebase
event Rebase(uint256 _veID, uint256 _amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
VoteIncentives
event VoteIncentives(address[] _pools, uint256[] _amounts)
errors
InvalidFee
error InvalidFee()
creation bytecode
0x608080604052346100c2576000549060ff8260081c16610070575060ff80821603610035575b6040516131879081620000c88239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138610025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90816301ffc9a7146122b457508063058ecdb4146121e957806307546172146121c1578063088b699e14612199578381630f509e801461212157508063210ca05d146120f9578381632160b45c1461208457508063248a9ca31461205a5780632da5347b146120325780632f2ff15d14611f7157806336568abe14611ed1578063394bf5bd14611e92578063430e1c6a14611dee57806343acc3af14611d0d578381634572d55014611c955750806346c96aac14611c6d5780634783c35b14611c455780634f2bfe5b14611c1d5783816350d976fc14611ba9575080635eff8aa0146119045780635f635ed0146118dc57806365a5d5f0146118bd5780637284c45b1461176c57838163739641191461170e5750806373e333681461157e5783816376734e3e14611507575080637d6e9d9a146112fb5780639010d07c146112ba5783816390bcc5a2146112005750806391d14854146111ba57838163953e092f1461115c57508063a217fddf14611141578063b1c6f0e914611110578063b6024077146110f257838163b613a1411461108b57508063b6f26e061461106e57838163be02ec3814610faa57508063bef766a714610f31578063ca15c87314610f0a578063ca91ed0114610ecb578063cc2a9a5b14610ce357838163cf7fc73214610c8e57508063d1494c3a14610a79578063d2d73c5c146109c7578063d547741f14610989578063d930053b14610852578063df464a7614610817578063e40a2b011461067d578063e4ba10f4146105b257838163e923ffe41461054f57508063e93476831461051457838163efd9bf921461045f57508063f5b541a6146104205763ffea49c61461028f57600080fd5b3461041c57606036600319011261041c5767ffffffffffffffff918135838111610418576102c0903690840161245d565b9360248035828111610414576102d9903690870161245d565b919096604493604435908111610410576102f6903690890161245d565b9490610300612783565b84831480610407575b156103df57908a969594939291875b838110610323578880f35b8b886001600160a01b03610358610353858b61034d610348838d8860cb5416996125f1565b612611565b966125f1565b612775565b92610367610353868d896125f1565b90833b156103db578f948f948f95916064948793519889978896636b47cd7960e11b885216908601528d60ff80931690860152168a8401525af180156103d157908a916103b9575b5050600101610318565b6103c290612398565b6103cd5788386103af565b8880fd5b8b513d8c823e3d90fd5b8d80fd5b875162461bcd60e51b81526020818b01526002602482015261085360f21b6044820152606490fd5b50858514610309565b8980fd5b8780fd5b8480fd5b8280fd5b50503461045b578160031936011261045b57602090517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5080fd5b9290503461051057806003193601126105105761047a612338565b9161049461048661234e565b9361048f612783565b612625565b926001600160a01b0360ca5416803b1561050c5783516377ecdfc960e11b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040015b03925af190811561050357506104f05750f35b6104f990612398565b6105005780f35b80fd5b513d84823e3d90fd5b8580fd5b5050fd5b50503461045b578160031936011261045b57602090517fe6ad9a47fbda1dc18de1eb5eeb7d935e5e81b4748f3cfc61e233e64f881820608152f35b929050346105105760203660031901126105105761056b612783565b6001600160a01b0360d0541691823b156105ad5783926024849284519586938492633a48fff960e21b84528035908401525af190811561050357506104f05750f35b505050fd5b50903461041c57602036600319011261041c578135916105d0612783565b6105d98361273d565b1561066f5783906001600160a01b0360cb541690813b1561041c57600160448492838751958694859363387ddad160e21b85528401528960248401525af1801561066557610651575b50507fa2fc94ed8ceee756ec75a07ca0d8f3b9918372930efd43ef20de9d3ee6f5ad239160209151908152a180f35b61065a90612398565b61041c578238610622565b83513d84823e3d90fd5b90516358d620b360e01b8152fd5b503461041c5761068c3661248e565b9193610696612783565b865b8581106106d8575050906106d2917f07863f4e082a43727444dbaa22fa383af1e8bc428560a4c92fa68f5553440ac895519485948561268b565b0390a180f35b878387868a84876107478c6106fd61048f6103488c6001600160a01b039a8b956125f1565b169687946107128b60cf988a8a5416946125f1565b35905194858094819363095ea7b360e01b83526020998a988401602090939291936001600160a01b0360408201951681520152565b03925af1801561080d576107df575b505054166107658488886125f1565b35823b156107db576107a4928492838d5180968195829463b66503cf60e01b84528c8401602090939291936001600160a01b0360408201951681520152565b03925af180156107d1576107bd575b5050600101610698565b6107c690612398565b6104145787386107b3565b89513d84823e3d90fd5b8380fd5b816107fe92903d10610806575b6107f681836123de565b8101906125d9565b503880610756565b503d6107ec565b8d513d88823e3d90fd5b508234610500578260031936011261050057503590811515820361084d576108446020926024359061275d565b90519015158152f35b600080fd5b5091903461045b5761086336612322565b919061086d612783565b80830390838211610974579261089a61088583612400565b92610892855194856123de565b808452612400565b60209190601f1901368484013760ca546001600160a01b039081169592875b8385106108f557888089898d6108ce8b612503565b833b15610418576104dd93859283855180978195829463525ac10360e11b84528301612418565b86516315895f4760e31b81528a810186905282816024818c5afa90811561096a57916001929183928c9161093d575b5085610930838b6124d9565b91169052019401936108b9565b61095d9150853d8711610963575b61095581836123de565b8101906125ba565b38610924565b503d61094b565b88513d8c823e3d90fd5b601186634e487b7160e01b6000525260246000fd5b50903461041c578060031936011261041c576109c491356109bf60016109ad61234e565b93838752606560205286200154612c46565b612e1d565b80f35b50903461041c57602036600319011261041c578135916109e5612783565b6109ee8361273d565b1561066f5783906001600160a01b0360cb541690813b1561041c578260448192828751958694859363387ddad160e21b85528401528960248401525af1801561066557610a65575b50507f09c7e5889341a30b241ed708718f55daa0607a3441916ac8139fa2b641e58e999160209151908152a180f35b610a6e90612398565b61041c578238610a36565b503461041c57610a883661248e565b9193610a92612783565b865b858110610ace575050906106d2917fd402dbc146639547cb1f2290e713e99e8a2200d1c7fa294b5d198e20496b7c4d95519485948561268b565b876001600160a01b038060ca541690610aeb610348858b8b6125f1565b8a5163b9a09fd560e01b815290821686820152602092908b90602485828281875afa8015610c8457869386938992610c65575b505194859384926324f24ba560e11b8452168b8301525afa908115610c5b57889183918691610c3e575b501692610b96818d8a87898c610b658d60cf9a8c8c5416966125f1565b3594519687958694859363095ea7b360e01b85528401602090939291936001600160a01b0360408201951681520152565b03925af1801561080d57610c20575b50505416610bb48488886125f1565b35823b156107db57610bf3928492838d51809681958294637c8afcc160e11b84528c8401602090939291936001600160a01b0360408201951681520152565b03925af180156107d157610c0c575b5050600101610a94565b610c1590612398565b610414578738610c02565b81610c3692903d10610806576107f681836123de565b503880610ba5565b610c559150853d87116109635761095581836123de565b38610b48565b8b513d86823e3d90fd5b610c7d919250853d87116109635761095581836123de565b9038610b1e565b83513d89823e3d90fd5b92905034610510578260031936011261051057610ca96129c8565b6001600160a01b0360cb541691823b156105ad57815163f94c53c760e01b81529284918491829084905af190811561050357506104f05750f35b503461041c5760c036600319011261041c57356001600160a01b03908181168091036107db576024359180831680930361041857604435918183169384840361084d5760643590838216820361084d57879460843592858416809403610ec75760a435958616809603610ec757610dd1610dd692610dcb8b9a8a5460ff8160081c16159b8c809d610eba575b8015610ea3575b610d7f90612548565b60ff198281166001178255918d610e91575b5050600080526020809d606582528060002084600052825260ff81600020541615610e42575b5050506000805260978c528c600020613000565b50612d59565b612d59565b6001600160a01b0319928360ca54161760ca558260c954161760c9558160cb54161760cb5560cc54161760cc55610e0b578280f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161ff001984541684555160018152a138808280f35b60019160008052606581528160002090856000525260002091825416179055338160007f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4388c8e610db7565b61ffff19166101011790558e38610d91565b50303b158015610d76575060ff8216600114610d76565b50600160ff831610610d6f565b8680fd5b8334610500576020366003190112610500576001600160a01b03610eed612338565b610ef56129c8565b166001600160a01b031960cc54161760cc5580f35b503461041c57602036600319011261041c5760209282913581526097845220549051908152f35b503461041c578160031936011261041c57610f4a612338565b9160243580151580910361084d578493610f62612783565b6001600160a01b03908160ca541690813b15610ec7578660449281958751988996879563de7d72e560e01b8752169085015260248401525af190811561050357506104f05750f35b9290503461051057602036600319011261051057813567ffffffffffffffff81116105ad57610fdc903690840161245d565b610fe7949194612783565b815b818110610ff4578280f35b6001600160a01b038060ca54169061101361048f61034885878c6125f1565b90823b1561050c5760248692838951958694859363992a793360e01b8552168c8401525af1801561106457908491611050575b5050600101610fe9565b61105990612398565b61041c578238611046565b85513d86823e3d90fd5b50503461045b578160031936011261045b57602090516101f48152f35b92905034610510576020366003190112610510576110a7612378565b6110af612783565b6001600160a01b0360cc541690813b1561041857602460ff918680948651978895869463b613a14160e01b865216908401525af190811561050357506104f05750f35b50503461045b578160031936011261045b5760209051620186a08152f35b50503461045b57602036600319011261045b576020906001600160a01b0361113961048f612338565b915191168152f35b50503461045b578160031936011261045b5751908152602090f35b9290503461051057602036600319011261051057611178612783565b6001600160a01b0360d0541691823b156105ad578392602484928451958693849263953e092f60e01b84528035908401525af190811561050357506104f05750f35b503461041c578160031936011261041c576001600160a01b03826020946111df61234e565b9335815260658652209116600052825260ff81600020541690519015158152f35b9290503461051057602036600319011261051057813567ffffffffffffffff81116105ad57611232903690840161245d565b61123d949194612783565b815b81811061124a578280f35b6001600160a01b038060ca54169061126961048f61034885878c6125f1565b90823b1561050c57602486928389519586948593639f06247b60e01b8552168c8401525af18015611064579084916112a6575b505060010161123f565b6112af90612398565b61041c57823861129c565b503461041c578160031936011261041c576112ec6020936001600160a01b039235815260978552836024359120612ec7565b92905490519260031b1c168152f35b503461041c5761130a3661248e565b919092611315612af5565b865b828110611322578780f35b61132d8185876125f1565b351515806114f0575b156114ad57876001600160a01b038060cb5416906113586103488588886125f1565b8a5163841fa66b60e01b81529116898201526020908181602481865afa918215610c5b57849261147c575b505061139084888a6125f1565b3514611472576113a46103488487876125f1565b6113af84888a6125f1565b35823b156107db576113ef928492838c8e519687958694859363a93a897d60e01b85528401602090939291936001600160a01b0360408201951681520152565b03925af180156107d15761145e575b5050807faad33d2acde4329b1c27ca0561954b24793925d0c7e22dc9711ff66a6beffe2361143261034860019487876125f1565b61143d83888a6125f1565b8a516001600160a01b03929092168252356020820152604090a15b01611317565b61146790612398565b6104145787386113fe565b5050600190611458565b8194508092503d83116114a6575b61149481836123de565b8101031261084d578991513880611383565b503d61148a565b865162461bcd60e51b8152602081880152600660248201527f2176616c696400000000000000000000000000000000000000000000000000006044820152606490fd5b506101f46114ff8286886125f1565b351115611336565b92905034610510578060031936011261051057611522612338565b61152a612388565b90611533612783565b6001600160a01b03908160cc541690813b15610ec7578660449260ff82968851998a978896633b39a71f60e11b885216908601521660248401525af190811561050357506104f05750f35b503461041c578160031936011261041c57611597612338565b916024356115a3612783565b8061169a575060cd5481516370a0823160e01b8152308482015260209490916001600160a01b039182169116868684602481865afa93841561168e579087949392918194611655575b50855163a9059cbb60e01b81526001600160a01b039092169682019687526020870193909352948592839182906040015b03925af190811561164c575061163257505080f35b8161164892903d10610806576107f681836123de565b5080f35b513d85823e3d90fd5b9480929794508591503d8311611687575b61167081836123de565b8101031261084d5761161d948787945193966115ec565b503d611666565b508451903d90823e3d90fd5b6116e19360209293866001600160a01b038060cd54169287519889968795869363a9059cbb60e01b85528401602090939291936001600160a01b0360408201951681520152565b0393165af190811561050357506116f6575080f35b6116489060203d602011610806576107f681836123de565b929050346105105760203660031901126105105761172a612783565b6001600160a01b0360d0541691823b156105ad5783926024849284519586938492637396411960e01b84528035908401525af190811561050357506104f05750f35b503461041c5761177b3661248e565b90929391611787612af5565b865b818110611794578780f35b62ffffff906117b6826117b06117ab84888b6125f1565b612601565b16612716565b156118ad576001600160a01b038060cc54166117d661034884878c6125f1565b918b6117e66117ab868a8d6125f1565b93833b1561045b578c5163ba364c3d60e01b8152908316818b015293861660248501528b939281908490604490829084905af19283156118a1578b899289928d9661187f575b50506117ab876001999461034d610348837f3b972fda5270142c6b6ba50a6e54a6b1859fee77b92de18244f39c96958ffa0d9b9a999761186b976125f1565b90845193168352166020820152a101611789565b935094505050611890919350612398565b6104105786899186868b8e3861182c565b508351903d90823e3d90fd5b87516358d620b360e01b81528590fd5b50503461045b578160031936011261045b5760209051630784ce008152f35b50503461045b578160031936011261045b576020906001600160a01b0360cc54169051908152f35b50903461041c578260031936011261041c57610102835460ff8160081c161580611b9c575b61193290612548565b61ffff19161783556001600160a01b03908160ca5416928151638dd598fb60e01b815285602094858385818a5afa928315611b92578293611b73575b50806001600160a01b031993168360ce54161760ce558451635001f3b560e01b8152868186818b5afa908115611afe579082918491611b56575b50169260cf549784828a161760cf55865163030d028960e21b815288818881855afa908115611b4c5791848a9289948891611b2f575b50168460cd54161760cd558851928380926303aa30b960e11b82525afa908115611b25579083918591611b08575b50169060d054161760d05581868260c9541694604488518094819363095ea7b360e01b998a84528b840152816000199e8f602486015216175af18015611afe57916044939188969593611ae1575b508060cf54169060ce5416988751998a968795865285015260248401525af1928315611ad7577f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249893611aba575b50835461ff00191684555160028152a180f35b611ad090833d8511610806576107f681836123de565b5038611aa7565b81513d86823e3d90fd5b611af790873d8911610806576107f681836123de565b5038611a5a565b86513d85823e3d90fd5b611b1f9150893d8b116109635761095581836123de565b38611a0c565b87513d86823e3d90fd5b611b469150843d86116109635761095581836123de565b386119de565b88513d87823e3d90fd5b611b6d9150883d8a116109635761095581836123de565b386119a8565b611b8b919350863d88116109635761095581836123de565b913861196e565b85513d84823e3d90fd5b50600260ff821610611929565b92905034610510578060031936011261051057611bc4612338565b91611bd061048661234e565b926001600160a01b0360ca5416803b1561050c5783516314365dbf60e21b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016104dd565b50503461045b578160031936011261045b576020906001600160a01b0360ce54169051908152f35b50503461045b578160031936011261045b576020906001600160a01b0360cd54169051908152f35b50503461045b578160031936011261045b576020906001600160a01b0360ca54169051908152f35b92905034610510578060031936011261051057611cb0612338565b91611cb961234e565b611cc1612783565b6001600160a01b0360ca5416803b1561050c578351636c49f6f560e11b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016104dd565b503461041c578160031936011261041c57803590611d2961234e565b90611d32612783565b60208360646001600160a01b0393888560ce54168951968795869463ec32e6df60e01b8652850152630784ce006024850152881660448401525af18015611de457611db9575b5091516001600160a01b03909216825260208201527fc0252bbdefb2e33bb149dde65e2f203f2957aef3cf2c77917b57823f9c4963d89080604081016106d2565b602090813d8311611ddd575b611dcf81836123de565b8101031261084d5738611d78565b503d611dc5565b84513d87823e3d90fd5b5091346105005760209060206003193601126105005783359367ffffffffffffffff851161045b573660238601121561045b57840135611e2d81612400565b94611e3a855196876123de565b8186526024602087019260051b820101923684116105005750602401905b828210611e7b57611e7785611e6c88612503565b905191829182612418565b0390f35b838091611e8784612364565b815201910190611e58565b8334610500576020366003190112610500576001600160a01b03611eb4612338565b611ebc6129c8565b166001600160a01b031960cb54161760cb5580f35b5082903461045b578260031936011261045b57611eec61234e565b90336001600160a01b03831603611f0857906109c49135612e1d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152fd5b50903461041c578060031936011261041c576116489135906097611f9361234e565b9280865260209060658252611fad60018589200154612c46565b80600052606582526001600160a01b038460002095169485600052825260ff84600020541615611fe4575b60005252600020613000565b80600052606582528360002085600052825283600020600160ff198254161790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4611fd8565b50503461045b578160031936011261045b576020906001600160a01b0360cb54169051908152f35b503461041c57602036600319011261041c5781602093600192358152606585522001549051908152f35b9290503461051057806003193601126105105761209f612378565b6120a7612388565b6120af612783565b6001600160a01b0360cb5416803b1561050c5785928360449260ff80958851998a978896631cb8e3a760e01b885216908601521660248401525af190811561050357506104f05750f35b50503461045b578160031936011261045b576020906001600160a01b0360cf54169051908152f35b9290503461051057806003193601126105105761213c612338565b9161214561234e565b61214d612783565b6001600160a01b0360ca5416803b1561050c5783516310fc300b60e11b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016104dd565b50503461045b578160031936011261045b576020906001600160a01b0360c954169051908152f35b50503461045b578160031936011261045b576020906001600160a01b0360d054169051908152f35b5091903461045b576121fa36612322565b93612203612783565b6001600160a01b0360ce541690813b15610418578260448692838751958694859363076426ed60e11b85528401528a60248401525af180156122a757612276575b507f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511929382519182526020820152a180f35b926122a17f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a2151194612398565b92612244565b50505051903d90823e3d90fd5b9250503461041c57602036600319011261041c573563ffffffff60e01b811680910361041c5760209250635a05180f60e01b81149081156122f7575b5015158152f35b637965db0b60e01b811491508115612311575b50386122f0565b6301ffc9a760e01b1490503861230a565b604090600319011261084d576004359060243590565b600435906001600160a01b038216820361084d57565b602435906001600160a01b038216820361084d57565b35906001600160a01b038216820361084d57565b6004359060ff8216820361084d57565b6024359060ff8216820361084d57565b67ffffffffffffffff81116123ac57604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176123ac57604052565b90601f8019910116810190811067ffffffffffffffff8211176123ac57604052565b67ffffffffffffffff81116123ac5760051b60200190565b602090602060408183019282815285518094520193019160005b828110612440575050505090565b83516001600160a01b031685529381019392810192600101612432565b9181601f8401121561084d5782359167ffffffffffffffff831161084d576020808501948460051b01011161084d57565b604060031982011261084d5767ffffffffffffffff9160043583811161084d57826124bb9160040161245d565b9390939260243591821161084d576124d59160040161245d565b9091565b80518210156124ed5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b60005b8151811015612544576001906001600160a01b0361252f8161252884876124d9565b5116612625565b9061253a83866124d9565b9116905201612506565b5090565b1561254f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b9081602091031261084d57516001600160a01b038116810361084d5790565b9081602091031261084d5751801515810361084d5790565b91908110156124ed5760051b0190565b3562ffffff8116810361084d5790565b356001600160a01b038116810361084d5790565b60206001600160a01b0360248160ca541693604051948593849263b9a09fd560e01b84521660048301525afa90811561267f57600091612663575090565b61267c915060203d6020116109635761095581836123de565b90565b6040513d6000823e3d90fd5b90918060408301604084525260608201929060005b8181106126ed5750505060208183039101528281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161084d5760209260051b809284830137010190565b9091936001906001600160a01b0361270487612364565b168152602090810195019291016126a0565b801515908161272f575b5061272a57600090565b600190565b620186a09150111538612720565b8015159081612750575061272a57600090565b6101f49150111538612720565b15612716578015159081612750575061272a57600090565b3560ff8116810361084d5790565b3360009081527fbdd154b7c599a43e8b8410b62e84571cd69a79e95c9fc5b630a687cb7c97edf96020908152604080832054909291907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060ff16156127e95750505050565b6127f233612ef0565b908451906127ff826123c2565b604282528382019460603687378251156129b45760308653825190600191600110156129b45790607860218501536041915b8183116129465750505061290457846128d260486128f69360449798519889916128c3898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a5261288e815180928d603789019101612ea4565b8401917f206973206d697373696e6720726f6c6520000000000000000000000000000000603784015251809386840190612ea4565b010360288101895201876123de565b5194859362461bcd60e51b8552600485015251809281602486015285850190612ea4565b601f01601f19168101030190fd5b60648386519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f811660108110156129a0576f181899199a1a9b1b9c1cb0b131b232b360811b901a6129768587612edf565b5360041c92801561298c57600019019190612831565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b3360009081527fffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b60209081526040808320549092919060ff1615612a0b57505050565b612a1433612ef0565b835183612a20826123c2565b604282528382019460603687378251156129b45760308653825190600191600110156129b45790607860218501536041915b818311612aaf5750505061290457846128d260486128f69360449798519889916128c3898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a5261288e815180928d603789019101612ea4565b909192600f811660108110156129a0576f181899199a1a9b1b9c1cb0b131b232b360811b901a612adf8587612edf565b5360041c92801561298c57600019019190612a52565b3360009081527fb8856e02d8db4f86d5561f04ba0fd00f302915fcd46f5dd1dd5d4c6dc0a5aabb6020908152604080832054909291907fe6ad9a47fbda1dc18de1eb5eeb7d935e5e81b4748f3cfc61e233e64f881820609060ff1615612b5b5750505050565b612b6433612ef0565b90845190612b71826123c2565b604282528382019460603687378251156129b45760308653825190600191600110156129b45790607860218501536041915b818311612c005750505061290457846128d260486128f69360449798519889916128c3898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a5261288e815180928d603789019101612ea4565b909192600f811660108110156129a0576f181899199a1a9b1b9c1cb0b131b232b360811b901a612c308587612edf565b5360041c92801561298c57600019019190612ba3565b6000818152602060658152604092838320338452825260ff848420541615612c6e5750505050565b612c7733612ef0565b90845190612c84826123c2565b604282528382019460603687378251156129b45760308653825190600191600110156129b45790607860218501536041915b818311612d135750505061290457846128d260486128f69360449798519889916128c3898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a5261288e815180928d603789019101612ea4565b909192600f811660108110156129a0576f181899199a1a9b1b9c1cb0b131b232b360811b901a612d438587612edf565b5360041c92801561298c57600019019190612cb6565b6001600160a01b031660008181527fbdd154b7c599a43e8b8410b62e84571cd69a79e95c9fc5b630a687cb7c97edf9602052604080822054612dcf9392907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060ff1615612dd2575b8152609760205220613000565b50565b8082526065602052828220848352602052828220600160ff198254161790553384827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8580a4612dc2565b906040612dcf9260009080825260656020526001600160a01b0383832094169384835260205260ff8383205416612e5c575b815260976020522061308a565b808252606560205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a4612e4f565b60005b838110612eb75750506000910152565b8181015183820152602001612ea7565b80548210156124ed5760005260206000200190600090565b9081518110156124ed570160200190565b604051906060820182811067ffffffffffffffff8211176123ac57604052602a82526020820160403682378251156124ed57603090538151600190600110156124ed57607860218401536029905b808211612f92575050612f4e5790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015612feb576f181899199a1a9b1b9c1cb0b131b232b360811b901a612fc18486612edf565b5360041c918015612fd6576000190190612f3e565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b9190600183016000908282528060205260408220541560001461308457845494680100000000000000008610156130705783613060613049886001604098999a01855584612ec7565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b90600182019060009281845282602052604084205490811515600014613173576000199180830181811161315f5782549084820191821161314b57808203613116575b50505080548015613102578201916130e58383612ec7565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6131366131266130499386612ec7565b90549060031b1c92839286612ec7565b905586528460205260408620553880806130cd565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b505050509056fea164736f6c6343000817000a