31 txs
2.9k calls
constructor
constructor(string _name, string _symbol, address _erc4626)
functions
accruedRewards
viewfunction accruedRewards(address) view returns (uint256[] rewardAmounts)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
assetInfo
viewfunction assetInfo() view returns (uint8 assetType, address assetAddress, uint8 assetDecimals)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
getRewardTokens
viewfunction getRewardTokens() view returns (address[] rewardTokens)
getTokensIn
viewfunction getTokensIn() view returns (address[] res)
getTokensOut
viewfunction getTokensOut() view returns (address[] res)
isValidTokenIn
viewfunction isValidTokenIn(address token) view returns (bool)
isValidTokenOut
viewfunction isValidTokenOut(address token) view returns (bool)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
previewDeposit
viewfunction previewDeposit(address tokenIn, uint256 amountTokenToDeposit) view returns (uint256 amountSharesOut)
previewRedeem
viewfunction previewRedeem(address tokenOut, uint256 amountSharesToRedeem) view returns (uint256 amountTokenOut)
rewardIndexesStored
viewfunction rewardIndexesStored() view returns (uint256[] indexes)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
yieldToken
viewfunction yieldToken() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
claimOwnership
nonpayablefunction claimOwnership()
claimRewards
nonpayablefunction claimRewards(address) returns (uint256[] rewardAmounts)
deposit
payablefunction deposit(address receiver, address tokenIn, uint256 amountTokenToDeposit, uint256 minSharesOut) payable returns (uint256 amountSharesOut)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(address receiver, uint256 amountSharesToRedeem, address tokenOut, uint256 minTokenOut, bool burnFromInternalBalance) returns (uint256 amountTokenOut)
rewardIndexesCurrent
nonpayablefunction rewardIndexesCurrent() returns (uint256[] indexes)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner, bool direct, bool renounce)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ClaimRewards
event ClaimRewards(address indexed user, address[] rewardTokens, uint256[] rewardAmounts)
Deposit
event Deposit(address indexed caller, address indexed receiver, address indexed tokenIn, uint256 amountDeposited, uint256 amountSyOut)
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Redeem
event Redeem(address indexed caller, address indexed receiver, address indexed tokenOut, uint256 amountSyToRedeem, uint256 amountTokenOut)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
InvalidShortString
error InvalidShortString()
StringTooLong
error StringTooLong(string str)
SYInsufficientSharesOut
error SYInsufficientSharesOut(uint256 actualSharesOut, uint256 requiredSharesOut)
SYInsufficientTokenOut
error SYInsufficientTokenOut(uint256 actualTokenOut, uint256 requiredTokenOut)
SYInvalidTokenIn
error SYInvalidTokenIn(address token)
SYInvalidTokenOut
error SYInvalidTokenOut(address token)
SYZeroDeposit
error SYZeroDeposit()
SYZeroRedeem
error SYZeroRedeem()
creation bytecode
0x6101c080604052346200043557620041cb803803809162000021828562000831565b8339810190606081830312620004355780516001600160401b0381116200043557826200005091830162000894565b602082015190926001600160401b03821162000435576200007a6040916200008293850162000894565b9201620008e1565b60405163313ce56760e01b8152929091906020846004816001600160a01b0387165afa93841562000442575f94620007d0575b5060408051949085016001600160401b038111868210176200058a5760405260018552603160f81b6020860190815282519093906001600160401b0381116200058a57600354600181811c91168015620007c5575b6020821014620006aa57601f81116200075d575b50806020601f8211600114620006d5575f91620006c9575b508160011b915f199060031b1c1916176003555b8051906001600160401b0382116200058a5760045490600182811c92168015620006be575b6020831014620006aa5781601f84931162000637575b50602090601f8311600114620005aa575f926200059e575b50508160011b915f199060031b1c1916176004555b608052600280546001600160f81b0316600160f81b179055620001d58162000b6c565b61014052620001e48462000d07565b61016052602081519101209283610100525190209182610120524660c0526040519260208401917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8352604085015260608401524660808401523060a084015260a083528260c081011060018060401b0360c0850111176200058a5760c083016040528251902060a0523060e05260ff19603a5416603a5560095460ff8160a81c16159283809462000579575b80156200055d575b15620004fd575060ff60a01b198116600160a01b1760095582620004e4575b50610180918183526009549060ff8260a81c16156200048b57600880546001600160a01b031916331790556200044d575b506040516338d52e0f60e01b8152906020826004816001600160a01b0385165afa91821562000442575f92620003f6575b506101a0828152916200033791906001600160a01b0316620008f6565b60405190613375928362000e568439608051836113c9015260a0518361280b015260c051836128d7015260e051836127dc0152610100518361285a0152610120518361288001526101405183610a5401526101605183610a8101525182818161057d01528181610c8301528181610cf401528181610de7015281816112720152818161166701528181611d6601528181612274015281816124520152612cea0152518181816107e5015281816113340152818161163401526122a40152f35b9091506020813d60201162000439575b81620004156020938362000831565b8101031262000435576200042d6200033791620008e1565b91906200031a565b5f80fd5b3d915062000406565b6040513d5f823e3d90fd5b60ff60a81b1916600955604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f620002e9565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61ffff60a01b191661010160a01b176009555f620002b8565b60c060849162461bcd60e51b82820152602060c4820152602e60e48201527f496e697469616c697a61626c653a20636f6e747261637420697320616c7265616101048201526d191e481a5b9a5d1a585b1a5e995960921b61012482015201fd5b50303b158015620002995750600160ff8360a01c161462000299565b50600160ff8360a01c161062000291565b634e487b7160e01b5f52604160045260245ffd5b015190505f806200019d565b60045f90815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f19841685106200061b576001945083601f1981161062000602575b505050811b01600455620001b2565b01515f1960f88460031b161c191690555f8080620005f3565b81810151835560209485019460019093019290910190620005d6565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810191602085106200069f575b90601f859493920160051c01905b81811062000690575062000185565b5f815584935060010162000681565b909150819062000673565b634e487b7160e01b5f52602260045260245ffd5b91607f16916200016f565b90508401515f62000136565b60035f90815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905b601f198316841062000744576001935082601f198116106200072b575b5050811b016003556200014a565b8601515f1960f88460031b161c191690555f806200071d565b8681015182556020938401936001909201910162000700565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410620007ba575b601f0160051c01905b818110620007ae57506200011e565b5f81556001016200079f565b909150819062000796565b90607f16906200010a565b9093506020813d6020116200080c575b81620007ef6020938362000831565b8101031262000435575160ff811681036200043557925f620000b5565b3d9150620007e0565b608081019081106001600160401b038211176200058a57604052565b601f909101601f19168101906001600160401b038211908210176200058a57604052565b6001600160401b0381116200058a57601f01601f191660200190565b5f5b838110620008835750505f910152565b818101518382015260200162000873565b81601f8201121562000435578051620008ad8162000855565b92620008bd604051948562000831565b818452602082840101116200043557620008de916020808501910162000871565b90565b51906001600160a01b03821682036200043557565b6001600160a01b03919082811690811562000b6657604091825180958195636eb1769f60e11b83523060048401521691826024830152602096879160449788915afa90811562000b5c575f9162000b29575b5060016001605f1b03116200095f575b5050505050565b8251905f8087840163095ea7b360e01b9485825284602482015282898201528881526200098c8162000815565b519082875af13d1562000b21573d620009a58162000855565b90620009b48751928362000831565b81523d5f8983013e5b8162000ae3575b501562000ab157915f92918380938651908982019384526024820152811988820152878152620009f48162000815565b51925af13d1562000aa9573d62000a0b8162000855565b9062000a1a8451928362000831565b81523d5f8683013e5b8162000a6b575b501562000a3957808062000958565b5162461bcd60e51b81526004810192909252600c60248301526b5361666520417070726f766560a01b90820152606490fd5b8091505184811591821562000a86575b505090505f62000a2a565b838092935001031262000435578301518015158103620004355780845f62000a7b565b606062000a23565b835162461bcd60e51b815260048101879052600c60248201526b5361666520417070726f766560a01b81870152606490fd5b8091505187811591821562000afe575b505090505f620009c4565b838092935001031262000435578601518015158103620004355780875f62000af3565b6060620009bd565b90508581813d831162000b54575b62000b43818362000831565b810103126200043557515f62000948565b503d62000b37565b84513d5f823e3d90fd5b50505050565b8051602091908281101562000beb575090601f82511162000ba9578082519201519080831062000b9b57501790565b825f19910360031b1b161790565b60449062000bdd9260405193849263305a27a960e01b84528060048501528251928391826024870152868601910162000871565b601f01601f19168101030190fd5b6001600160401b0381116200058a576005928354926001938481811c9116801562000cfc575b83821014620006aa57601f811162000cc8575b5081601f841160011462000c6257509282939183925f9462000c56575b50501b915f199060031b1c191617905560ff90565b015192505f8062000c41565b919083601f198116875f52845f20945f905b8883831062000cad575050501062000c94575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808062000c87565b85870151885590960195948501948793509081019062000c74565b855f5284601f845f209201871c820191601f8601881c015b82811062000cf057505062000c24565b5f815501859062000ce0565b90607f169062000c11565b80516020908181101562000d345750601f82511162000ba9578082519201519080831062000b9b57501790565b906001600160401b0382116200058a57600654926001938481811c9116801562000e4a575b83821014620006aa57601f811162000e13575b5081601f841160011462000dab57509282939183925f9462000d9f575b50501b915f199060031b1c19161760065560ff90565b015192505f8062000d89565b919083601f19811660065f52845f20945f905b8883831062000df8575050501062000ddf575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f808062000dd1565b85870151885590960195948501948793509081019062000dbe565b60065f5284601f845f20920160051c820191601f860160051c015b82811062000e3e57505062000d6c565b5f815501859062000e2e565b90607f169062000d5956fe6080604090808252600480361015610021575b505050361561001f575f80fd5b005b5f3560e01c91826306fdde0314611d9257508163071bc3c914611cfd578163078dfbe714611b73578163095ea7b314611b25578163128fced11461021a57816318160ddd14611ac857816320e8c565146116ed578163213cae63146115bc57816323b872dd146113ed578163313ce567146113925781633644e5151461135857816338d52e0f146112ea5781633ba0b9a9146111f45781633f4ba83a146110e65781634e71e0c814610fda5781635c975abb14610f9957816370a0823114610f38578163769f8e5d14610d1857816376d5de8514610caa578163784367d614610c2d5781637ecebe0014610bcb5781638456cb5914610b1b57816384b0196e14610a195781638da5cb5b146109c757816395d89b41146108a3578163a40bee501461079e578163a9059cbb146106cb578163b8f82b261461062a578163c4f59f9b146105db578163cbe52ae31461052a578163d505accf146102e657508063da88ecb414610215578063dd62ed3e14610271578063e30c39781461021f578063ef5cfb8c1461021a578063f8b2f991146102155763fa5a4f06146101c6578080610012565b346102115760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157602090610208610203611f4a565b612259565b90519015158152f35b5f80fd5b612021565b611fc3565b5034610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760209073ffffffffffffffffffffffffffffffffffffffff600954169051908152f35b503461021157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020906102ab611f4a565b6102b3611f6d565b9073ffffffffffffffffffffffffffffffffffffffff8091165f5260018452825f2091165f528252805f20549051908152f35b9050346102115760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115761031f611f4a565b610327611f6d565b906044359260643560843560ff81168103610211578142116104cd5773ffffffffffffffffffffffffffffffffffffffff9081851692835f526007602052885f209081549160018301905589519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868c840152858a1660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff8211176104a1578a525190206104339161042b916103ea6127c5565b908b51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f29565b919091612fb1565b1603610444575061001f93506122ca565b60649060208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b6041877f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60648360208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b90503461021157817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157610562611f4a565b73ffffffffffffffffffffffffffffffffffffffff809116907f00000000000000000000000000000000000000000000000000000000000000001681036105ae57602083516024358152f35b60249251917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157805161062691610619826120f8565b5f82525191829182611ef9565b0390f35b90503461021157817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157610662611f4a565b9061066c82612259565b156106875760208361068060243585612cd3565b9051908152f35b73ffffffffffffffffffffffffffffffffffffffff60249351927faeabe7180000000000000000000000000000000000000000000000000000000084521690820152fd5b823461021157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020907f0100000000000000000000000000000000000000000000000000000000000000610726611f4a565b61078f6002549161073d60028460f81c14156121f4565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176002556024359033612543565b60025416176002555160018152f35b905034610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906020835180927f313ce56700000000000000000000000000000000000000000000000000000000825281855afa908115610899575f9161085a575b509160ff6060938251935f855260208501521690820152f35b90506020813d602011610891575b8161087560209383612114565b8101031261021157519160ff83168303610211579160ff610841565b3d9150610868565b83513d5f823e3d90fd5b905034610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157815191825f83546108e38161205e565b90818452602095600191876001821691825f14610982575050600114610926575b5050506106269291610917910385612114565b51928284938452830190611e9d565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061096a5750505082010181610917610626610904565b8054848a018601528895508794909301928101610951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061091791506106269050610904565b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760209073ffffffffffffffffffffffffffffffffffffffff600854169051908152f35b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157610aee90610626610a787f0000000000000000000000000000000000000000000000000000000000000000612ade565b91610afb610aa57f0000000000000000000000000000000000000000000000000000000000000000612c16565b91805192610ab2846120f8565b5f845281519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e0602089015260e0880190611e9d565b9186830390870152611e9d565b904660608501523060808501525f60a085015283820360c0850152611f90565b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891610b9173ffffffffffffffffffffffffffffffffffffffff60085416331461218f565b610b99612ebf565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00603a541617603a5551338152a1005b82346102115760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760209073ffffffffffffffffffffffffffffffffffffffff610c1b611f4a565b165f5260078252805f20549051908152f35b82346102115760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157602090610c68611f4a565b73ffffffffffffffffffffffffffffffffffffffff915191807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9050346102115760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157610d51611f4a565b90602435916044359073ffffffffffffffffffffffffffffffffffffffff808316809303610211576084359360643585151586036102115760025495610d9d60028860f81c14156121f4565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809816176002557f0000000000000000000000000000000000000000000000000000000000000000908482168703610f09578815610ee15785610e32928a925f14610ed757610e2d83306128fd565b612dbc565b808710610ea257602087897f010000000000000000000000000000000000000000000000000000000000000089898989855191878352878984015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c863392a4600254161760025551908152f35b60449250868851927fbfee4ca00000000000000000000000000000000000000000000000000000000084528301526024820152fd5b610e2d83336128fd565b838a517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602484888c51917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b82346102115760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760209073ffffffffffffffffffffffffffffffffffffffff610f88611f4a565b165f525f8252805f20549051908152f35b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760209060ff603a541690519015158152f35b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576009549073ffffffffffffffffffffffffffffffffffffffff9283831691823303611089575050806008549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff00000000000000000000000000000000000000009283161760085516600955005b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b905034610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115761113973ffffffffffffffffffffffffffffffffffffffff60085416331461218f565b603a549060ff821615611197577f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516603a5551338152a1005b60649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157670de0b6b3a76400008151927f07a2d13a00000000000000000000000000000000000000000000000000000000845283015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156112e1575f916112ac575b6020925051908152f35b90506020823d6020116112d9575b816112c760209383612114565b810103126102115760209151906112a2565b3d91506112ba565b513d5f823e3d90fd5b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020906106806127c5565b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9050346102115760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157611426611f4a565b61142e611f6d565b604435916002549361144660028660f81c14156121f4565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8096161760025573ffffffffffffffffffffffffffffffffffffffff82165f526001602052855f20335f52602052855f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611512575b6020877f01000000000000000000000000000000000000000000000000000000000000008861078f898989612543565b84821061155f575092602095949261078f92611552837f0100000000000000000000000000000000000000000000000000000000000000970333836122ca565b92509294958194506114e2565b60649060208851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211578051906060820182811067ffffffffffffffff8211176116c1578152600282528036602084013761161b82612155565b73ffffffffffffffffffffffffffffffffffffffff90817f00000000000000000000000000000000000000000000000000000000000000001690528251600110156116955761062693507f000000000000000000000000000000000000000000000000000000000000000016818301525191829182611ef9565b6032847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6041847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b905060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157611721611f4a565b9161172a611f6d565b6044359060643593600292835496611747858960f81c14156121f4565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80991617855561179784612259565b15611a83578115611a5b5773ffffffffffffffffffffffffffffffffffffffff908185169485155f146119ef5783340361199257836117d59161243b565b9780891061195d575016918215611900576117ee612ebf565b8787116102115784549088881689831601908982116118d45750918893917fff0000000000000000000000000000000000000000000000000000000000000060209a7f01000000000000000000000000000000000000000000000000000000000000009795169116178655815f525f8952865f2061186d898254612509565b9055815f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b8a518c8152a3865190815287898201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d59873392a482541617905551908152f35b6011907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60649060208751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b846044918a8a51927fbc71f2ba0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b60648560208a51917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b87517f23b872dd0000000000000000000000000000000000000000000000000000000060208201523360248201523060448201528460648201526064815260a0810181811067ffffffffffffffff8211176104a15791611a5686926117d5948c5289613148565b61243b565b8286517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b85517faeabe71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851681850152602490fd5b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610211576020907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254169051908152f35b823461021157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157602090611b6c611b62611f4a565b60243590336122ca565b5160018152f35b82346102115760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157611bab611f4a565b91602435918215158303610211576044359283151584036102115773ffffffffffffffffffffffffffffffffffffffff948591611bed8360085416331461218f565b15611cca571692831590811591611cc2575b5015611c65575050806008549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff000000000000000000000000000000000000000080921617600855600954166009555f80f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905085611bff565b9350505050167fffffffffffffffffffffffff000000000000000000000000000000000000000060095416176009555f80f35b8234610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157805161062691611d3b826120af565b6001825260203681840137611d4f82612155565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690525191829182611ef9565b8334610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115760035490825f611dd08461205e565b808352602094600190866001821691825f14611e5d575050600114611e02575b50506106269291610917910385612114565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611e455750505082010181610917611df0565b8054848a018601528895508794909301928101611e2f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506109179050611df0565b91908251928382525f5b848110611ee55750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6020809697860101520116010190565b602081830181015184830182015201611ea7565b60209060206040818301928281528551809452019301915f5b828110611f20575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611f12565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361021157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361021157565b9081518082526020808093019301915f5b828110611faf575050505090565b835185529381019392810192600101611fa1565b346102115760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261021157611ffa611f4a565b5061062660405161200a816120f8565b5f8152604051918291602083526020830190611f90565b34610211575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102115761062660405161200a816120f8565b90600182811c921680156120a5575b602083101461207857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161206d565b6040810190811067ffffffffffffffff8211176120cb57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6020810190811067ffffffffffffffff8211176120cb57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176120cb57604052565b8051156121625760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b1561219657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121fb57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff809116817f00000000000000000000000000000000000000000000000000000000000000001681149182156122a257505090565b7f00000000000000000000000000000000000000000000000000000000000000001614919050565b73ffffffffffffffffffffffffffffffffffffffff8091169182156123b857169182156123345760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169116810361247f575090565b60209060445f9360405194859384927f6e553f6500000000000000000000000000000000000000000000000000000000845260048401523060248401525af19081156124fe575f916124cf575090565b90506020813d6020116124f6575b816124ea60209383612114565b81010312610211575190565b3d91506124dd565b6040513d5f823e3d90fd5b9190820180921161251657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff80911691821561274157169182156126bd5782821461265f57612579612ebf565b815f525f60205260405f20548181106125db57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f206125d0828254612509565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128d4575b1561282d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176120cb5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612804565b73ffffffffffffffffffffffffffffffffffffffff168015612a5a57612921612ebf565b805f525f60205260405f20548281106129d6578290825f525f6020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182811161021157600254928082168185160391818311612516575f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600255604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b60ff8114612b345760ff811690601f8211612b0a5760405191612b00836120af565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b50604051600554815f612b468361205e565b80835292602090600190818116908115612bd35750600114612b74575b5050612b7192500382612114565b90565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b828410612bbb5750612b719450505081016020015f80612b63565b85548785018301529485019486945092810192612ba0565b905060209350612b719592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612b63565b60ff8114612c385760ff811690601f8211612b0a5760405191612b00836120af565b50604051600654815f612c4a8361205e565b80835292602090600190818116908115612bd35750600114612c74575050612b7192500382612114565b91509260065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f925b828410612cbb5750612b719450505081016020015f80612b63565b85548785018301529485019486945092810192612ca0565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691168103612d17575090565b906020906024604051809481937fef8b30f700000000000000000000000000000000000000000000000000000000835260048301525afa9081156124fe575f916124cf575090565b3d15612db7573d9067ffffffffffffffff82116120cb5760405191612dac60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184612114565b82523d5f602084013e565b606090565b8215612eba5773ffffffffffffffffffffffffffffffffffffffff9081169081612e585750505f80809381935af1612df2612d5f565b5015612dfa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b604093919351927fa9059cbb000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260448152608081019181831067ffffffffffffffff8411176120cb57612eb892604052613148565b565b505050565b60ff603a5416612ecb57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fa6576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa156124fe575f5173ffffffffffffffffffffffffffffffffffffffff811615612f9e57905f90565b505f90600190565b505050505f90600390565b600581101561311b5780612fc25750565b600181036130285760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b6002810361308e5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461309757565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6040516131b29173ffffffffffffffffffffffffffffffffffffffff1661316e826120af565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16131ac612d5f565b9161326f565b805182811591821561324f575b50509050156131cb5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b83809293500103126102115781015180151581036102115780825f6131bf565b919290156132ea5750815115613283575090565b3b1561328c5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156132fd5750805190602001fd5b61333b906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190611e9d565b0390fdfea2646970667358221220ba20305cfa06b723a65fe71464fd67caf27a568dee64dd2582fd401d6542a6c764736f6c63430008180033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000019ebd191f7a24ece672ba13a302212b5ef7f35cb000000000000000000000000000000000000000000000000000000000000000f5359205969656c64466920795553440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000753592d7955534400000000000000000000000000000000000000000000000000