0 txs
0 calls
constructor
constructor()
functions
agETH
viewfunction agETH() view returns (address)
agETHOracle
viewfunction agETHOracle() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
BRIDGER_ROLE
viewfunction BRIDGER_ROLE() view returns (bytes32)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feeBps
viewfunction feeBps() view returns (uint256)
feeEarnedInETH
viewfunction feeEarnedInETH() view returns (uint256)
feeEarnedInToken
viewfunction feeEarnedInToken(address token) view returns (uint256 feeEarned)
getRate
viewfunction getRate() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSupportedTokens
viewfunction getSupportedTokens() view returns (address[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isEthDepositEnabled
viewfunction isEthDepositEnabled() view returns (bool)
name
viewfunction name() view returns (string)
supportedTokenList
viewfunction supportedTokenList(uint256) view returns (address)
supportedTokenOracle
viewfunction supportedTokenOracle(address token) view returns (address oracle)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
viewSwapAgETHAmountAndFee
viewfunction viewSwapAgETHAmountAndFee(uint256 amount, address token) view returns (uint256 agETHAmount, uint256 fee)
viewSwapAgETHAmountAndFee
viewfunction viewSwapAgETHAmountAndFee(uint256 amount) view returns (uint256 agETHAmount, uint256 fee)
addSupportedToken
nonpayablefunction addSupportedToken(address token, address oracle)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(address token, uint256 amount, string referralId)
deposit
payablefunction deposit(string referralId) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address admin, address bridger, address _agETH, uint256 _feeBps, address _agETHOracle)
moveAssetsForBridging
nonpayablefunction moveAssetsForBridging()
moveAssetsForBridging
nonpayablefunction moveAssetsForBridging(address token)
removeSupportedToken
nonpayablefunction removeSupportedToken(address token, uint256 tokenIndex)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAgETHOracle
nonpayablefunction setAgETHOracle(address _agETHOracle)
setFeeBps
nonpayablefunction setFeeBps(uint256 _feeBps)
setIsEthDepositEnabled
nonpayablefunction setIsEthDepositEnabled(bool _isEthDepositEnabled)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdrawFees
nonpayablefunction withdrawFees(address receiver, address token)
withdrawFees
nonpayablefunction withdrawFees(address receiver)
events
AddSupportedToken
event AddSupportedToken(address token)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AssetsMovedForBridging
event AssetsMovedForBridging(uint256 ethBalanceMinusFees)
AssetsMovedForBridging
event AssetsMovedForBridging(uint256 tokenBalanceMinusFees, address token)
FeeBpsSet
event FeeBpsSet(uint256 feeBps)
FeesWithdrawn
event FeesWithdrawn(uint256 feeEarnedInETH, address token)
FeesWithdrawn
event FeesWithdrawn(uint256 feeEarnedInETH)
Initialized
event Initialized(uint8 version)
IsEthDepositEnabled
event IsEthDepositEnabled(bool isEthDepositEnabled)
OracleSet
event OracleSet(address oracle)
RemovedSupportedToken
event RemovedSupportedToken(address token)
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)
SwapOccurred
event SwapOccurred(address indexed user, uint256 agETHAmount, uint256 fee, string referralId)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
AlreadySupportedToken
error AlreadySupportedToken()
EthDepositDisabled
error EthDepositDisabled()
InvalidAmount
error InvalidAmount()
TokenNotFoundError
error TokenNotFoundError()
TransferFailed
error TransferFailed()
UnsupportedOracle
error UnsupportedOracle()
UnsupportedToken
error UnsupportedToken()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000df565b5f54610100900460ff16156200008d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000dd575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351180620000ed5f395ff3fe6080604052600436106102cc575f3560e01c806370a082311161017b578063a457c2d7116100d1578063d1d12b9711610087578063dd62ed3e11610062578063dd62ed3e14610823578063f255527814610867578063f2b27cac14610886575f80fd5b8063d1d12b97146107c4578063d3c7c2c7146107e3578063d547741f14610804575f80fd5b8063a9b008b6116100b7578063a9b008b614610767578063bfe07da614610786578063c2b7be16146107a5575f80fd5b8063a457c2d714610729578063a9059cbb14610748575f80fd5b80638c8263c81161013157806395d89b411161010c57806395d89b41146106ef578063a217fddf14610703578063a26e118614610716575f80fd5b80638c8263c81461067757806390ed579b1461069657806391d14854146106ab575f80fd5b8063794240c811610161578063794240c8146106085780637de1c7ed146106395780638231cdad14610658575f80fd5b806370a08231146105b557806372c27b62146105e9575f80fd5b80632b2a878d1161023057806339509351116101e657806365160353116101c1578063651603531461056e578063679aefce1461058d578063687b0a11146105a1575f80fd5b806339509351146104fd5780633d75e4511461051c578063530b97a41461054f575f80fd5b80632f2ff15d116102165780632f2ff15d146104a4578063313ce567146104c357806336568abe146104de575f80fd5b80632b2a878d146104505780632b60c82214610485575f80fd5b8063164e68de1161028557806323b872dd1161026b57806323b872dd146103ee578063248a9ca31461040d57806324a9d8531461043b575f80fd5b8063164e68de146103af57806318160ddd146103d0575f80fd5b806306fdde03116102b557806306fdde0314610338578063084bd3cf14610359578063095ea7b314610390575f80fd5b806301ffc9a7146102d057806305f36f1514610304575b5f80fd5b3480156102db575f80fd5b506102ef6102ea366004612d28565b6108b1565b60405190151581526020015b60405180910390f35b34801561030f575f80fd5b5061032361031e366004612d82565b610949565b604080519283526020830191909152016102fb565b348015610343575f80fd5b5061034c610a8d565b6040516102fb9190612e17565b348015610364575f80fd5b5060fe54610378906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561039b575f80fd5b506102ef6103aa366004612e29565b610b1d565b3480156103ba575f80fd5b506103ce6103c9366004612e51565b610b34565b005b3480156103db575f80fd5b506035545b6040519081526020016102fb565b3480156103f9575f80fd5b506102ef610408366004612e6a565b610c2a565b348015610418575f80fd5b506103e0610427366004612ea3565b5f9081526097602052604090206001015490565b348015610446575f80fd5b506103e060fc5481565b34801561045b575f80fd5b5061037861046a366004612e51565b6101006020525f90815260409020546001600160a01b031681565b348015610490575f80fd5b5061037861049f366004612ea3565b610c4d565b3480156104af575f80fd5b506103ce6104be366004612d82565b610c76565b3480156104ce575f80fd5b50604051601281526020016102fb565b3480156104e9575f80fd5b506103ce6104f8366004612d82565b610c9f565b348015610508575f80fd5b506102ef610517366004612e29565b610d30565b348015610527575f80fd5b506103e07fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a881565b34801561055a575f80fd5b506103ce610569366004612eba565b610d6e565b348015610579575f80fd5b50610323610588366004612ea3565b611056565b348015610598575f80fd5b506103e06110b3565b3480156105ac575f80fd5b506103ce61113c565b3480156105c0575f80fd5b506103e06105cf366004612e51565b6001600160a01b03165f9081526033602052604090205490565b3480156105f4575f80fd5b506103ce610603366004612ea3565b611230565b348015610613575f80fd5b5060fe546102ef9074010000000000000000000000000000000000000000900460ff1681565b348015610644575f80fd5b506103ce610653366004612f21565b6112b3565b348015610663575f80fd5b506103ce610672366004612e29565b611336565b348015610682575f80fd5b506103ce610691366004612e51565b61150d565b3480156106a1575f80fd5b506103e060fd5481565b3480156106b6575f80fd5b506102ef6106c5366004612d82565b5f9182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156106fa575f80fd5b5061034c611586565b34801561070e575f80fd5b506103e05f81565b6103ce610724366004613010565b611595565b348015610734575f80fd5b506102ef610743366004612e29565b61171e565b348015610753575f80fd5b506102ef610762366004612e29565b6117c7565b348015610772575f80fd5b5060fb54610378906001600160a01b031681565b348015610791575f80fd5b506103ce6107a0366004613042565b6117d4565b3480156107b0575f80fd5b506103ce6107bf366004613095565b611984565b3480156107cf575f80fd5b506103ce6107de366004612e51565b611b3d565b3480156107ee575f80fd5b506107f7611ca8565b6040516102fb91906130bd565b34801561080f575f80fd5b506103ce61081e366004612d82565b611d08565b34801561082e575f80fd5b506103e061083d366004613095565b6001600160a01b039182165f90815260346020908152604080832093909416825291909152205490565b348015610872575f80fd5b506103ce610881366004613095565b611d2c565b348015610891575f80fd5b506103e06108a0366004612e51565b60ff6020525f908152604090205481565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061094357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001600160a01b038082165f9081526101006020526040812054909182918491166109a0576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271060fc54866109b19190613136565b6109bb919061314d565b91505f6109c88387613185565b90505f6109d36110b3565b6001600160a01b038088165f908152610100602090815260408083205481517f679aefce00000000000000000000000000000000000000000000000000000000815291519596509294929093169263679aefce92600480830193928290030181865afa158015610a45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a699190613198565b905081610a768285613136565b610a80919061314d565b9550505050509250929050565b606060368054610a9c906131af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac8906131af565b8015610b135780601f10610aea57610100808354040283529160200191610b13565b820191905f5260205f20905b815481529060010190602001808311610af657829003601f168201915b5050505050905090565b5f33610b2a818585611e19565b5060019392505050565b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a8610b5e81611f70565b60fd80545f918290556040519091906001600160a01b0385169083908381818185875af1925050503d805f8114610bb0576040519150601f19603f3d011682016040523d82523d5f602084013e610bb5565b606091505b5050905080610bf0576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f9800e6f57aeb4360eaa72295a820a4293e1e66fbfcabcd8874ae141304a76deb906020015b60405180910390a150505050565b5f33610c37858285611f7a565b610c42858585612029565b506001949350505050565b6101018181548110610c5d575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f82815260976020526040902060010154610c9081611f70565b610c9a838361221b565b505050565b6001600160a01b0381163314610d225760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610d2c82826122d9565b5050565b335f8181526034602090815260408083206001600160a01b0387168452909152812054909190610b2a9082908690610d69908790613200565b611e19565b5f54610100900460ff1615808015610d8c57505f54600160ff909116105b80610da55750303b158015610da557505f5460ff166001145b610e175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610d19565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e73575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610e7c84612378565b610e8582612378565b610ef96040518060400160405280600581526020017f61674554480000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f61674554480000000000000000000000000000000000000000000000000000008152506123b8565b610f0161243e565b610f096124bc565b610f135f8761221b565b610f3d7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a887612540565b610f677fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a886612540565b60fb80546001600160a01b038087167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790915560fc84905560fe80547fffffffffffffffffffffff000000000000000000000000000000000000000000169184169190911774010000000000000000000000000000000000000000179055801561104e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b5f8061271060fc54846110699190613136565b611073919061314d565b90505f6110808285613185565b90505f61108b6110b3565b9050806110a083670de0b6b3a7640000613136565b6110aa919061314d565b93505050915091565b60fe54604080517f679aefce00000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163679aefce9160048083019260209291908290030181865afa158015611113573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111379190613198565b905090565b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a861116681611f70565b5f60fd54476111759190613185565b6040519091505f90339083908381818185875af1925050503d805f81146111b7576040519150601f19603f3d011682016040523d82523d5f602084013e6111bc565b606091505b50509050806111f7576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f52f82c8bf940e02934eb4517dd40f665fd2b0fa3f1d03a1e40edb3d4a12582ed906020015b60405180910390a1505050565b5f61123a81611f70565b612710821115611276576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc8290556040518281527f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b906020015b60405180910390a15050565b5f6112bd81611f70565b60fe805483151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f65a7948832a4d71913587e81b87941d98ff34699b7cbccd6f18130ef44a50ef0906112a790841515815260200190565b5f61134081611f70565b61134983612378565b826001600160a01b0316610101838154811061136757611367613213565b5f918252602090912001546001600160a01b0316146113b2576040517fa126a3fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f9081526101006020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610101805461140190600190613185565b8154811061141157611411613213565b5f9182526020909120015461010180546001600160a01b03909216918490811061143d5761143d613213565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555061010180548061147a5761147a613240565b5f8281526020908190207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908301810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559091019091556040516001600160a01b03851681527f8acbc8326a37478819015a1cb4a2c1bae94f77521707fcd2cfd3a16cc1a1ccab9101611223565b5f61151781611f70565b61152082612378565b60fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa906020016112a7565b606060378054610a9c906131af565b61159d61254a565b60fe5474010000000000000000000000000000000000000000900460ff166115f1576040517f8bf1614200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b345f81900361162c576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061163783611056565b915091508060fd5f82825461164c9190613200565b909155505060fb546040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b03909116906340c10f19906044015f604051808303815f87803b1580156116b3575f80fd5b505af11580156116c5573d5f803e3d5ffd5b50505050336001600160a01b03167f6fc20b1cf8f9d1126dbd5964e2517cd71083acf40aed30fb6e0c4850d251c94f8383876040516117069392919061326d565b60405180910390a250505061171b600160c955565b50565b335f8181526034602090815260408083206001600160a01b0387168452909152812054909190838110156117ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610d19565b610c428286868403611e19565b5f33610b2a818585612029565b6117dc61254a565b6001600160a01b038084165f908152610100602052604090205484911661182f576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611868576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187d6001600160a01b0385163330866125aa565b5f806118898587610949565b6001600160a01b0388165f90815260ff60205260408120805493955091935083926118b5908490613200565b909155505060fb546040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b03909116906340c10f19906044015f604051808303815f87803b15801561191c575f80fd5b505af115801561192e573d5f803e3d5ffd5b50505050336001600160a01b03167f6fc20b1cf8f9d1126dbd5964e2517cd71083acf40aed30fb6e0c4850d251c94f83838760405161196f9392919061326d565b60405180910390a2505050610c9a600160c955565b5f61198e81611f70565b61199783612378565b6119a082612378565b6001600160a01b038381165f908152610100602052604090205416156119f2576040517f3ef79e6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b031663679aefce6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a529190613198565b5f03611a8a576040517fe2ec750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101018054600181019091557f109ea3cebb188b9c1b9fc5bb3920be60dfdc8699098dff92f3d80daaca7476890180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038681169182179093555f818152610100602090815260409182902080549094169487169490941790925590519081527f147a0287fa31c92ca7aabc769c1be557a8e445302cc2d747ab0bbee74ee44ab69101611223565b6001600160a01b038082165f9081526101006020526040902054829116611b90576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a8611bba81611f70565b6001600160a01b0383165f81815260ff60205260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919290916370a0823190602401602060405180830381865afa158015611c26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4a9190613198565b611c549190613185565b9050611c6a6001600160a01b0385163383612679565b604080518281526001600160a01b03861660208201527f7493a63b680cd0d3326c9e387c9e325f1eb18423ba82e0f16da673fc7b7b75d79101610c1c565b6060610101805480602002602001604051908101604052809291908181526020018280548015610b1357602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611ce1575050505050905090565b5f82815260976020526040902060010154611d2281611f70565b610c9a83836122d9565b6001600160a01b038082165f9081526101006020526040902054829116611d7f576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a8611da981611f70565b6001600160a01b0383165f81815260ff60205260408120805491905590611dd1908683612679565b604080518281526001600160a01b03861660208201527f812bcf6853ebc81dc0a1d2323893eedad6cd086a4398311a699e0a7acdf187b3910160405180910390a15050505050565b6001600160a01b038316611e945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d19565b6001600160a01b038216611f105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d19565b6001600160a01b038381165f8181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61171b81336126c2565b6001600160a01b038381165f908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461202357818110156120165760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d19565b6120238484848403611e19565b50505050565b6001600160a01b0383166120a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d19565b6001600160a01b0382166121215760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d19565b6001600160a01b0383165f90815260336020526040902054818110156121af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610d19565b6001600160a01b038085165f8181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061220e9086815260200190565b60405180910390a3612023565b5f8281526097602090815260408083206001600160a01b038516845290915290205460ff16610d2c575f8281526097602090815260408083206001600160a01b0385168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122953390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b5f8281526097602090815260408083206001600160a01b038516845290915290205460ff1615610d2c575f8281526097602090815260408083206001600160a01b038516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b03811661171b576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54610100900460ff166124345760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d19565b610d2c8282612754565b5f54610100900460ff166124ba5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d19565b565b5f54610100900460ff166125385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d19565b6124ba6127e9565b610d2c828261221b565b600260c9540361259c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d19565b600260c955565b600160c955565b6040516001600160a01b03808516602483015283166044820152606481018290526120239085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612865565b6040516001600160a01b038316602482015260448101829052610c9a9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016125f7565b5f8281526097602090815260408083206001600160a01b038516845290915290205460ff16610d2c576126f48161294b565b6126ff83602061295d565b604051602001612710929190613294565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610d1991600401612e17565b5f54610100900460ff166127d05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d19565b60366127dc8382613359565b506037610c9a8282613359565b5f54610100900460ff166125a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d19565b5f6128b9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b879092919063ffffffff16565b905080515f14806128d95750808060200190518101906128d99190613471565b610c9a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d19565b60606109436001600160a01b03831660145b60605f61296b836002613136565b612976906002613200565b67ffffffffffffffff81111561298e5761298e612f3c565b6040519080825280601f01601f1916602001820160405280156129b8576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106129ee576129ee613213565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612a5057612a50613213565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f612a8a846002613136565b612a95906001613200565b90505b6001811115612b31577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612ad657612ad6613213565b1a60f81b828281518110612aec57612aec613213565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049490941c93612b2a8161348c565b9050612a98565b508315612b805760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d19565b9392505050565b6060612b9584845f85612b9d565b949350505050565b606082471015612c155760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d19565b5f80866001600160a01b03168587604051612c3091906134c0565b5f6040518083038185875af1925050503d805f8114612c6a576040519150601f19603f3d011682016040523d82523d5f602084013e612c6f565b606091505b5091509150612c8087838387612c8b565b979650505050505050565b60608315612cf95782515f03612cf2576001600160a01b0385163b612cf25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d19565b5081612b95565b612b958383815115612d0e5781518083602001fd5b8060405162461bcd60e51b8152600401610d199190612e17565b5f60208284031215612d38575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b80575f80fd5b80356001600160a01b0381168114612d7d575f80fd5b919050565b5f8060408385031215612d93575f80fd5b82359150612da360208401612d67565b90509250929050565b5f5b83811015612dc6578181015183820152602001612dae565b50505f910152565b5f8151808452612de5816020860160208601612dac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f612b806020830184612dce565b5f8060408385031215612e3a575f80fd5b612e4383612d67565b946020939093013593505050565b5f60208284031215612e61575f80fd5b612b8082612d67565b5f805f60608486031215612e7c575f80fd5b612e8584612d67565b9250612e9360208501612d67565b9150604084013590509250925092565b5f60208284031215612eb3575f80fd5b5035919050565b5f805f805f60a08688031215612ece575f80fd5b612ed786612d67565b9450612ee560208701612d67565b9350612ef360408701612d67565b925060608601359150612f0860808701612d67565b90509295509295909350565b801515811461171b575f80fd5b5f60208284031215612f31575f80fd5b8135612b8081612f14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612f78575f80fd5b813567ffffffffffffffff80821115612f9357612f93612f3c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612fd957612fd9612f3c565b81604052838152866020858801011115612ff1575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215613020575f80fd5b813567ffffffffffffffff811115613036575f80fd5b612b9584828501612f69565b5f805f60608486031215613054575f80fd5b61305d84612d67565b925060208401359150604084013567ffffffffffffffff81111561307f575f80fd5b61308b86828701612f69565b9150509250925092565b5f80604083850312156130a6575f80fd5b6130af83612d67565b9150612da360208401612d67565b602080825282518282018190525f9190848201906040850190845b818110156130fd5783516001600160a01b0316835292840192918401916001016130d8565b50909695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761094357610943613109565b5f82613180577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561094357610943613109565b5f602082840312156131a8575f80fd5b5051919050565b600181811c908216806131c357607f821691505b6020821081036131fa577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b8082018082111561094357610943613109565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b838152826020820152606060408201525f61328b6060830184612dce565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f83516132cb816017850160208801612dac565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613308816028840160208801612dac565b01602801949350505050565b601f821115610c9a575f81815260208120601f850160051c8101602086101561333a5750805b601f850160051c820191505b8181101561104e57828155600101613346565b815167ffffffffffffffff81111561337357613373612f3c565b6133878161338184546131af565b84613314565b602080601f8311600181146133d9575f84156133a35750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561104e565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561342557888601518255948401946001909101908401613406565b508582101561346157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215613481575f80fd5b8151612b8081612f14565b5f8161349a5761349a613109565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f82516134d1818460208701612dac565b919091019291505056fea2646970667358221220a8229ada234bbdcb941587739a645a2f384c1cb07f09551567782469c531a46a64736f6c63430008150033