0 txs
31.1k calls
constructor
constructor(address protocolRewards_, address weth_, address upgradeGate_)
functions
config
purefunction config() pure returns (tuple cointagStorage)
contractName
purefunction contractName() pure returns (string)
contractVersion
purefunction contractVersion() pure returns (string)
erc20
viewfunction erc20() view returns (address)
implementation
viewfunction implementation() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
PERCENTAGE_BASIS
viewfunction PERCENTAGE_BASIS() view returns (uint256)
pool
viewfunction pool() view returns (address)
protocolRewards
viewfunction protocolRewards() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
upgradeGate
viewfunction upgradeGate() view returns (address)
weth
viewfunction weth() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
distribute
nonpayablefunction distribute()
initialize
nonpayablefunction initialize(address creatorRewardRecipient, address pool_, uint256 percentageToBuyBurn)
pull
nonpayablefunction pull()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
BuyBurn
event BuyBurn(uint256 amountERC20Received, uint256 amountERC20Burned, uint256 amountETHSpent, uint256 amountETHToCreator, uint256 totalETHReceived, bytes buyFailureError, bytes burnFailureError)
EthReceived
event EthReceived(uint256 indexed amount, address indexed sender)
Initialized
event Initialized(address creatorRewardRecipient, address erc20, address pool, uint256 percentageToBuyBurn)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AddressZero
error AddressZero()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
InvalidUpgradePath
error InvalidUpgradePath(address oldImpl, address newImpl)
NotInitializing
error NotInitializing()
NotUniswapV3Pool
error NotUniswapV3Pool()
OnlyPool
error OnlyPool()
OnlyProtocolRewardsOrWeth
error OnlyProtocolRewardsOrWeth()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PoolNeedsOneTokenToBeWETH
error PoolNeedsOneTokenToBeWETH()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnknownBurnError
error UnknownBurnError()
UnknownSwapError
error UnknownSwapError()
UpgradeToMismatchedContractName
error UpgradeToMismatchedContractName(string current, string newName)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x6101003461019d57601f612b2138819003918201601f19168301916001600160401b038311848410176101a15780849260609460405283398101031261019d57610048816101b5565b90610061604061005a602084016101b5565b92016101b5565b913060805261006f816101c9565b610078826101c9565b610081836101c9565b6001600160a01b0390811660a05290811660c0521660e0525f516020612b015f395f51905f5254604081901c60ff1661018e576002600160401b03196001600160401b03821601610138575b60405161291890816101e98239608051818181610b700152610c8f015260a0518181816112890152818161136d0152611f58015260c051818181610210015281816102610152818161121f0152818161162c0152611d10015260e0518181816104230152610dfe0152f35b6001600160401b0319166001600160401b039081175f516020612b015f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f6100cd565b63f92ee8a960e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361019d57565b6001600160a01b0316156101d957565b639fabe1c160e01b5f5260045ffdfe6080806040526004361015610042575b50361561001a575f80fd5b33347f5798a089f6493e07174dd322a63c09a51e03d9b6ff1eef33b64005d803c04d105f80a3005b5f905f3560e01c90816316f0115b14611b28575080631794bb3c1461139157806329df647914611323578063329eb839146112435780633fc8cef3146111d45780634f1ef28614610be857806352d1902d14610b2a5780635c60da1b14610ab9578063715018a61461097757806375d0c0dc146108f8578063785e9e861461088757806379502c551461073d57806379ba50971461069b5780638da5cb5b1461062a578063a0a8e460146105ac578063ad3cb1cc1461052a578063e30c3978146104b9578063e4fc6b6d14610482578063e5ab334f14610447578063e7264f2a146103d8578063f2fde38b146102bb5763fa461e330361000f57346102b85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b85760243560043560443567ffffffffffffffff81116102b657366023820112156102b657806004013567ffffffffffffffff81116102b257369101602401116102ae5773ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2025416330361028657828113156102385761023591503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166126c8565b80f35b50818113610245575b5080f35b610235903373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166126c8565b6004837f4b602735000000000000000000000000000000000000000000000000000000008152fd5b8280fd5b8480fd5b835b80fd5b50346102b85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b85773ffffffffffffffffffffffffffffffffffffffff610308611b95565b61031061254d565b16807fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416177f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005573ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b85760206040516127108152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857610235611cbf565b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857602073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416604051908152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b8576105a860405161056a604082611c01565b600581527f352e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611c7c565b0390f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b8576105a86040516105ec604082611c01565b600581527f302e312e320000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611c7c565b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b8573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054160361071157610235336125b9565b807f118cdaa7000000000000000000000000000000000000000000000000000000006024925233600452fd5b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857606060405161077a81611bb8565b8281528260208201528260408201520152608060405161079981611bb8565b73ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec20054169081815273ffffffffffffffffffffffffffffffffffffffff807f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec20154166020830190815281807f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2025416916040850192835260607f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2035495019485526040519586525116602085015251166040830152516060820152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857602073ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2015416604051908152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857506105a8604051610939604082611c01565b600781527f436f696e746167000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611c7c565b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b8576109ae61254d565b7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054167f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00558073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857602073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416604051908152f35b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b85773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610bc05760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b807fe07c8dba0000000000000000000000000000000000000000000000000000000060049252fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857610c1b611b95565b6024359067ffffffffffffffff82116102ae57366023830112156102ae5781600401359083610c4983611c42565b93610c576040519586611c01565b838552602085019336602482840101116102ae578060246020930186378501015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115611192575b5061116a57610cc761254d565b73ffffffffffffffffffffffffffffffffffffffff8116926040517f75d0c0dc000000000000000000000000000000000000000000000000000000008152858160048183895af190811561115f578691611145575b50604051907f75d0c0dc0000000000000000000000000000000000000000000000000000000082528682600481305afa91821561113a578792611116575b50805182518082149182611100575b50501561108a5750507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff81166040517f21f743470000000000000000000000000000000000000000000000000000000081528160048201528660248201526020816044818003018173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561107f578891611050575b501561102057506040517f52d1902d000000000000000000000000000000000000000000000000000000008152602081600481895afa879181610fe8575b50610e9d57602487877f4c9c8ce3000000000000000000000000000000000000000000000000000000008252600452fd5b90817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc88979303610fbd5750833b15610f91577fffffffffffffffffffffffff00000000000000000000000000000000000000001681177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115610f5d576102419382915190845af4610f5761281a565b91612849565b5050505034610f695780f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b602486837f4c9c8ce3000000000000000000000000000000000000000000000000000000008252600452fd5b7faa1d49a4000000000000000000000000000000000000000000000000000000008752600452602486fd5b9091506020813d602011611018575b8161100460209383611c01565b810103126110145751905f610e6c565b8780fd5b3d9150610ff7565b86866044927f25c05f9d000000000000000000000000000000000000000000000000000000008352600452602452fd5b611072915060203d602011611078575b61106a8183611c01565b810190612535565b5f610e2e565b503d611060565b6040513d8a823e3d90fd5b906110fc6110cc926040519384937fa23cbf7b000000000000000000000000000000000000000000000000000000008552604060048601526044850190611c7c565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016024850152611c7c565b0390fd5b9091506020830120906020840120145f80610d69565b6111339192503d8089833e61112b8183611c01565b8101906124d2565b905f610d5a565b6040513d89823e3d90fd5b61115991503d8088833e61112b8183611c01565b5f610d1c565b6040513d88823e3d90fd5b6004847fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610cba565b50346102b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461131f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261131f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561131f575f80916044604051809481937ff3fef3a30000000000000000000000000000000000000000000000000000000083523060048401528160248401525af1801561131457611301575b50610235611cbf565b61130d91505f90611c01565b5f5f6112f8565b6040513d5f823e3d90fd5b5f80fd5b3461131f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261131f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461131f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261131f576113c8611b95565b6024359073ffffffffffffffffffffffffffffffffffffffff821680830361131f57604435917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c16159467ffffffffffffffff821680159081611b20575b6001149081611b16575b159081611b0d575b50611ae557818660017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006114a59516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055611a90575b506114a083612461565b612461565b6114ad6127c3565b6114b56127c3565b73ffffffffffffffffffffffffffffffffffffffff8116908115611a64576114dc906125b9565b6114e46127c3565b807fffffffffffffffffffffffff00000000000000000000000000000000000000007f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2005416177f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec20055817fffffffffffffffffffffffff00000000000000000000000000000000000000007f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2025416177f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec20255827f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec203556040517f0dfe1681000000000000000000000000000000000000000000000000000000008152602081600481865afa908115611314575f91611a45575b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908173ffffffffffffffffffffffffffffffffffffffff8216145f14611a2a57506040517fd21220a7000000000000000000000000000000000000000000000000000000008152602081600481875afa80156113145773ffffffffffffffffffffffffffffffffffffffff915f91611a0b575b505b167fffffffffffffffffffffffff00000000000000000000000000000000000000007f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2015416177f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec201556040517f0dfe1681000000000000000000000000000000000000000000000000000000008152602081600481875afa90811561131457829173ffffffffffffffffffffffffffffffffffffffff915f916119ec575b501614908115611960575b5015611938576040517fddca3f43000000000000000000000000000000000000000000000000000000008152602081600481865afa90816118fe575b506117f2577f21162cac000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8f2f06eb3e4facd106f36fbb8af56e828e047dbc83e6c3bc1109902e61cc5b5e9260809273ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2015416604051938452602084015260408301526060820152a161186b57005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6020813d602011611930575b8161191760209383611c01565b8101031261131f575162ffffff811681146117c5575f80fd5b3d915061190a565b7f1c1e2e95000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506040517fd21220a7000000000000000000000000000000000000000000000000000000008152602081600481875afa80156113145773ffffffffffffffffffffffffffffffffffffffff915f916119bd575b50161485611789565b6119df915060203d6020116119e5575b6119d78183611c01565b8101906124a6565b876119b4565b503d6119cd565b611a05915060203d6020116119e5576119d78183611c01565b8861177e565b611a24915060203d6020116119e5576119d78183611c01565b876116bf565b73ffffffffffffffffffffffffffffffffffffffff906116c1565b611a5e915060203d6020116119e5576119d78183611c01565b85611614565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005586611496565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050158761143f565b303b159150611437565b87915061142d565b3461131f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261131f5760209073ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec20254168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361131f57565b6080810190811067ffffffffffffffff821117611bd457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611bd457604052565b67ffffffffffffffff8111611bd457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b5f477f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec203548082029082820414821517156124345761271090049073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b1561131f576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048187875af180156113145761241f575b50606073ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec20254166040517f0dfe1681000000000000000000000000000000000000000000000000000000008152602081600481855afa90811561113a579160c473ffffffffffffffffffffffffffffffffffffffff60409381958b91612400575b5016871480156123e457896401000276a4935b855196879586947f128acb0800000000000000000000000000000000000000000000000000000000865230600487015260248601528c604486015216606484015260a060848401528160a48401525af190816123b5575b506123af5750611e7f61281a565b805115612371575b915b82511561209b578392602092611efc7fc66f81fea2bc16396c6e018060629d6262e44c739d649d4e6cc1d1c6154fd01f96611f299473ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2005416906126c8565b6040519487865287858701526040860152806060860152608085015260e060a085015260e0840190611c7c565b84838203918260c0860152520190a15b47611f415750565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016479073ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec2005416813b156102b6579060c4849260405194859384927ff7f8266f00000000000000000000000000000000000000000000000000000000845260048401527ffca54a4a00000000000000000000000000000000000000000000000000000000602484015260606044840152602960648401527f436f696e7461672073706c697420746f2063726561746f72207265776172642060848401527f726563697069656e74000000000000000000000000000000000000000000000060a48401525af180156120905761207e575050565b612089828092611c01565b6102b85750565b6040513d84823e3d90fd5b5090828203908282116123445773ffffffffffffffffffffffffffffffffffffffff7f25167c63cb0f1e2a2dd36e690b0f8b529147dfbc8466d2e95c11b78d76fec201541690604051937f70a08231000000000000000000000000000000000000000000000000000000008552306004860152602085602481865afa94851561113a57879561230c575b506060833b15611014576040517f42966c68000000000000000000000000000000000000000000000000000000008152866004820152888082602481838a5af191826122f3575b5050917fc66f81fea2bc16396c6e018060629d6262e44c739d649d4e6cc1d1c6154fd01f97969593916122569593155f146122e6575088806121ac61281a565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006020820190815261dead602483015260448083018c905282529196919083906121fa606482611c01565b51925af161220661281a565b90806122b9575b1561225e5750612248929386975b6040519889988952602089015260408801526060870152608086015260e060a086015260e0850190611c7c565b9083820360c0850152611c7c565b0390a1611f39565b809350925115612275575b6122489293899761221b565b61224892506040517fe20c4218000000000000000000000000000000000000000000000000000000006020820152600481526122b2602482611c01565b9250612269565b50805180159081156122cc575b5061220d565b6122e0915060209083010160208301612535565b5f6122c6565b936122489350869761221b565b816122fd91611c01565b61230857885f61216c565b8880fd5b9094506020813d60201161233c575b8161232860209383611c01565b810103126123385751935f612125565b8680fd5b3d915061231b565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b506040517f70b27f3d000000000000000000000000000000000000000000000000000000006020820152600481526123aa602482611c01565b611e87565b91611e89565b604090813d83116123dd575b6123cb8183611c01565b810103126123d9575f611e71565b8580fd5b503d6123c1565b8973fffd8963efd1fc6a506488495d951d5263988d2593611e1a565b612419915060203d6020116119e5576119d78183611c01565b5f611e07565b61242c9194505f90611c01565b5f925f611d72565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff161561247e57565b7f9fabe1c1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9081602091031261131f575173ffffffffffffffffffffffffffffffffffffffff8116810361131f5790565b60208183031261131f5780519067ffffffffffffffff821161131f570181601f8201121561131f5780519061250682611c42565b926125146040519485611c01565b8284526020838301011161131f57815f9260208093018386015e8301015290565b9081602091031261131f5751801515810361131f5790565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361258d57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054167f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005573ffffffffffffffffffffffffffffffffffffffff807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054921691827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b5f6127679273ffffffffffffffffffffffffffffffffffffffff8293604051968260208901947fa9059cbb00000000000000000000000000000000000000000000000000000000865216602489015260448801526127506064888003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101895288611c01565b1694519082865af161276061281a565b9083612849565b80519081151591826127a8575b505061277d5750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6127bb9250602080918301019101612535565b155f80612774565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156127f257565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b3d15612844573d9061282b82611c42565b916128396040519384611c01565b82523d5f602084013e565b606090565b90612886575080511561285e57805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806128d9575b612897575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561288f56fea26469706673582212205052d18f76715356cc75e1a4a9629239a3ed95d1c67661d90c3054be91fb58fd64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a000000000000000000000000007777777f279eba3d3ad8f4e708545291a6fdba8b00000000000000000000000042000000000000000000000000000000000000060000000000000000000000002383770929f8d56e314a449ec5f6812de27245e6